mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-10 07:10:27 +00:00
extcon: arizona: Fix race with microphone detection and removal
The microphone detection code is run as delayed work to provide additional debounce, it is possible that the jack could have been removed by the time we process the microphone detection. Turn this case into a no op. Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
This commit is contained in:
parent
a3e00d4bd8
commit
31a847e6e1
@ -780,6 +780,19 @@ static void arizona_micd_detect(struct work_struct *work)
|
||||
|
||||
mutex_lock(&info->lock);
|
||||
|
||||
/* If the cable was removed while measuring ignore the result */
|
||||
ret = extcon_get_cable_state_(&info->edev, ARIZONA_CABLE_MECHANICAL);
|
||||
if (ret < 0) {
|
||||
dev_err(arizona->dev, "Failed to check cable state: %d\n",
|
||||
ret);
|
||||
mutex_unlock(&info->lock);
|
||||
return;
|
||||
} else if (!ret) {
|
||||
dev_dbg(arizona->dev, "Ignoring MICDET for removed cable\n");
|
||||
mutex_unlock(&info->lock);
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < 10 && !(val & MICD_LVL_0_TO_8); i++) {
|
||||
ret = regmap_read(arizona->regmap, ARIZONA_MIC_DETECT_3, &val);
|
||||
if (ret != 0) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user