From 1f93a7dfd1f8d5ff7a5c53246c7534fe2332d6f4 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Mon, 11 Dec 2023 02:46:07 +0000
Subject: [PATCH] add audio

---
 kernel/sound/soc/codecs/es8396.c |   96 ++++++++++++++++++++++++-----------------------
 1 files changed, 49 insertions(+), 47 deletions(-)

diff --git a/kernel/sound/soc/codecs/es8396.c b/kernel/sound/soc/codecs/es8396.c
index 6f5cb6e..4cd7916 100644
--- a/kernel/sound/soc/codecs/es8396.c
+++ b/kernel/sound/soc/codecs/es8396.c
@@ -442,7 +442,7 @@
 		/* power up class d */
 		pr_debug("SND_SOC_DAPM_PRE_PMU = 0x%x\n", event);
 		/* read the clock configure */
-		regv1 = snd_soc_component_read32(component, ES8396_CLK_CTRL_REG08);
+		regv1 = snd_soc_component_read(component, ES8396_CLK_CTRL_REG08);
 		regv1 &= 0xcf;
 		/* enable class d clock */
 		snd_soc_component_write(component, ES8396_CLK_CTRL_REG08, regv1);
@@ -452,7 +452,7 @@
 		snd_soc_component_update_bits(component, ES8396_DAC_REF_PWR_CTRL_REG6E,
 					      0xff, 0x34);
 
-		regv2 = snd_soc_component_read32(component, ES8396_SPK_CTRL_1_REG3C);
+		regv2 = snd_soc_component_read(component, ES8396_SPK_CTRL_1_REG3C);
 		/* set speaker ldo level */
 		if (es8396_valid_spkldo(es8396->spk_ldo_lvl) == false) {
 			pr_err("speaker LDO Level error.\n");
@@ -473,7 +473,7 @@
 
 		snd_soc_component_write(component, ES8396_SPK_CTRL_2_REG3D, 0x10);
 
-		regv1 = snd_soc_component_read32(component, ES8396_SPK_MIXER_REG26);
+		regv1 = snd_soc_component_read(component, ES8396_SPK_MIXER_REG26);
 		/* clear pdnspkl_biasgen, clear pdnspkr_biasgen */
 		regv1 &= 0xee;
 		snd_soc_component_write(component, ES8396_SPK_MIXER_REG26, regv1);
@@ -484,19 +484,19 @@
 		snd_soc_component_write(component, ES8396_DAC_LDAC_VOL_REG6A, 0x00);
 		snd_soc_component_write(component, ES8396_DAC_RDAC_VOL_REG6B, 0x00);
 
-		regv1 = snd_soc_component_read32(component, ES8396_HP_MIXER_BOOST_REG2B);
+		regv1 = snd_soc_component_read(component, ES8396_HP_MIXER_BOOST_REG2B);
 		regv1 &= 0xcc;
 		snd_soc_component_write(component, ES8396_HP_MIXER_BOOST_REG2B, regv1);
 
-		regv1 = snd_soc_component_read32(component, ES8396_CPHP_CTRL_3_REG44);
+		regv1 = snd_soc_component_read(component, ES8396_CPHP_CTRL_3_REG44);
 		regv1 &= 0xcc;
 		snd_soc_component_write(component, ES8396_CPHP_CTRL_3_REG44, regv1);
 
-		regv1 = snd_soc_component_read32(component, ES8396_CPHP_CTRL_1_REG42);
+		regv1 = snd_soc_component_read(component, ES8396_CPHP_CTRL_1_REG42);
 		regv1 &= 0xdf;
 		snd_soc_component_write(component, ES8396_CPHP_CTRL_1_REG42, regv1);
 
-		regv1 = snd_soc_component_read32(component, ES8396_CPHP_CTRL_2_REG43);
+		regv1 = snd_soc_component_read(component, ES8396_CPHP_CTRL_2_REG43);
 		regv1 &= 0x7f;
 		snd_soc_component_write(component, ES8396_CPHP_CTRL_2_REG43, regv1);
 		es8396->output_device_selected = 0;
@@ -509,22 +509,22 @@
 	case SND_SOC_DAPM_PRE_PMD:	/* prepare power down */
 		pr_debug("SND_SOC_DAPM_PRE_PMD = 0x%x\n", event);
 		/* read the clock configure */
-		regv1 = snd_soc_component_read32(component, ES8396_CLK_CTRL_REG08);
+		regv1 = snd_soc_component_read(component, ES8396_CLK_CTRL_REG08);
 		regv1 |= 0x10;
 		/* stop class d clock */
 		snd_soc_component_write(component, ES8396_CLK_CTRL_REG08, regv1);
 		/* dac csm startup, dac digital still on */
 		/* snd_soc_component_update_bits(w->component, ES8396_DAC_CSM_REG66,
 				       0x01, 0x01); */
-		regv1 = snd_soc_component_read32(component, ES8396_SPK_EN_VOL_REG3B);
+		regv1 = snd_soc_component_read(component, ES8396_SPK_EN_VOL_REG3B);
 		regv1 &= 0x77;
 		/* clear enspk_l,enspk_r */
 		snd_soc_component_write(component, ES8396_SPK_EN_VOL_REG3B, regv1);
 
-		regv1 = snd_soc_component_read32(component, ES8396_SPK_CTRL_SRC_REG3A);
+		regv1 = snd_soc_component_read(component, ES8396_SPK_CTRL_SRC_REG3A);
 		regv1 |= 0x44;	/* set pdnspkl_biasgen, set pdnspkr_biasgen */
 		snd_soc_component_write(component, ES8396_SPK_CTRL_SRC_REG3A, regv1);
-		regv1 = snd_soc_component_read32(component, ES8396_SPK_MIXER_REG26);
+		regv1 = snd_soc_component_read(component, ES8396_SPK_MIXER_REG26);
 		/* clear pdnspkl_biasgen, clear pdnspkr_biasgen */
 		regv1 |= 0x11;
 		snd_soc_component_write(component, ES8396_SPK_MIXER_REG26, regv1);
@@ -560,7 +560,7 @@
 			snd_soc_component_write(component, ES8396_SYS_MICBIAS_CTRL_REG74,
 						regv);
 		}
