From 2f7c68cb55ecb7331f2381deb497c27155f32faf Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Wed, 03 Jan 2024 09:43:39 +0000 Subject: [PATCH] update kernel to 5.10.198 --- kernel/sound/soc/codecs/rk817_codec.c | 31 ++++++++++++++++++++++++++++--- 1 files changed, 28 insertions(+), 3 deletions(-) diff --git a/kernel/sound/soc/codecs/rk817_codec.c b/kernel/sound/soc/codecs/rk817_codec.c index ef06558..8c767ce 100644 --- a/kernel/sound/soc/codecs/rk817_codec.c +++ b/kernel/sound/soc/codecs/rk817_codec.c @@ -422,7 +422,7 @@ } snd_soc_component_update_bits(component, RK817_CODEC_DTOP_DIGEN_CLKE, - ADC_DIG_CLK_MASK, DAC_DIG_CLK_DIS); + ADC_DIG_CLK_MASK, ADC_DIG_CLK_DIS); usleep_range(2000, 2500); snd_soc_component_update_bits(component, RK817_CODEC_DTOP_DIGEN_CLKE, ADC_DIG_CLK_MASK, ADC_DIG_CLK_EN); @@ -1034,7 +1034,7 @@ return 0; } -static int rk817_digital_mute(struct snd_soc_dai *dai, int mute, int stream) +static int rk817_digital_mute_dac(struct snd_soc_dai *dai, int mute, int stream) { struct snd_soc_component *component = dai->component; struct rk817_codec_priv *rk817 = snd_soc_component_get_drvdata(component); @@ -1056,7 +1056,11 @@ DAC_DIG_CLK_EN, DAC_DIG_CLK_DIS); snd_soc_component_update_bits(component, RK817_CODEC_DTOP_DIGEN_CLKE, DAC_DIG_CLK_EN, DAC_DIG_CLK_EN); + snd_soc_component_update_bits(component, RK817_CODEC_DTOP_DIGEN_CLKE, + I2SRX_EN_MASK, I2SRX_DIS); } else { + snd_soc_component_update_bits(component, RK817_CODEC_DTOP_DIGEN_CLKE, + I2SRX_EN_MASK, I2SRX_EN); snd_soc_component_update_bits(component, RK817_CODEC_DDAC_MUTE_MIXCTL, DACMT_ENABLE, DACMT_DISABLE); @@ -1106,6 +1110,28 @@ return 0; } +static int rk817_digital_mute_adc(struct snd_soc_dai *dai, int mute, int stream) +{ + struct snd_soc_component *component = dai->component; + + if (mute) + snd_soc_component_update_bits(component, RK817_CODEC_DTOP_DIGEN_CLKE, + I2STX_EN_MASK, I2STX_DIS); + else + snd_soc_component_update_bits(component, RK817_CODEC_DTOP_DIGEN_CLKE, + I2STX_EN_MASK, I2STX_EN); + + return 0; +} + +static int rk817_digital_mute(struct snd_soc_dai *dai, int mute, int stream) +{ + if (stream == SNDRV_PCM_STREAM_PLAYBACK) + return rk817_digital_mute_dac(dai, mute, stream); + else + return rk817_digital_mute_adc(dai, mute, stream); +} + #define RK817_PLAYBACK_RATES (SNDRV_PCM_RATE_8000 |\ SNDRV_PCM_RATE_16000 | \ SNDRV_PCM_RATE_32000 | \ @@ -1150,7 +1176,6 @@ .set_sysclk = rk817_set_dai_sysclk, .mute_stream = rk817_digital_mute, .shutdown = rk817_codec_shutdown, - .no_capture_mute = 1, }; static struct snd_soc_dai_driver rk817_dai[] = { -- Gitblit v1.6.2