20 Nov
2015
20 Nov
'15
6:02 p.m.
On Sat, Nov 21, 2015 at 12:42:41AM +0800, Chen-Yu Tsai wrote:
static void sun4i_codec_stop_playback(struct sun4i_codec *scodec) {
/*
* FIXME: according to the BSP, we might need to drive a PA
* GPIO low here on some boards
*/
/* Disable DAC DRQ */ regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, BIT(SUN4I_CODEC_DAC_FIFOC_DAC_DRQ_EN), 0);
if (scodec->gpio_pa)
gpiod_set_value_cansleep(scodec->gpio_pa, 0);
You should rather plug that into DAPM, using a speaker widget, and a custom event function that will enable or disable the amplifier only when this audio path is going to be used.
Isn't an "amplifier" widget better suited?
This is exactly what SND_SOC_DAPM_SPK is used for: http://lxr.free-electrons.com/source/Documentation/sound/alsa/soc/dapm.txt#L... ;)
Maxime
--
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com