From bbcb9f6ab26a6ebe995200b2a186ba1f75374512 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Tue, 5 Feb 2013 20:20:17 +0000 Subject: [PATCH] --- yaml --- r: 355079 b: refs/heads/master c: bf14ee5a460276a99ed35f9034bae9e74b01600f h: refs/heads/master i: 355077: 27bae3c11bed5fbbd788b4af55fb5100036c2a94 355075: 74471ece5e491edc21668567595cad37d1ec28a8 355071: e26e593b2bf37e74c9fa8070a8e3d9980869c31d v: v3 --- [refs] | 2 +- trunk/drivers/extcon/extcon-arizona.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 726111f87ac5..b69fe93238d6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c37b387f077c54c5a01fa240dc8448b60bd731c1 +refs/heads/master: bf14ee5a460276a99ed35f9034bae9e74b01600f diff --git a/trunk/drivers/extcon/extcon-arizona.c b/trunk/drivers/extcon/extcon-arizona.c index d9918421e80b..dc357a4051f6 100644 --- a/trunk/drivers/extcon/extcon-arizona.c +++ b/trunk/drivers/extcon/extcon-arizona.c @@ -56,6 +56,7 @@ struct arizona_extcon_info { struct delayed_work hpdet_work; bool hpdet_active; + bool hpdet_done; int num_hpdet_res; unsigned int hpdet_res[3]; @@ -394,7 +395,6 @@ static int arizona_hpdet_do_id(struct arizona_extcon_info *info, int *reading) { struct arizona *arizona = info->arizona; int id_gpio = arizona->pdata.hpdet_id_gpio; - int ret; /* * If we're using HPDET for accessory identification we need @@ -463,13 +463,7 @@ static int arizona_hpdet_do_id(struct arizona_extcon_info *info, int *reading) (id_gpio && info->hpdet_res[2] > 10)) { dev_dbg(arizona->dev, "Detected mic\n"); info->mic = true; - ret = extcon_set_cable_state_(&info->edev, - ARIZONA_CABLE_MICROPHONE, - true); - if (ret != 0) { - dev_err(arizona->dev, - "Failed to report mic: %d\n", ret); - } + info->detecting = true; } else { dev_dbg(arizona->dev, "Detected headphone\n"); } @@ -586,6 +580,8 @@ static irqreturn_t arizona_hpdet_irq(int irq, void *data) info->hpdet_active = false; } + info->hpdet_done = true; + out: mutex_unlock(&info->lock); @@ -597,6 +593,9 @@ static void arizona_identify_headphone(struct arizona_extcon_info *info) struct arizona *arizona = info->arizona; int ret; + if (info->hpdet_done) + return; + dev_dbg(arizona->dev, "Starting HPDET\n"); /* Make sure we keep the device enabled during the measurement */ @@ -923,6 +922,7 @@ static irqreturn_t arizona_jackdet(int irq, void *data) for (i = 0; i < ARRAY_SIZE(info->hpdet_res); i++) info->hpdet_res[i] = 0; info->mic = false; + info->hpdet_done = false; for (i = 0; i < ARIZONA_NUM_BUTTONS; i++) input_report_key(info->input,