From: Charles Keepax Date: Thu, 14 Nov 2013 16:18:22 +0000 (+0000) Subject: extcon: arizona: Fix reset of HPDET after race with removal X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=a3e00d4bd8011f2fe5100e1a0d3a01cc2afaa187;p=deliverable%2Flinux.git 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 Signed-off-by: Chanwoo Choi --- diff --git a/drivers/extcon/extcon-arizona.c b/drivers/extcon/extcon-arizona.c index 5775f055bd02..fefb8563db9e 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);