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

Commit eac4b94d authored by Sudheer Papothi's avatar Sudheer Papothi
Browse files

ASoC: wcd9xxx: Changes for High performance mode



Add changes for high performance audio playback on headset
for better audio quality during 192KHz/24bit audio playback.

CRs-Fixed: 706322
Change-Id: Ie79293f24114d5d81a610186d24b44b1550dae9c
Signed-off-by: default avatarSudheer Papothi <spapothi@codeaurora.org>
parent e92aa60f
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -286,6 +286,8 @@
#define WCD9XXX_A_RX_HPH_R_GAIN__POR				(0x00)
#define WCD9XXX_A_RX_HPH_CHOP_CTL			(0x1A5)
#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__POR				(0x00)
#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_CNP_WG_CTL			(0x1AC)
#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__POR			(0x00)
#define WCD9XXX_A_CDC_PA_RAMP_B1_CTL			(0x361)
+11 −0
Original line number 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) {
		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,
					0x20, 0x00);
		wcd9xxx_chargepump_request(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)
			snd_soc_update_bits(codec, WCD9XXX_A_NCP_STATIC,
						0x0F, 0x08);
@@ -569,6 +574,12 @@ void wcd9xxx_enable_high_perf_mode(struct snd_soc_codec *codec,
	} else {
		snd_soc_update_bits(codec, WCD9XXX_A_RX_HPH_CHOP_CTL,
					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_enable_anc_delay(codec, false);
		clsh_d->ncp_users[NCP_FCLK_LEVEL_8]--;