From 81fff31dd3467f5c30b78e970a7889593d51763c Mon Sep 17 00:00:00 2001 From: XiaoTan Luo Date: Mon, 16 Aug 2021 14:18:16 +0800 Subject: [PATCH] ASoC: rockchip: rk817-codec: enable dac when play In this case playback_path set to ON, and then play music. when playback close, stream mute power off the dac, but the playback_path do not be set to OFF, so we must power on the dac again. Signed-off-by: XiaoTan Luo Change-Id: I7baa8518ccbb567cb146c5739f9a125da320e674 --- sound/soc/codecs/rk817_codec.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/sound/soc/codecs/rk817_codec.c b/sound/soc/codecs/rk817_codec.c index 2ff76666e3a3..083113278e25 100644 --- a/sound/soc/codecs/rk817_codec.c +++ b/sound/soc/codecs/rk817_codec.c @@ -964,6 +964,19 @@ static int rk817_digital_mute(struct snd_soc_dai *dai, int mute, int stream) switch (rk817->playback_path) { case SPK_PATH: case RING_SPK: + if (rk817->out_l2spk_r2hp) { + snd_soc_component_write(component, RK817_CODEC_ADAC_CFG1, + PWD_DACBIAS_ON | PWD_DACD_ON | + PWD_DACL_ON | PWD_DACR_ON); + } else if (!rk817->use_ext_amplifier) { + snd_soc_component_write(component, RK817_CODEC_ADAC_CFG1, + PWD_DACBIAS_ON | PWD_DACD_ON | + PWD_DACL_DOWN | PWD_DACR_DOWN); + } else { + snd_soc_component_write(component, RK817_CODEC_ADAC_CFG1, + PWD_DACBIAS_ON | PWD_DACD_DOWN | + PWD_DACL_ON | PWD_DACR_ON); + } rk817_codec_ctl_gpio(rk817, CODEC_SET_SPK, 1); rk817_codec_ctl_gpio(rk817, CODEC_SET_HP, 0); break; @@ -971,11 +984,17 @@ static int rk817_digital_mute(struct snd_soc_dai *dai, int mute, int stream) case HP_NO_MIC: case RING_HP: case RING_HP_NO_MIC: + snd_soc_component_write(component, RK817_CODEC_ADAC_CFG1, + PWD_DACBIAS_ON | PWD_DACD_DOWN | + PWD_DACL_ON | PWD_DACR_ON); rk817_codec_ctl_gpio(rk817, CODEC_SET_SPK, 0); rk817_codec_ctl_gpio(rk817, CODEC_SET_HP, 1); break; case SPK_HP: case RING_SPK_HP: + snd_soc_component_write(component, RK817_CODEC_ADAC_CFG1, + PWD_DACBIAS_ON | PWD_DACD_ON | + PWD_DACL_ON | PWD_DACR_ON); rk817_codec_ctl_gpio(rk817, CODEC_SET_SPK, 1); rk817_codec_ctl_gpio(rk817, CODEC_SET_HP, 1); break;