extcon: arizona: Allow pull to be disabled on GPIO5 when used for JACKET
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 1 Apr 2013 18:03:52 +0000 (19:03 +0100)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 2 Apr 2013 10:53:54 +0000 (11:53 +0100)
In some designs an external pull won't be needed.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/extcon/extcon-arizona.c
include/linux/mfd/arizona/pdata.h

index 95748d3cbc4efe79118a906c88b769f5fafa57d8..132bc99fdc06f9c479add9d879cbd04024b4e87c 100644 (file)
@@ -986,6 +986,7 @@ static int arizona_extcon_probe(struct platform_device *pdev)
        struct arizona *arizona = dev_get_drvdata(pdev->dev.parent);
        struct arizona_pdata *pdata;
        struct arizona_extcon_info *info;
+       unsigned int val;
        int jack_irq_fall, jack_irq_rise;
        int ret, mode, i, j;
 
@@ -1172,9 +1173,13 @@ static int arizona_extcon_probe(struct platform_device *pdev)
         */
        if (info->micd_clamp) {
                if (arizona->pdata.jd_gpio5) {
-                       /* Put the GPIO into input mode */
+                       /* Put the GPIO into input mode with optional pull */
+                       val = 0xc101;
+                       if (arizona->pdata.jd_gpio5_nopull)
+                               val &= ~ARIZONA_GPN_PU;
+
                        regmap_write(arizona->regmap, ARIZONA_GPIO5_CTRL,
-                                    0xc101);
+                                    val);
 
                        regmap_update_bits(arizona->regmap,
                                           ARIZONA_MICD_CLAMP_CONTROL,
index eb11a8ac6db2b171e8154b7d53282660bf1378d7..008b8c40549f05f3c7900e014bc2014c73c3ffca 100644 (file)
@@ -122,6 +122,9 @@ struct arizona_pdata {
        /** GPIO5 is used for jack detection */
        bool jd_gpio5;
 
+       /** Internal pull on GPIO5 is disabled when used for jack detection */
+       bool jd_gpio5_nopull;
+
        /** Use the headphone detect circuit to identify the accessory */
        bool hpdet_acc_id;