mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-01 02:36:02 +00:00
ASoC: codecs: ES8326: Modify the configuration of and micbias
Because we designed a new version of ES8326, the configuration of micbias needed to be modified.We tested the new driver, on both the new version and the old one. It works well. Signed-off-by: Zhang Yi <zhangyi@everest-semi.com> Link: https://patch.msgid.link/20241028060529.3359-1-zhangyi@everest-semi.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
dea15b2abd
commit
bc48c55557
@ -614,6 +614,10 @@ static int es8326_mute(struct snd_soc_dai *dai, int mute, int direction)
|
||||
} else {
|
||||
regmap_update_bits(es8326->regmap, ES8326_ADC_MUTE,
|
||||
0x0F, 0x0F);
|
||||
if (es8326->version > ES8326_VERSION_B) {
|
||||
regmap_update_bits(es8326->regmap, ES8326_VMIDSEL, 0x40, 0x40);
|
||||
regmap_update_bits(es8326->regmap, ES8326_ANA_MICBIAS, 0x70, 0x00);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (!es8326->calibrated) {
|
||||
@ -640,6 +644,10 @@ static int es8326_mute(struct snd_soc_dai *dai, int mute, int direction)
|
||||
ES8326_MUTE_MASK, ~(ES8326_MUTE));
|
||||
} else {
|
||||
msleep(300);
|
||||
if (es8326->version > ES8326_VERSION_B) {
|
||||
regmap_update_bits(es8326->regmap, ES8326_ANA_MICBIAS, 0x70, 0x50);
|
||||
regmap_update_bits(es8326->regmap, ES8326_VMIDSEL, 0x40, 0x00);
|
||||
}
|
||||
regmap_update_bits(es8326->regmap, ES8326_ADC_MUTE,
|
||||
0x0F, 0x00);
|
||||
}
|
||||
@ -821,7 +829,7 @@ static void es8326_jack_detect_handler(struct work_struct *work)
|
||||
iface = snd_soc_component_read(comp, ES8326_HPDET_STA);
|
||||
dev_dbg(comp->dev, "gpio flag %#04x", iface);
|
||||
|
||||
if ((es8326->jack_remove_retry == 1) && (es8326->version != ES8326_VERSION_B)) {
|
||||
if ((es8326->jack_remove_retry == 1) && (es8326->version < ES8326_VERSION_B)) {
|
||||
if (iface & ES8326_HPINSERT_FLAG)
|
||||
es8326->jack_remove_retry = 2;
|
||||
else
|
||||
@ -859,7 +867,7 @@ static void es8326_jack_detect_handler(struct work_struct *work)
|
||||
/*
|
||||
* Inverted HPJACK_POL bit to trigger one IRQ to double check HP Removal event
|
||||
*/
|
||||
if ((es8326->jack_remove_retry == 0) && (es8326->version != ES8326_VERSION_B)) {
|
||||
if ((es8326->jack_remove_retry == 0) && (es8326->version < ES8326_VERSION_B)) {
|
||||
es8326->jack_remove_retry = 1;
|
||||
dev_dbg(comp->dev, "remove event check, invert HPJACK_POL, cnt = %d\n",
|
||||
es8326->jack_remove_retry);
|
||||
@ -954,7 +962,7 @@ static int es8326_calibrate(struct snd_soc_component *component)
|
||||
regmap_read(es8326->regmap, ES8326_CHIP_VERSION, ®);
|
||||
es8326->version = reg;
|
||||
|
||||
if ((es8326->version == ES8326_VERSION_B) && (es8326->calibrated == false)) {
|
||||
if ((es8326->version >= ES8326_VERSION_B) && (es8326->calibrated == false)) {
|
||||
dev_dbg(component->dev, "ES8326_VERSION_B, calibrating\n");
|
||||
regmap_write(es8326->regmap, ES8326_CLK_INV, 0xc0);
|
||||
regmap_write(es8326->regmap, ES8326_CLK_DIV1, 0x03);
|
||||
@ -1047,7 +1055,7 @@ static void es8326_init(struct snd_soc_component *component)
|
||||
regmap_write(es8326->regmap, ES8326_DAC_VPPSCALE, 0x15);
|
||||
|
||||
regmap_write(es8326->regmap, ES8326_HPDET_TYPE, 0x80 |
|
||||
((es8326->version == ES8326_VERSION_B) ?
|
||||
((es8326->version >= ES8326_VERSION_B) ?
|
||||
(ES8326_HP_DET_SRC_PIN9 | es8326->jack_pol) :
|
||||
(ES8326_HP_DET_SRC_PIN9 | es8326->jack_pol | 0x04)));
|
||||
usleep_range(5000, 10000);
|
||||
@ -1073,6 +1081,10 @@ static void es8326_init(struct snd_soc_component *component)
|
||||
regmap_write(es8326->regmap, ES8326_ADC1_SRC, 0x44);
|
||||
regmap_write(es8326->regmap, ES8326_ADC2_SRC, 0x66);
|
||||
es8326_disable_micbias(es8326->component);
|
||||
if (es8326->version > ES8326_VERSION_B) {
|
||||
regmap_update_bits(es8326->regmap, ES8326_ANA_MICBIAS, 0x73, 0x03);
|
||||
regmap_update_bits(es8326->regmap, ES8326_VMIDSEL, 0x40, 0x40);
|
||||
}
|
||||
|
||||
msleep(200);
|
||||
regmap_write(es8326->regmap, ES8326_INT_SOURCE, ES8326_INT_SRC_PIN9);
|
||||
|
Loading…
Reference in New Issue
Block a user