On Tuesday 23 March 2010 09:05:39 Ujfalusi Peter (Nokia-D/Tampere) wrote: > In any ways the output gains has to be handled with custom code no matter > if the core has support for binding the volume controls to DAPM widget or > not. The root of the problem is how the amplifiers are working: > bit 4-5: Gain > 0x0 - power down (mute) > 0x1 - 6dB > 0x2 - 0dB > 0x3 - -6dB > > I don't have separate power bit. > I can not just invert the range. > I need to do the following: > If 0 is coming, than I write that (mute, power down) > If 2, than write two > For 1 I write 3 > For 3 I write 1 > This gives nice gain range for the user space. > 0x0 - power down (mute) > 0x1 - -6dB > 0x2 - 0dB > 0x3 - 6dB I just wonder, would something like this work: Instead of the custom SOC_DOUBLE_R_TLV_TWL4030, which handles the output gains: /* * Gain controls tied to outputs * -6 dB to 6 dB in 6 dB steps (mute instead of -12) */ static const unsigned int output_tlv[] = { TLV_DB_RANGE_HEAD(4), 0, 0, TLV_DB_SCALE_ITEM(-1200, 0, 1), 3, 3, TLV_DB_SCALE_ITEM(-600, 0, 0), 2, 2, TLV_DB_SCALE_ITEM(0, 0, 0), 1, 1, TLV_DB_SCALE_ITEM(600, 0, 0), }; SOC_DOUBLE_R_TLV("PreDriv Playback Volume", TWL4030_REG_PREDL_CTL, TWL4030_REG_PREDR_CTL, 4, 3, 0, output_tvl), I'm not sure about the tlv declaration, but is there a way to actually map the gain/power control in the TWL in a standard way? -- Péter _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel