Signed-off-by: Mark Brown <[email protected]>
---
 drivers/extcon/extcon-arizona.c   |   13 ++++++++++---
 include/linux/mfd/arizona/pdata.h |    3 +++
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/drivers/extcon/extcon-arizona.c b/drivers/extcon/extcon-arizona.c
index c7f8eb4..7a1b4a7 100644
--- a/drivers/extcon/extcon-arizona.c
+++ b/drivers/extcon/extcon-arizona.c
@@ -42,7 +42,7 @@
 #define ARIZONA_HPDET_MAX 10000
 
 #define HPDET_DEBOUNCE 500
-#define MICD_TIMEOUT 2000
+#define DEFAULT_MICD_TIMEOUT 2000
 
 struct arizona_extcon_info {
        struct device *dev;
@@ -60,6 +60,8 @@ struct arizona_extcon_info {
        const struct arizona_micd_range *micd_ranges;
        int num_micd_ranges;
 
+       int micd_timeout;
+
        bool micd_reva;
        bool micd_clamp;
 
@@ -889,7 +891,7 @@ static void arizona_micd_detect(struct work_struct *work)
 handled:
        if (info->detecting)
                schedule_delayed_work(&info->micd_timeout_work,
-                                     msecs_to_jiffies(MICD_TIMEOUT));
+                                     msecs_to_jiffies(info->micd_timeout));
 
        pm_runtime_mark_last_busy(info->dev);
        mutex_unlock(&info->lock);
@@ -970,7 +972,7 @@ static irqreturn_t arizona_jackdet(int irq, void *data)
 
                if (cancelled_mic)
                        schedule_delayed_work(&info->micd_timeout_work,
-                                             msecs_to_jiffies(MICD_TIMEOUT));
+                                             
msecs_to_jiffies(info->micd_timeout));
 
                goto out;
        }
@@ -1027,6 +1029,11 @@ static irqreturn_t arizona_jackdet(int irq, void *data)
                                   ARIZONA_MICD_CLAMP_DB | ARIZONA_JD1_DB);
        }
 
+       if (arizona->pdata.micd_timeout)
+               info->micd_timeout = arizona->pdata.micd_timeout;
+       else
+               info->micd_timeout = DEFAULT_MICD_TIMEOUT;
+
        /* Clear trig_sts to make sure DCVDD is not forced up */
        regmap_write(arizona->regmap, ARIZONA_AOD_WKUP_AND_TRIG,
                     ARIZONA_MICD_CLAMP_FALL_TRIG_STS |
diff --git a/include/linux/mfd/arizona/pdata.h 
b/include/linux/mfd/arizona/pdata.h
index 3ef300b..a0f9409 100644
--- a/include/linux/mfd/arizona/pdata.h
+++ b/include/linux/mfd/arizona/pdata.h
@@ -149,6 +149,9 @@ struct arizona_pdata {
        /** Mic detect debounce level */
        int micd_dbtime;
 
+       /** Mic detect timeout (ms) */
+       int micd_timeout;
+
        /** Force MICBIAS on for mic detect */
        bool micd_force_micbias;
 
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to