-		regv = snd_soc_component_read32(component, ES8396_ALRCK_GPIO_SEL_REG15);
+		regv = snd_soc_component_read(component, ES8396_ALRCK_GPIO_SEL_REG15);
 		if (es8396->dmic_amic == MIC_DMIC) {
 			regv &= 0xf0;	/* enable DMIC CLK */
 			regv |= 0x0A;
@@ -570,7 +570,7 @@
 		snd_soc_component_write(component, ES8396_ALRCK_GPIO_SEL_REG15, regv);
 		break;
 	case SND_SOC_DAPM_POST_PMD:
-		regv = snd_soc_component_read32(component, ES8396_ALRCK_GPIO_SEL_REG15);
+		regv = snd_soc_component_read(component, ES8396_ALRCK_GPIO_SEL_REG15);
 		regv &= 0xf0;	/* disable DMIC CLK */
 		snd_soc_component_write(component, ES8396_ALRCK_GPIO_SEL_REG15, regv);
 		break;
@@ -618,7 +618,7 @@
 		snd_soc_component_write(component, ES8396_SYS_MIC_IBIAS_EN_REG75, 0x02);
 
 		/* axMixer Gain boost */
-		regv = snd_soc_component_read32(component, ES8396_AX_MIXER_BOOST_REG2F);
+		regv = snd_soc_component_read(component, ES8396_AX_MIXER_BOOST_REG2F);
 		regv |= 0x88;
 		snd_soc_component_write(component, ES8396_AX_MIXER_BOOST_REG2F, regv);
 		/* axmixer vol = +12db */
@@ -627,7 +627,7 @@
 		snd_soc_component_write(component, ES8396_AX_MIXER_REF_LP_REG31, 0x02);
 
 		/* MNMixer Gain boost */
-		regv = snd_soc_component_read32(component, ES8396_MN_MIXER_BOOST_REG37);
+		regv = snd_soc_component_read(component, ES8396_MN_MIXER_BOOST_REG37);
 		regv |= 0x88;
 		snd_soc_component_write(component, ES8396_MN_MIXER_BOOST_REG37, regv);
 		/* mnmixer vol = +12db */
@@ -700,12 +700,12 @@
 		snd_soc_component_update_bits(component, ES8396_DAC_REF_PWR_CTRL_REG6E,
 					      0xC0, 0xC0);
 		/* read the clock configure */
-		regv = snd_soc_component_read32(component, ES8396_CLK_CTRL_REG08);
+		regv = snd_soc_component_read(component, ES8396_CLK_CTRL_REG08);
 		regv |= 0x20;
 		/* stop charge pump clock */
 		snd_soc_component_write(component, ES8396_CLK_CTRL_REG08, regv);
 
-		regv = snd_soc_component_read32(component, ES8396_HP_MIXER_BOOST_REG2B);
+		regv = snd_soc_component_read(component, ES8396_HP_MIXER_BOOST_REG2B);
 		regv |= 0x11;
 		snd_soc_component_write(component, ES8396_HP_MIXER_BOOST_REG2B, regv);
 		break;
@@ -1967,7 +1967,7 @@
 		/* Allow no source specification when stopping */
 		if (freq_out)
 			return -EINVAL;
-		reg = snd_soc_component_read32(component, ES8396_CLK_SRC_SEL_REG01);
+		reg = snd_soc_component_read(component, ES8396_CLK_SRC_SEL_REG01);
 		reg &= 0xF0;
 		if (source == 0)
 			reg |= 0x01;	/* clksrc2= 0, clksrc1 = 1 */
@@ -1975,29 +1975,29 @@
 			reg |= 0x09;	/* clksrc2= 1, clksrc1 = 1 */
 
 		snd_soc_component_write(component, ES8396_CLK_SRC_SEL_REG01, reg);
-		reg = snd_soc_component_read32(component, ES8396_CLK_CTRL_REG08);
+		reg = snd_soc_component_read(component, ES8396_CLK_CTRL_REG08);
 		reg |= 0x0F;
 		snd_soc_component_write(component, ES8396_CLK_CTRL_REG08, reg);
 		pr_debug("ES8396 PLL No Clock source\n");
 		break;
 	case ES8396_PLL_SRC_FRM_MCLK:
-		reg = snd_soc_component_read32(component, ES8396_CLK_SRC_SEL_REG01);
+		reg = snd_soc_component_read(component, ES8396_CLK_SRC_SEL_REG01);
 		reg &= 0xF3;
 		reg |= 0x04;	/* clksrc2= mclk */
 		/* use clk2 for pll clk source */
 		snd_soc_component_write(component, ES8396_CLK_SRC_SEL_REG01, reg);
-		reg = snd_soc_component_read32(component, ES8396_CLK_CTRL_REG08);
+		reg = snd_soc_component_read(component, ES8396_CLK_CTRL_REG08);
 		reg |= 0x0F;
 		snd_soc_component_write(component, ES8396_CLK_CTRL_REG08, reg);
 		pr_debug("ES8396 PLL Clock Source from MCLK pin\n");
 		break;
 	case ES8396_PLL_SRC_FRM_BCLK:
-		reg = snd_soc_component_read32(component, ES8396_CLK_SRC_SEL_REG01);
+		reg = snd_soc_component_read(component, ES8396_CLK_SRC_SEL_REG01);
 		reg &= 0xF3;
 		reg |= 0x0c;	/* clksrc2= bclk, */
 		/* use clk2 for pll clk source */
 		snd_soc_component_write(component, ES8396_CLK_SRC_SEL_REG01, reg);
-		reg = snd_soc_component_read32(component, ES8396_CLK_CTRL_REG08);
+		reg = snd_soc_component_read(component, ES8396_CLK_CTRL_REG08);
 		reg |= 0x0F;
 		snd_soc_component_write(component, ES8396_CLK_CTRL_REG08, reg);
 		pr_debug("ES8396 PLL Clock Source from BCLK signal\n");
@@ -2116,13 +2116,13 @@
 	switch (clk_id) {
 	/* the clock source form MCLK pin, don't use PLL */
 	case ES8396_CLKID_MCLK:
-		reg = snd_soc_component_read32(component, ES8396_CLK_SRC_SEL_REG01);
+		reg = snd_soc_component_read(component, ES8396_CLK_SRC_SEL_REG01);
 		reg &= 0xFC;
 		reg |= 0x00;	/* clksrc1= mclk */
 		snd_soc_component_write(component, ES8396_CLK_SRC_SEL_REG01, reg);
 
 		/* always use clk1 */
-		reg = snd_soc_component_read32(component, ES8396_CLK_CTRL_REG08);
+		reg = snd_soc_component_read(component, ES8396_CLK_CTRL_REG08);
 		reg &= 0xf0;
 		snd_soc_component_write(component, ES8396_CLK_CTRL_REG08, reg);
 
@@ -2158,12 +2158,12 @@
 		break;
 	/* the clock source form internal BCLK signal, don't use PLL */
 	case ES8396_CLKID_BCLK:
-		reg = snd_soc_component_read32(component, ES8396_CLK_SRC_SEL_REG01);
+		reg = snd_soc_component_read(component, ES8396_CLK_SRC_SEL_REG01);
 		reg &= 0xFC;
 		reg |= 0x03;	/* clksrc1= bclk */
 		snd_soc_component_write(component, ES8396_CLK_SRC_SEL_REG01, reg);
 		/* always use clk1 */
-		reg = snd_soc_component_read32(component, ES8396_CLK_CTRL_REG08);
+		reg = snd_soc_component_read(component, ES8396_CLK_CTRL_REG08);
 		reg &= 0xf0;
 		snd_soc_component_write(component, ES8396_CLK_CTRL_REG08, reg);
 
@@ -2301,16 +2301,16 @@
 
 	switch (id) {
 	case ES8396_SDP1:
-		spc = snd_soc_component_read32(component, ES8396_SDP1_IN_FMT_REG1F) & 0x3f;
-		mmcc = snd_soc_component_read32(component, ES8396_SDP_1_MS_REG12);
+		spc = snd_soc_component_read(component, ES8396_SDP1_IN_FMT_REG1F) & 0x3f;
+		mmcc = snd_soc_component_read(component, ES8396_SDP_1_MS_REG12);
 		break;
 	case ES8396_SDP2:
-		spc = snd_soc_component_read32(component, ES8396_SDP2_IN_FMT_REG22) & 0x3f;
-		mmcc = snd_soc_component_read32(component, ES8396_SDP_2_MS_REG13);
+		spc = snd_soc_component_read(component, ES8396_SDP2_IN_FMT_REG22) & 0x3f;
+		mmcc = snd_soc_component_read(component, ES8396_SDP_2_MS_REG13);
 		break;
 	case ES8396_SDP3:
-		spc = snd_soc_component_read32(component, ES8396_SDP3_IN_FMT_REG24) & 0x3f;
-		mmcc = snd_soc_component_read32(component, ES8396_SDP_3_MS_REG14);
+		spc = snd_soc_component_read(component, ES8396_SDP3_IN_FMT_REG24) & 0x3f;
+		mmcc = snd_soc_component_read(component, ES8396_SDP_3_MS_REG14);
 		break;
 	default:
 		return -EINVAL;
@@ -2398,10 +2398,10 @@
 
 	switch (id) {
 	case ES8396_SDP1:
-		bdiv = snd_soc_component_read32(component, ES8396_BCLK_DIV_M2_REG0F);
+		bdiv = snd_soc_component_read(component, ES8396_BCLK_DIV_M2_REG0F);
 		bdiv &= 0xe0;
 		bdiv |= es8396_mclk_coeffs[mclk_coeff].bclkdiv;
-		lrdiv = snd_soc_component_read32(component, ES8396_LRCK_DIV_M4_REG11);
+		lrdiv = snd_soc_component_read(component, ES8396_LRCK_DIV_M4_REG11);
 		lrdiv &= 0xe0;
 		lrdiv |= 0x22;	/* es8396_mclk_coeffs[mclk_coeff].lrcdiv; */
 		snd_soc_component_write(component, ES8396_BCLK_DIV_M2_REG0F, bdiv);
@@ -2412,10 +2412,10 @@
 		break;
 	case ES8396_SDP2:
 	case ES8396_SDP3:
-		bdiv = snd_soc_component_read32(component, ES8396_BCLK_DIV_M1_REG0E);
+		bdiv = snd_soc_component_read(component, ES8396_BCLK_DIV_M1_REG0E);
 		bdiv &= 0xe0;
 		bdiv |= es8396_mclk_coeffs[mclk_coeff].bclkdiv;
-		lrdiv = snd_soc_component_read32(component, ES8396_LRCK_DIV_M3_REG10);
+		lrdiv = snd_soc_component_read(component, ES8396_LRCK_DIV_M3_REG10);
 		lrdiv &= 0xe0;
 		lrdiv |= es8396_mclk_coeffs[mclk_coeff].lrcdiv;
 		snd_soc_component_write(component, ES8396_BCLK_DIV_M1_REG0E, bdiv);
@@ -2511,7 +2511,7 @@
 	int i;
 
 	pr_debug(">>>>>>>>es8396_pcm_startup\n");
-	ret = snd_soc_component_read32(component, ES8396_ADC_CSM_REG53);
+	ret = snd_soc_component_read(component, ES8396_ADC_CSM_REG53);
 	pr_debug("ES8396_ADC_CSM_REG53===0x%x\n", ret);
 	/*
 	 * set the clock source to MCLK pin
@@ -2571,7 +2571,7 @@
 		snd_soc_component_write(component, ES8396_SYS_MIC_IBIAS_EN_REG75, 0x02);
 
 		/* axMixer Gain boost */
-		regv = snd_soc_component_read32(component, ES8396_AX_MIXER_BOOST_REG2F);
+		regv = snd_soc_component_read(component, ES8396_AX_MIXER_BOOST_REG2F);
 		regv |= 0x88;
 		snd_soc_component_write(component, ES8396_AX_MIXER_BOOST_REG2F, regv);
 		/* axmixer vol = +12db */
@@ -2580,7 +2580,7 @@
 		snd_soc_component_write(component, ES8396_AX_MIXER_REF_LP_REG31, 0x02);
 		snd_soc_component_write(component, 0x33, 0);
 		/* MNMixer Gain boost */
-		regv = snd_soc_component_read32(component, ES8396_MN_MIXER_BOOST_REG37);
+		regv = snd_soc_component_read(component, ES8396_MN_MIXER_BOOST_REG37);
 		regv |= 0x88;
 		snd_soc_component_write(component, ES8396_MN_MIXER_BOOST_REG37, regv);
 		/* mnmixer vol = +12db */
@@ -2697,7 +2697,7 @@
 		snd_soc_component_write(component, ES8396_SYS_MIC_IBIAS_EN_REG75, 0x02);
 
 		/* axMixer Gain boost */
-		regv = snd_soc_component_read32(component, ES8396_AX_MIXER_BOOST_REG2F);
+		regv = snd_soc_component_read(component, ES8396_AX_MIXER_BOOST_REG2F);
 		regv |= 0x88;
 		snd_soc_component_write(component, ES8396_AX_MIXER_BOOST_REG2F, regv);
 		/* axmixer vol = +12db */
@@ -2706,7 +2706,7 @@
 		snd_soc_component_write(component, ES8396_AX_MIXER_REF_LP_REG31, 0x02);
 		snd_soc_component_write(component, 0x33, 0);
 		/* MNMixer Gain boost */
-		regv = snd_soc_component_read32(component, ES8396_MN_MIXER_BOOST_REG37);
+		regv = snd_soc_component_read(component, ES8396_MN_MIXER_BOOST_REG37);
 		regv |= 0x88;
 		snd_soc_component_write(component, ES8396_MN_MIXER_BOOST_REG37, regv);
 		/* mnmixer vol = +12db */
@@ -2757,7 +2757,7 @@
 /*
  * Only mute SDP IN(for dac)
  */
-static int es8396_aif1_mute(struct snd_soc_dai *codec_dai, int mute)
+static int es8396_aif1_mute(struct snd_soc_dai *codec_dai, int mute, int stream)
 {
 	struct snd_soc_component *component = codec_dai->component;
 	struct es8396_private *es8396 = snd_soc_component_get_drvdata(component);
@@ -2779,7 +2779,7 @@
 	return 0;
 }
 
-static int es8396_aif2_mute(struct snd_soc_dai *codec_dai, int mute)
+static int es8396_aif2_mute(struct snd_soc_dai *codec_dai, int mute, int stream)
 {
 	struct snd_soc_component *component = codec_dai->component;
 	struct es8396_private *es8396 = snd_soc_component_get_drvdata(component);
@@ -2812,9 +2812,10 @@
 	.set_sysclk = es8396_set_dai_sysclk,
 	.set_fmt = es8396_set_dai_fmt,
 	.hw_params = es8396_pcm_hw_params,
-	.digital_mute = es8396_aif1_mute,
+	.mute_stream = es8396_aif1_mute,
 	.set_pll = es8396_set_pll,
 	.set_tristate = es8396_set_tristate,
+	.no_capture_mute = 1,
 };
 
 static const struct snd_soc_dai_ops es8396_aif2_dai_ops = {
@@ -2823,8 +2824,9 @@
 	.set_sysclk = es8396_set_dai_sysclk,
 	.set_fmt = es8396_set_dai_fmt,
 	.hw_params = es8396_pcm_hw_params,
-	.digital_mute = es8396_aif2_mute,
+	.mute_stream = es8396_aif2_mute,
 	.set_pll = es8396_set_pll,
+	.no_capture_mute = 1,
 };
 
 static struct snd_soc_dai_driver es8396_dai[] = {
@@ -2889,7 +2891,7 @@
 	ret = clk_prepare_enable(es8396->mclk_clock);
 	if (ret)
 		return ret;
-	regv = snd_soc_component_read32(component, ES8396_PLL_K2_REG05);
+	regv = snd_soc_component_read(component, ES8396_PLL_K2_REG05);
 
 	if (regv == 0x00) {
 		/*

--
Gitblit v1.6.2