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

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

Merge "ASoC: wcd9335: Update register defaults for wcd9335 1.1"

parents 3fa5fcfd ea0b3fdc
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -773,7 +773,7 @@ static const struct wcd9xxx_codec_type wcd9xxx_codecs[] = {
	},
	{
		TASHA_MAJOR, cpu_to_le16(0x0), tasha_devs,
		ARRAY_SIZE(tasha_devs), TASHA_NUM_IRQS, 1,
		ARRAY_SIZE(tasha_devs), TASHA_NUM_IRQS, -1,
		WCD9XXX_SLIM_SLAVE_ADDR_TYPE_TAIKO, 0x01
	},
};
@@ -992,6 +992,14 @@ static const struct wcd9xxx_codec_type
	} else {
		if (d->version > -1) {
			*version = d->version;
		} else if (d->id_major == TASHA_MAJOR) {
			rc = __wcd9xxx_reg_read(wcd9xxx,
					WCD9335_CHIP_TIER_CTRL_EFUSE_VAL_OUT0);
			if (rc < 0) {
				d = NULL;
				goto exit;
			}
			*version = ((u8)rc & 0x80) >> 7;
		} else {
			rc = __wcd9xxx_reg_read(wcd9xxx,
							WCD9XXX_A_CHIP_VERSION);
+7 −0
Original line number Diff line number Diff line
@@ -48,6 +48,13 @@
#define TOMTOM_IS_1_0(ver) \
	((ver == TOMTOM_VERSION_1_0) ? 1 : 0)

#define TASHA_VERSION_1_0     0
#define TASHA_VERSION_1_1     1
#define TASHA_IS_1_0(ver) \
	((ver == TASHA_VERSION_1_0) ? 1 : 0)
#define TASHA_IS_1_1(ver) \
	((ver == TASHA_VERSION_1_1) ? 1 : 0)

enum wcd9xxx_slim_slave_addr_type {
	WCD9XXX_SLIM_SLAVE_ADDR_TYPE_TABLA,
	WCD9XXX_SLIM_SLAVE_ADDR_TYPE_TAIKO,
+50 −3
Original line number Diff line number Diff line
@@ -7149,6 +7149,26 @@ static int wcd9335_get_micb_vout_ctl_val(u32 micb_mv)
	return (micb_mv - 1000) / 50;
}

static const struct tasha_reg_mask_val tasha_reg_update_reset_val_1_1[] = {
	{WCD9335_RCO_CTRL_2, 0xFF, 0x47},
	{WCD9335_FLYBACK_VNEG_DAC_CTRL_4, 0xFF, 0x60},
};

static const struct tasha_reg_mask_val tasha_codec_reg_init_val_1_1[] = {
	{WCD9335_FLYBACK_VNEG_DAC_CTRL_1, 0xFF, 0x65},
	{WCD9335_FLYBACK_VNEG_DAC_CTRL_2, 0xFF, 0x52},
	{WCD9335_FLYBACK_VNEG_DAC_CTRL_3, 0xFF, 0xAF},
	{WCD9335_FLYBACK_VNEG_DAC_CTRL_4, 0xFF, 0x40},
	{WCD9335_FLYBACK_VNEG_CTRL_3, 0xFF, 0xF4},
	{WCD9335_FLYBACK_VNEG_CTRL_9, 0xFF, 0x40},
	{WCD9335_FLYBACK_VNEG_CTRL_2, 0xFF, 0x4F},
	{WCD9335_FLYBACK_EN, 0xFF, 0x6E},
};

static const struct tasha_reg_mask_val tasha_codec_reg_init_val_1_0[] = {
	{WCD9335_FLYBACK_VNEG_CTRL_3, 0xFF, 0x54},
};

static const struct tasha_reg_mask_val tasha_codec_reg_defaults[] = {
	{WCD9335_CODEC_RPM_CLK_GATE, 0x03, 0x00},
	{WCD9335_CODEC_RPM_CLK_MCLK_CFG, 0x03, 0x01},
@@ -7214,7 +7234,6 @@ static const struct tasha_reg_mask_val tasha_codec_reg_init_val[] = {
	{WCD9335_CDC_RX7_RX_PATH_CFG1, 0x08, 0x08},
	{WCD9335_CDC_RX8_RX_PATH_CFG1, 0x08, 0x08},
	{WCD9335_FLYBACK_VNEG_CTRL_1, 0xFF, 0x63},
	{WCD9335_FLYBACK_VNEG_CTRL_3, 0xFF, 0x54},
	{WCD9335_FLYBACK_VNEG_CTRL_4, 0xFF, 0x7F},
	{WCD9335_CLASSH_CTRL_VCL_1, 0xFF, 0x60},
	{WCD9335_CLASSH_CTRL_CCL_5, 0xFF, 0x40},
@@ -7252,14 +7271,43 @@ static const struct tasha_reg_mask_val tasha_codec_reg_init_val[] = {
	{WCD9335_SOC_MAD_AUDIO_CTL_2, 0x03, 0x03},
};

static void tasha_update_reg_reset_values(struct snd_soc_codec *codec)
{
	u32 i;
	struct wcd9xxx *tasha_core = dev_get_drvdata(codec->dev->parent);

	if (TASHA_IS_1_1(tasha_core->version)) {
		for (i = 0; i < ARRAY_SIZE(tasha_reg_update_reset_val_1_1);
		     i++)
			snd_soc_write(codec,
				      tasha_reg_update_reset_val_1_1[i].reg,
				      tasha_reg_update_reset_val_1_1[i].val);
	}
}

static void tasha_codec_init_reg(struct snd_soc_codec *codec)
{
	u32 i;
	struct wcd9xxx *wcd9xxx = dev_get_drvdata(codec->dev->parent);

	for (i = 0; i < ARRAY_SIZE(tasha_codec_reg_init_val); i++)
		snd_soc_update_bits(codec, tasha_codec_reg_init_val[i].reg,
				tasha_codec_reg_init_val[i].mask,
				tasha_codec_reg_init_val[i].val);

	if (TASHA_IS_1_1(wcd9xxx->version)) {
		for (i = 0; i < ARRAY_SIZE(tasha_codec_reg_init_val_1_1); i++)
			snd_soc_update_bits(codec,
					tasha_codec_reg_init_val_1_1[i].reg,
					tasha_codec_reg_init_val_1_1[i].mask,
					tasha_codec_reg_init_val_1_1[i].val);
	} else if (TASHA_IS_1_0(wcd9xxx->version)) {
		for (i = 0; i < ARRAY_SIZE(tasha_codec_reg_init_val_1_0); i++)
			snd_soc_update_bits(codec,
					tasha_codec_reg_init_val_1_0[i].reg,
					tasha_codec_reg_init_val_1_0[i].mask,
					tasha_codec_reg_init_val_1_0[i].val);
	}
}

static void tasha_update_reg_defaults(struct tasha_priv *tasha)
@@ -7851,12 +7899,11 @@ static int tasha_codec_probe(struct snd_soc_codec *codec)
	/* Default HPH Mode to Class-H HiFi */
	tasha->hph_mode = CLS_H_HIFI;

	/* MBHC Init */

	tasha->codec = codec;
	for (i = 0; i < COMPANDER_MAX; i++)
		tasha->comp_enabled[i] = 0;

	tasha_update_reg_reset_values(codec);
	tasha->intf_type = wcd9xxx_get_intf_type();
	pr_debug("%s: MCLK Rate = %x\n", __func__, control->mclk_rate);
	if (control->mclk_rate == TASHA_MCLK_CLK_12P288MHZ)