Unverified Commit 0e4ba029 authored by Shuming Fan's avatar Shuming Fan Committed by Mark Brown
Browse files

ASoC: rt1011: set the different setting for QFN/WLCSP package



The QFN package is a new one.
There is a different initial setting to the chip of QFN and WLCSP package.

Signed-off-by: default avatarShuming Fan <shumingf@realtek.com>
Link: https://lore.kernel.org/r/20200116091854.18095-1-shumingf@realtek.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 4061fdc8
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -40,7 +40,6 @@ static const struct reg_sequence init_list[] = {

	{ RT1011_ADC_SET_5, 0x0a20 },
	{ RT1011_DAC_SET_2, 0xa032 },
	{ RT1011_ADC_SET_1, 0x2925 },

	{ RT1011_SPK_PRO_DC_DET_1, 0xb00c },
	{ RT1011_SPK_PRO_DC_DET_2, 0xcccc },
@@ -2186,7 +2185,6 @@ static int rt1011_calibrate(struct rt1011_priv *rt1011, unsigned char cali_flag)
	/* ADC/DAC setting */
	regmap_write(rt1011->regmap, RT1011_ADC_SET_5, 0x0a20);
	regmap_write(rt1011->regmap, RT1011_DAC_SET_2, 0xe232);
	regmap_write(rt1011->regmap, RT1011_ADC_SET_1, 0x2925);
	regmap_write(rt1011->regmap, RT1011_ADC_SET_4, 0xc000);

	/* DC detection */
@@ -2235,8 +2233,18 @@ static int rt1011_calibrate(struct rt1011_priv *rt1011, unsigned char cali_flag)
	dc_offset |= (value & 0xffff);
	dev_info(dev, "Gain1 offset=0x%x\n", dc_offset);

	/* check the package info. */
	regmap_read(rt1011->regmap, RT1011_EFUSE_MATCH_DONE, &value);
	if (value & 0x4)
		rt1011->pack_id = 1;

	if (cali_flag) {

		if (rt1011->pack_id)
			regmap_write(rt1011->regmap, RT1011_ADC_SET_1, 0x292c);
		else
			regmap_write(rt1011->regmap, RT1011_ADC_SET_1, 0x2925);

		/* Class D on */
		regmap_write(rt1011->regmap, RT1011_CLASS_D_POS, 0x010e);
		regmap_write(rt1011->regmap,
@@ -2361,6 +2369,11 @@ static void rt1011_calibration_work(struct work_struct *work)

		rt1011_r0_load(rt1011);
	}

	if (rt1011->pack_id)
		snd_soc_component_write(component, RT1011_ADC_SET_1, 0x292c);
	else
		snd_soc_component_write(component, RT1011_ADC_SET_1, 0x2925);
}

static int rt1011_parse_dp(struct rt1011_priv *rt1011, struct device *dev)
+1 −0
Original line number Diff line number Diff line
@@ -692,6 +692,7 @@ struct rt1011_priv {
	unsigned int r0_reg, cali_done;
	unsigned int r0_calib, temperature_calib;
	int recv_spk_mode;
	unsigned int pack_id; /* 0: WLCSP; 1: QFN */
};

#endif		/* end of _RT1011_H_ */