summaryrefslogtreecommitdiff
path: root/drivers/extcon
diff options
context:
space:
mode:
authorCharles Keepax <ckeepax@opensource.wolfsonmicro.com>2013-11-14 16:18:22 (GMT)
committerChanwoo Choi <cw00.choi@samsung.com>2014-01-07 02:54:28 (GMT)
commita3e00d4bd8011f2fe5100e1a0d3a01cc2afaa187 (patch)
tree1076c6c4bead6f9e5a6c3f4b53ed343b54ae8570 /drivers/extcon
parentffae24fed8a83afd5682865e0262731eac369a5b (diff)
downloadlinux-a3e00d4bd8011f2fe5100e1a0d3a01cc2afaa187.tar.xz
extcon: arizona: Fix reset of HPDET after race with removal
We need to make sure we reset back to our starting state, especially making sure that we have disabled poll in the register cache. Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Diffstat (limited to 'drivers/extcon')
-rw-r--r--drivers/extcon/extcon-arizona.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/extcon/extcon-arizona.c b/drivers/extcon/extcon-arizona.c
index 5775f05..fefb856 100644
--- a/drivers/extcon/extcon-arizona.c
+++ b/drivers/extcon/extcon-arizona.c
@@ -603,9 +603,15 @@ static irqreturn_t arizona_hpdet_irq(int irq, void *data)
dev_err(arizona->dev, "Failed to report HP/line: %d\n",
ret);
+done:
+ /* Reset back to starting range */
+ regmap_update_bits(arizona->regmap,
+ ARIZONA_HEADPHONE_DETECT_1,
+ ARIZONA_HP_IMPEDANCE_RANGE_MASK | ARIZONA_HP_POLL,
+ 0);
+
arizona_extcon_do_magic(info, 0);
-done:
if (id_gpio)
gpio_set_value_cansleep(id_gpio, 0);