Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a868bb9d authored by Vatsal Bucha's avatar Vatsal Bucha
Browse files

ASoC: codecs: sdm660_cdc: Fix HPH CnP issue on sdm660-internal



Pop is observed after start playback on hph.
This is because both compander channels are not enabled
at the same time which differs from ideal sequence.
Amplitude of pop gets reduced after
corresponding change is made.

CRs-Fixed: 2101404
Change-Id: Iba2b8a809fd3b53f0c180ce28ac5668d7635fb24
Signed-off-by: default avatarVatsal Bucha <vbucha@codeaurora.org>
parent 7be67e5f
Loading
Loading
Loading
Loading
+29 −3
Original line number Diff line number Diff line
@@ -217,6 +217,7 @@ static int msm_dig_cdc_codec_config_compander(struct snd_soc_codec *codec,
{
	struct msm_dig_priv *dig_cdc = snd_soc_codec_get_drvdata(codec);
	int comp_ch_bits_set = 0x03;
	int comp_ch_value;

	dev_dbg(codec->dev, "%s: event %d shift %d, enabled %d\n",
		__func__, event, interp_n,
@@ -236,15 +237,40 @@ static int msm_dig_cdc_codec_config_compander(struct snd_soc_codec *codec,
			dig_cdc->set_compander_mode(dig_cdc->handle, 0x00);
			return 0;
		};
		comp_ch_value = snd_soc_read(codec,
					     MSM89XX_CDC_CORE_COMP0_B1_CTL);
		if (interp_n == 0) {
			if (comp_ch_value & 0x02) {
				dev_dbg(codec->dev,
					"%s comp ch 1  already enabled\n",
					__func__);
				return 0;
			}
		}
		if (interp_n == 1) {
			if (comp_ch_value & 0x01) {
				dev_dbg(codec->dev,
					"%s comp ch 0 already enabled\n",
					__func__);
				return 0;
			}
		}
		dig_cdc->set_compander_mode(dig_cdc->handle, 0x08);
		/* Enable Compander Clock */
		snd_soc_update_bits(codec,
			MSM89XX_CDC_CORE_COMP0_B2_CTL, 0x0F, 0x09);
		snd_soc_update_bits(codec,
			MSM89XX_CDC_CORE_CLK_RX_B2_CTL, 0x01, 0x01);
		if (dig_cdc->comp_enabled[MSM89XX_RX1]) {
			snd_soc_update_bits(codec,
				MSM89XX_CDC_CORE_COMP0_B1_CTL,
			1 << interp_n, 1 << interp_n);
				0x02, 0x02);
		}
		if (dig_cdc->comp_enabled[MSM89XX_RX2]) {
			snd_soc_update_bits(codec,
				MSM89XX_CDC_CORE_COMP0_B1_CTL,
				0x01, 0x01);
		}
		snd_soc_update_bits(codec,
			MSM89XX_CDC_CORE_COMP0_B3_CTL, 0xFF, 0x01);
		snd_soc_update_bits(codec,