On Fri, 2011-10-14 at 20:20 +0100, Mark Brown wrote:
On Fri, Oct 14, 2011 at 04:31:38PM +0530, Ashish Chavan wrote:
- /* ADCs */
- SND_SOC_DAPM_ADC("ADC Left", "Capture", DA7210_STARTUP3, 5, 1),
- SND_SOC_DAPM_ADC("ADC Right", "Capture", DA7210_STARTUP3, 6, 1),
- /* Output Side */
- /* DACs */
- SND_SOC_DAPM_DAC("DAC Left", "Playback", DA7210_STARTUP2, 5, 1),
- SND_SOC_DAPM_DAC("DAC Right", "Playback", DA7210_STARTUP2, 6, 1),
These are also being enabled in the probe() function using completely different registers - there the registers used are _ADC and _DAC. What's going on there? It's good to see the stuff in the startup() function gone but almost all of the probe() just shouldn't be there in a properly written driver and much of it looks like stuff that DAPM should be taking care of.
There are two type of registers for all IOs (HP, MIC, AUX) as well as DAC and ADC. One type of registers control individual enable and disable of IO, while other set of register controls the standby mode of that particular IO. e.g. For ADC,
- Enable/disable of ADC left and right channel is controlled by bit 3 and 7 of DA7210_ADC register.
- Standby mode of ADC left and right channel is controlled by bit 5 and 6 of DA7210_STARTUP3 register.
As per hardware designer's recommendation, standby mode is preferred for minimum power consumption. So, current DAPM patch only takes care of STANDBY bits.