extcon: arizona: Make rev A register sequences atomic
The special register sequences that are applied for rev A of wm5102 should be applied atomically with respect to any other register writes. Use regmap_multi_reg_write to ensure all writes happen under the regmap lock. Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
This commit is contained in:
parent
9c8eaec8eb
commit
b82f871a33
@ -310,9 +310,13 @@ static void arizona_start_mic(struct arizona_extcon_info *info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (info->micd_reva) {
|
if (info->micd_reva) {
|
||||||
regmap_write(arizona->regmap, 0x80, 0x3);
|
const struct reg_sequence reva[] = {
|
||||||
regmap_write(arizona->regmap, 0x294, 0);
|
{ 0x80, 0x3 },
|
||||||
regmap_write(arizona->regmap, 0x80, 0x0);
|
{ 0x294, 0x0 },
|
||||||
|
{ 0x80, 0x0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
regmap_multi_reg_write(arizona->regmap, reva, ARRAY_SIZE(reva));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (info->detecting && arizona->pdata.micd_software_compare)
|
if (info->detecting && arizona->pdata.micd_software_compare)
|
||||||
@ -361,9 +365,13 @@ static void arizona_stop_mic(struct arizona_extcon_info *info)
|
|||||||
snd_soc_dapm_sync(dapm);
|
snd_soc_dapm_sync(dapm);
|
||||||
|
|
||||||
if (info->micd_reva) {
|
if (info->micd_reva) {
|
||||||
regmap_write(arizona->regmap, 0x80, 0x3);
|
const struct reg_sequence reva[] = {
|
||||||
regmap_write(arizona->regmap, 0x294, 2);
|
{ 0x80, 0x3 },
|
||||||
regmap_write(arizona->regmap, 0x80, 0x0);
|
{ 0x294, 0x2 },
|
||||||
|
{ 0x80, 0x0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
regmap_multi_reg_write(arizona->regmap, reva, ARRAY_SIZE(reva));
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = regulator_allow_bypass(info->micvdd, true);
|
ret = regulator_allow_bypass(info->micvdd, true);
|
||||||
|
Loading…
Reference in New Issue
Block a user