On Thursday 14 May 2009 12:05:50 ext Jarkko Nikula wrote: > Did you implement this fake or actually real PGA between "HeadsetL > Mixer" and "HSOL"? > > I seems that there is an error in audio path that output pin control is > tied to mixer and there is no widget in audio path defining the output > amplifier. See > > SND_SOC_DAPM_MIXER_E("HeadsetL Mixer", SND_SOC_NOPM, 0, 0, > &twl4030_dapm_hsol_controls[0], > ARRAY_SIZE(twl4030_dapm_hsol_controls), headsetl_event, > SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD), > ... > {"HSOL", NULL, "HeadsetL Mixer"}, > {"HSOR", NULL, "HeadsetR Mixer"}, I have this: SND_SOC_DAPM_MIXER_E("HeadsetL Mixer", SND_SOC_NOPM, 0, 0, &twl4030_dapm_hsol_controls[0], ARRAY_SIZE(twl4030_dapm_hsol_controls), headsetl_event, SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD), ... SND_SOC_DAPM_PGA_E("HeadsetL fake PGA", SND_SOC_NOPM, 0, 0, NULL, 0, headsetlfake_event, SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD), ... {"HeadsetL Mixer", "Voice", "VDL_APGA"}, {"HeadsetL Mixer", "AudioL1", "ARXL1_APGA"}, {"HeadsetL Mixer", "AudioL2", "ARXL2_APGA"}, {"HeadsetL fake PGA", NULL, "HeadsetL Mixer"}, ... {"HSOL", NULL, "HeadsetL fake PGA"}, I have moved the code form the headsetl_event to headsetlfake_event, so the ramp is configured in the fake PGA event handler. > > So startup/shutdown order should be correct if you define a new PGA > between the HSOx and Headsetx mixer and let that to manage output pin > power. The order between the PGAs are not correct for the startup. In playback case we have two PGA with this new 'fake PGA': ARXL2_APGA and the "HeadsetL fake PGA" DAPM is handling first the "HeadsetL fake PGA" than the ARXL2_APGA both for startup and for standby. For standby it is OK, but for startup the ARXL2_APGA should be handled prior to the "HeadsetL fake PGA" => in reverse order. -- Péter _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel