On Thu, Dec 16, 2021 at 05:54:45PM +0530, Ajit Kumar Pandey wrote: > Thanks for suggestion. We tried using SND_SOC_DAPM_PIN_SWITCH() for the > speaker widget and it invoke dapm_event callback based on switch i.e > max98357a_sdmode_event() but codec driver isn't enabling/disabling gpios in > such event callback instead they are doing that in dai_ops trigger callback. > In our platform single I2S controller instance (cpu-dai) is connected to two > different endpoints with a single PCM device, hence we want to switch or > enable/disable output based on Machine driver controls only. DAPM should cope perfectly fine with this setup... > Initially we thought to configure gpio within sdmode_event callback but > there was some pop noise issue reported in one platform with that change > hence reverted. Check https://patchwork.kernel.org/project/alsa-devel/patch/20200721114232.2812254-1-tzungbi@xxxxxxxxxx/#23502085 > So we thought of exposing a mixer control to enable/disable amp from UCM > in our platform without breaking existing functionality. Please let us > know any other alternative way if possible. Whatever is going on this should be managed from the driver rather than having a direct control, especially given the issues I mentioned with there being zero coordination between this and the management that the driver already does. You could have DAPM controls set a variable and coordinate with whatever you're doing in the pcm_ops, I'm not clear what the use case is for having the manual control TBH.
Attachment:
signature.asc
Description: PGP signature