From e877670daa820ff7e96931a87ce1049d9aa0c55a 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 fc55cfe88076..61573266a003 100644 --- a/sound/soc/codecs/rk817_codec.c +++ b/sound/soc/codecs/rk817_codec.c @@ -944,6 +944,19 @@ static int rk817_digital_mute(struct snd_soc_dai *dai, int mute) 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; @@ -951,11 +964,17 @@ static int rk817_digital_mute(struct snd_soc_dai *dai, int mute) 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;