forked from Minki/linux
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: Shuming Fan <shumingf@realtek.com> Link: https://lore.kernel.org/r/20200116091854.18095-1-shumingf@realtek.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
4061fdc89f
commit
0e4ba0290e
@ -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)
|
||||
|
@ -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_ */
|
||||
|
Loading…
Reference in New Issue
Block a user