From 072de836f53be56a70cecf70b43ae43b7ce17376 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Mon, 11 Dec 2023 10:08:36 +0000
Subject: [PATCH] mk-rootfs.sh

---
 kernel/sound/soc/codecs/rk817_codec.c |   32 +++++++++++++++++++++-----------
 1 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/kernel/sound/soc/codecs/rk817_codec.c b/kernel/sound/soc/codecs/rk817_codec.c
index 66d1ca2..ef06558 100644
--- a/kernel/sound/soc/codecs/rk817_codec.c
+++ b/kernel/sound/soc/codecs/rk817_codec.c
@@ -286,10 +286,10 @@
 	{RK817_CODEC_AREF_RTCFG1, 0x40},
 	{RK817_CODEC_DDAC_POPD_DACST, 0x02},
 	/* APLL */
-	{RK817_CODEC_APLL_CFG0, 0x04},
+	/* {RK817_CODEC_APLL_CFG0, 0x04}, */
 	{RK817_CODEC_APLL_CFG1, 0x58},
 	{RK817_CODEC_APLL_CFG2, 0x2d},
-	{RK817_CODEC_APLL_CFG4, 0xa5},
+	/* {RK817_CODEC_APLL_CFG4, 0xa5}, */
 	{RK817_CODEC_APLL_CFG5, 0x00},
 
 	{RK817_CODEC_DI2S_RXCMD_TSD, 0x00},
@@ -324,10 +324,10 @@
 	{RK817_CODEC_AREF_RTCFG1, 0x40},
 	{RK817_CODEC_DADC_SR_ACL0, 0x02},
 	/* {RK817_CODEC_DTOP_DIGEN_CLKE, 0xff}, */
-	{RK817_CODEC_APLL_CFG0, 0x04},
+	/* {RK817_CODEC_APLL_CFG0, 0x04}, */
 	{RK817_CODEC_APLL_CFG1, 0x58},
 	{RK817_CODEC_APLL_CFG2, 0x2d},
-	{RK817_CODEC_APLL_CFG4, 0xa5},
+	/* {RK817_CODEC_APLL_CFG4, 0xa5}, */
 	{RK817_CODEC_APLL_CFG5, 0x00},
 
 	/*{RK817_CODEC_DI2S_RXCMD_TSD, 0x00},*/
@@ -378,12 +378,16 @@
 						playback_power_up_list[i].value);
 		}
 
-		/* Re-configure APLL CFG0/4 if (chip_ver <= 0x4) */
+		/* configure APLL CFG0/4 */
 		if (rk817->chip_ver <= 0x4) {
 			DBG("%s (%d): SMIC TudorAG and previous versions\n",
 			    __func__, __LINE__);
 			snd_soc_component_write(component, RK817_CODEC_APLL_CFG0, 0x0c);
 			snd_soc_component_write(component, RK817_CODEC_APLL_CFG4, 0x95);
+		} else {
+			DBG("%s: SMIC TudorAG version later\n", __func__);
+			snd_soc_component_write(component, RK817_CODEC_APLL_CFG0, 0x04);
+			snd_soc_component_write(component, RK817_CODEC_APLL_CFG4, 0xa5);
 		}
 
 		snd_soc_component_update_bits(component, RK817_CODEC_DTOP_DIGEN_CLKE,
@@ -405,12 +409,16 @@
 						capture_power_up_list[i].value);
 		}
 
-		/* Re-configure APLL CFG0/4 if (chip_ver <= 0x4) */
+		/* configure APLL CFG0/4 */
 		if (rk817->chip_ver <= 0x4) {
 			DBG("%s (%d): SMIC TudorAG and previous versions\n",
 			    __func__, __LINE__);
 			snd_soc_component_write(component, RK817_CODEC_APLL_CFG0, 0x0c);
 			snd_soc_component_write(component, RK817_CODEC_APLL_CFG4, 0x95);
+		} else {
+			DBG("%s: SMIC TudorAG version later\n", __func__);
+			snd_soc_component_write(component, RK817_CODEC_APLL_CFG0, 0x04);
+			snd_soc_component_write(component, RK817_CODEC_APLL_CFG4, 0xa5);
 		}
 
 		snd_soc_component_update_bits(component, RK817_CODEC_DTOP_DIGEN_CLKE,
@@ -1026,7 +1034,7 @@
 	return 0;
 }
 
-static int rk817_digital_mute(struct snd_soc_dai *dai, int mute)
+static int rk817_digital_mute(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);
@@ -1140,8 +1148,9 @@
 	.hw_params	= rk817_hw_params,
 	.set_fmt	= rk817_set_dai_fmt,
 	.set_sysclk	= rk817_set_dai_sysclk,
-	.digital_mute	= rk817_digital_mute,
+	.mute_stream	= rk817_digital_mute,
 	.shutdown	= rk817_codec_shutdown,
+	.no_capture_mute = 1,
 };
 
 static struct snd_soc_dai_driver rk817_dai[] = {
@@ -1224,14 +1233,14 @@
 	rk817->playback_path = OFF;
 	rk817->capture_path = MIC_OFF;
 
-	chip_name = snd_soc_component_read32(component, RK817_PMIC_CHIP_NAME);
-	chip_ver = snd_soc_component_read32(component, RK817_PMIC_CHIP_VER);
+	chip_name = snd_soc_component_read(component, RK817_PMIC_CHIP_NAME);
+	chip_ver = snd_soc_component_read(component, RK817_PMIC_CHIP_VER);
 	rk817->chip_ver = (chip_ver & 0x0f);
 	dev_info(component->dev, "%s: chip_name:0x%x, chip_ver:0x%x\n", __func__, chip_name, chip_ver);
 
+	/* always enable mclk, and will disable mclk in rk817_remove */
 	clk_prepare_enable(rk817->mclk);
 	rk817_reset(component);
-	clk_disable_unprepare(rk817->mclk);
 	mutex_init(&rk817->clk_lock);
 	rk817->clk_capture = 0;
 	rk817->clk_playback = 0;
@@ -1256,6 +1265,7 @@
 	rk817_codec_power_down(component, RK817_CODEC_ALL);
 	snd_soc_component_exit_regmap(component);
 	mutex_destroy(&rk817->clk_lock);
+	clk_disable_unprepare(rk817->mclk);
 	mdelay(10);
 
 }

--
Gitblit v1.6.2