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

Commit 3c4a9994 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "ASoC: wcd9xxx: Changes for High performance mode"

parents d3037dd8 eac4b94d
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -286,6 +286,8 @@
#define WCD9XXX_A_RX_HPH_R_GAIN__POR				(0x00)
#define WCD9XXX_A_RX_HPH_R_GAIN__POR				(0x00)
#define WCD9XXX_A_RX_HPH_CHOP_CTL			(0x1A5)
#define WCD9XXX_A_RX_HPH_CHOP_CTL			(0x1A5)
#define WCD9XXX_A_RX_HPH_CHOP_CTL__POR				(0xB4)
#define WCD9XXX_A_RX_HPH_CHOP_CTL__POR				(0xB4)
#define WCD9XXX_A_RX_HPH_BIAS_PA			(0x1A6)
#define WCD9XXX_A_RX_HPH_BIAS_PA__POR				(0x7A)
#define WCD9XXX_A_RX_HPH_L_TEST				(0x1AF)
#define WCD9XXX_A_RX_HPH_L_TEST				(0x1AF)
#define WCD9XXX_A_RX_HPH_L_TEST__POR				(0x00)
#define WCD9XXX_A_RX_HPH_L_TEST__POR				(0x00)
#define WCD9XXX_A_RX_HPH_R_TEST				(0x1B5)
#define WCD9XXX_A_RX_HPH_R_TEST				(0x1B5)
@@ -298,6 +300,10 @@
#define WCD9XXX_A_RX_HPH_BIAS_WG_OCP__POR			(0x2A)
#define WCD9XXX_A_RX_HPH_BIAS_WG_OCP__POR			(0x2A)
#define WCD9XXX_A_RX_HPH_CNP_WG_CTL			(0x1AC)
#define WCD9XXX_A_RX_HPH_CNP_WG_CTL			(0x1AC)
#define WCD9XXX_A_RX_HPH_CNP_WG_CTL__POR			(0xDE)
#define WCD9XXX_A_RX_HPH_CNP_WG_CTL__POR			(0xDE)
#define WCD9XXX_A_RX_HPH_L_PA_CTL			(0x1B0)
#define WCD9XXX_A_RX_HPH_L_PA_CTL__POR				(0x42)
#define WCD9XXX_A_RX_HPH_R_PA_CTL			(0x1B6)
#define WCD9XXX_A_RX_HPH_R_PA_CTL__POR				(0x42)
#define WCD9XXX_A_CDC_CONN_RX2_B1_CTL			(0x383)
#define WCD9XXX_A_CDC_CONN_RX2_B1_CTL			(0x383)
#define WCD9XXX_A_CDC_CONN_RX2_B1_CTL__POR			(0x00)
#define WCD9XXX_A_CDC_CONN_RX2_B1_CTL__POR			(0x00)
#define WCD9XXX_A_CDC_PA_RAMP_B1_CTL			(0x361)
#define WCD9XXX_A_CDC_PA_RAMP_B1_CTL			(0x361)
+11 −0
Original line number Original line Diff line number Diff line
@@ -554,10 +554,15 @@ void wcd9xxx_enable_high_perf_mode(struct snd_soc_codec *codec,


	if (req_type == WCD9XXX_CLSAB_REQ_ENABLE) {
	if (req_type == WCD9XXX_CLSAB_REQ_ENABLE) {
		clsh_d->ncp_users[NCP_FCLK_LEVEL_8]++;
		clsh_d->ncp_users[NCP_FCLK_LEVEL_8]++;
		snd_soc_write(codec, WCD9XXX_A_RX_HPH_BIAS_PA,
					WCD9XXX_A_RX_HPH_BIAS_PA__POR);
		snd_soc_write(codec, WCD9XXX_A_RX_HPH_L_PA_CTL, 0x48);
		snd_soc_write(codec, WCD9XXX_A_RX_HPH_R_PA_CTL, 0x48);
		snd_soc_update_bits(codec, WCD9XXX_A_RX_HPH_CHOP_CTL,
		snd_soc_update_bits(codec, WCD9XXX_A_RX_HPH_CHOP_CTL,
					0x20, 0x00);
					0x20, 0x00);
		wcd9xxx_chargepump_request(codec, true);
		wcd9xxx_chargepump_request(codec, true);
		wcd9xxx_enable_anc_delay(codec, true);
		wcd9xxx_enable_anc_delay(codec, true);
		wcd9xxx_enable_buck(codec, clsh_d, false);
		if (clsh_d->ncp_users[NCP_FCLK_LEVEL_8] > 0)
		if (clsh_d->ncp_users[NCP_FCLK_LEVEL_8] > 0)
			snd_soc_update_bits(codec, WCD9XXX_A_NCP_STATIC,
			snd_soc_update_bits(codec, WCD9XXX_A_NCP_STATIC,
						0x0F, 0x08);
						0x0F, 0x08);
@@ -569,6 +574,12 @@ void wcd9xxx_enable_high_perf_mode(struct snd_soc_codec *codec,
	} else {
	} else {
		snd_soc_update_bits(codec, WCD9XXX_A_RX_HPH_CHOP_CTL,
		snd_soc_update_bits(codec, WCD9XXX_A_RX_HPH_CHOP_CTL,
					0x20, 0x20);
					0x20, 0x20);
		snd_soc_write(codec, WCD9XXX_A_RX_HPH_L_PA_CTL,
					WCD9XXX_A_RX_HPH_L_PA_CTL__POR);
		snd_soc_write(codec, WCD9XXX_A_RX_HPH_R_PA_CTL,
					WCD9XXX_A_RX_HPH_R_PA_CTL__POR);
		snd_soc_write(codec, WCD9XXX_A_RX_HPH_BIAS_PA, 0x55);
		wcd9xxx_enable_buck(codec, clsh_d, true);
		wcd9xxx_chargepump_request(codec, false);
		wcd9xxx_chargepump_request(codec, false);
		wcd9xxx_enable_anc_delay(codec, false);
		wcd9xxx_enable_anc_delay(codec, false);
		clsh_d->ncp_users[NCP_FCLK_LEVEL_8]--;
		clsh_d->ncp_users[NCP_FCLK_LEVEL_8]--;