On 12/12/2017 06:01 AM, Mark Brown wrote: > On Mon, Dec 11, 2017 at 01:01:56PM -0600, Andrew F. Davis wrote: > >> The TAS5722 supports modifying volume in 0.25dB steps (as opposed to 0.5dB >> steps on the TAS5720). Introduce a custom mixer control that allows taking >> advantage of this finer output volume granularity. > > Don't do this, it's just making things more complicated. Instead do > what other drivers do and register different sets of controls depending > on which part you're working with. The normal thing is to have a big > table for all the shared controls that are the same on all variants then > register additional tables during probe with those that vary for the > individul devices. > That is what we are doing here, the reason for the custom mixer control is that the controlled bits span two registers in a odd way that is not supported by the standard handlers. >> static const struct snd_kcontrol_new tas5720_snd_controls[] = { >> SOC_SINGLE_TLV("Speaker Driver Playback Volume", >> - TAS5720_VOLUME_CTRL_REG, 0, 0xff, 0, dac_tlv), >> + TAS5720_VOLUME_CTRL_REG, 0, 0xff, 0, tas5720_dac_tlv), >> + SOC_SINGLE_TLV("Speaker Driver Analog Gain", TAS5720_ANALOG_CTRL_REG, >> + TAS5720_ANALOG_GAIN_SHIFT, 3, 0, dac_analog_tlv), > > As ever all volume controls should end in Volume (like the immediately > adjacent control does). > This was done so this table exactly matches the existing table. If you would like me to change this then I can, and can do it for the other table as well, up to you. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html