[alsa-devel] Binding multiple registers to an enum
Hi all,
Just working on the TLV320AIC3204 driver again... I've got an issue where we get noise on recording inputs if I don't drive unused inputs to the common mode. Now there's a register which can do exactly this.
Each of the inputs can be routed through a difference series resistance... this selection is done by enum controls, with the options being: not-connected, 10k, 20k or 40k. My plan, is that when 'not-selected' is chosen, I set the appropriate bit in the floating input register so it gets connected to common-mode... and when something else is chosen, that bit gets cleared.
I've tried lying to DAPM and telling it these bits control PGAs on the inputs themselves... but it gets the wrong idea about which ones need to be turned on. Perhaps I should investigate that ... but the idea of using PGA controls doesn't seem quite right.
I've looked at SOC_ENUM_EXT, which would do what I want (I already use this to keep ADC OSR and DAC OSR settings in sync) however, these controls have implications for signal routing, and therefore DAPM needs to know about them, so really it'd be a SOC_DAPM_ENUM_EXT control I'd be after. I can't see such a thing however... how does one go about doing this?
Regards,
On Mon, Sep 13, 2010 at 09:31:51AM +1000, Stuart Longland wrote:
I've tried lying to DAPM and telling it these bits control PGAs on the inputs themselves... but it gets the wrong idea about which ones need to be turned on. Perhaps I should investigate that ... but the idea of using PGA controls doesn't seem quite right.
It would be helpful if you could be a bit more specific about what the registers look like and what the problems you are encountering are. Since what you're saying is so generic and non-specific it's hard to really say anything concrete. Possibly what you want to do is have an event on the widgets for the mixers which does the appropriate setup?
I've looked at SOC_ENUM_EXT, which would do what I want (I already use this to keep ADC OSR and DAC OSR settings in sync) however, these controls have implications for signal routing, and therefore DAPM needs to know about them, so really it'd be a SOC_DAPM_ENUM_EXT control I'd be after. I can't see such a thing however... how does one go about doing this?
The easiest thing is to look at the git logs and see how similar things were added then do the equivalent thing. That'll show all the areas that need updating.
participants (2)
-
Mark Brown
-
Stuart Longland