mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 07:03:03 +02:00
ASoC: rt5682s: Adjust SAR ADC button mode to fix noise issue
Adjust register settings for SAR adc button detection mode to fix noise issue in headset. Signed-off-by: Jack Yu <jack.yu@realtek.com> Link: https://patch.msgid.link/766cd1d2dd7a403ba65bb4cc44845f71@realtek.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
f7a5195c2d
commit
1dd28fd86c
|
|
@ -653,14 +653,15 @@ static void rt5682s_sar_power_mode(struct snd_soc_component *component, int mode
|
|||
switch (mode) {
|
||||
case SAR_PWR_SAVING:
|
||||
snd_soc_component_update_bits(component, RT5682S_CBJ_CTRL_3,
|
||||
RT5682S_CBJ_IN_BUF_MASK, RT5682S_CBJ_IN_BUF_DIS);
|
||||
RT5682S_CBJ_IN_BUF_MASK, RT5682S_CBJ_IN_BUF_EN);
|
||||
snd_soc_component_update_bits(component, RT5682S_CBJ_CTRL_1,
|
||||
RT5682S_MB1_PATH_MASK | RT5682S_MB2_PATH_MASK,
|
||||
RT5682S_CTRL_MB1_REG | RT5682S_CTRL_MB2_REG);
|
||||
RT5682S_MB1_PATH_MASK | RT5682S_MB2_PATH_MASK |
|
||||
RT5682S_VREF_POW_MASK, RT5682S_CTRL_MB1_FSM |
|
||||
RT5682S_CTRL_MB2_FSM | RT5682S_VREF_POW_FSM);
|
||||
snd_soc_component_update_bits(component, RT5682S_SAR_IL_CMD_1,
|
||||
RT5682S_SAR_BUTDET_MASK | RT5682S_SAR_BUTDET_POW_MASK |
|
||||
RT5682S_SAR_SEL_MB1_2_CTL_MASK, RT5682S_SAR_BUTDET_DIS |
|
||||
RT5682S_SAR_BUTDET_POW_SAV | RT5682S_SAR_SEL_MB1_2_MANU);
|
||||
RT5682S_SAR_BUTDET_POW_NORM | RT5682S_SAR_SEL_MB1_2_MANU);
|
||||
usleep_range(5000, 5500);
|
||||
snd_soc_component_update_bits(component, RT5682S_SAR_IL_CMD_1,
|
||||
RT5682S_SAR_BUTDET_MASK, RT5682S_SAR_BUTDET_EN);
|
||||
|
|
@ -688,7 +689,7 @@ static void rt5682s_sar_power_mode(struct snd_soc_component *component, int mode
|
|||
snd_soc_component_update_bits(component, RT5682S_SAR_IL_CMD_1,
|
||||
RT5682S_SAR_BUTDET_MASK | RT5682S_SAR_BUTDET_POW_MASK |
|
||||
RT5682S_SAR_SEL_MB1_2_CTL_MASK, RT5682S_SAR_BUTDET_DIS |
|
||||
RT5682S_SAR_BUTDET_POW_SAV | RT5682S_SAR_SEL_MB1_2_MANU);
|
||||
RT5682S_SAR_BUTDET_POW_NORM | RT5682S_SAR_SEL_MB1_2_MANU);
|
||||
break;
|
||||
default:
|
||||
dev_err(component->dev, "Invalid SAR Power mode: %d\n", mode);
|
||||
|
|
@ -725,7 +726,7 @@ static void rt5682s_disable_push_button_irq(struct snd_soc_component *component)
|
|||
snd_soc_component_update_bits(component, RT5682S_SAR_IL_CMD_1,
|
||||
RT5682S_SAR_BUTDET_MASK | RT5682S_SAR_BUTDET_POW_MASK |
|
||||
RT5682S_SAR_SEL_MB1_2_CTL_MASK, RT5682S_SAR_BUTDET_DIS |
|
||||
RT5682S_SAR_BUTDET_POW_SAV | RT5682S_SAR_SEL_MB1_2_MANU);
|
||||
RT5682S_SAR_BUTDET_POW_NORM | RT5682S_SAR_SEL_MB1_2_MANU);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -786,7 +787,7 @@ static int rt5682s_headset_detect(struct snd_soc_component *component, int jack_
|
|||
jack_type = SND_JACK_HEADSET;
|
||||
snd_soc_component_write(component, RT5682S_SAR_IL_CMD_3, 0x024c);
|
||||
snd_soc_component_update_bits(component, RT5682S_CBJ_CTRL_1,
|
||||
RT5682S_FAST_OFF_MASK, RT5682S_FAST_OFF_EN);
|
||||
RT5682S_FAST_OFF_MASK, RT5682S_FAST_OFF_DIS);
|
||||
snd_soc_component_update_bits(component, RT5682S_SAR_IL_CMD_1,
|
||||
RT5682S_SAR_SEL_MB1_2_MASK, val << RT5682S_SAR_SEL_MB1_2_SFT);
|
||||
rt5682s_enable_push_button_irq(component);
|
||||
|
|
@ -966,7 +967,7 @@ static int rt5682s_set_jack_detect(struct snd_soc_component *component,
|
|||
RT5682S_EMB_JD_MASK | RT5682S_DET_TYPE |
|
||||
RT5682S_POL_FAST_OFF_MASK | RT5682S_MIC_CAP_MASK,
|
||||
RT5682S_EMB_JD_EN | RT5682S_DET_TYPE |
|
||||
RT5682S_POL_FAST_OFF_HIGH | RT5682S_MIC_CAP_HS);
|
||||
RT5682S_POL_FAST_OFF_LOW | RT5682S_MIC_CAP_HS);
|
||||
regmap_update_bits(rt5682s->regmap, RT5682S_SAR_IL_CMD_1,
|
||||
RT5682S_SAR_POW_MASK, RT5682S_SAR_POW_EN);
|
||||
regmap_update_bits(rt5682s->regmap, RT5682S_GPIO_CTRL_1,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user