Signed-off-by: Mark Brown <broo...@opensource.wolfsonmicro.com>
---
 drivers/mfd/arizona-core.c        |   12 +++++++++++-
 include/linux/mfd/arizona/pdata.h |    1 +
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c
index d12f21b..07fc2c1 100644
--- a/drivers/mfd/arizona-core.c
+++ b/drivers/mfd/arizona-core.c
@@ -532,10 +532,16 @@ int __devinit arizona_dev_init(struct arizona *arizona)
        }
 
        for (i = 0; i < ARIZONA_MAX_MICBIAS; i++) {
-               if (!arizona->pdata.micbias[i].mV)
+               if (!arizona->pdata.micbias[i].mV &&
+                   !arizona->pdata.micbias[i].bypass)
                        continue;
 
+               /* Apply default for bypass mode */
+               if (!arizona->pdata.micbias[i].mV)
+                       arizona->pdata.micbias[i].mV = 2800;
+
                val = (arizona->pdata.micbias[i].mV - 1500) / 100;
+
                val <<= ARIZONA_MICB1_LVL_SHIFT;
 
                if (arizona->pdata.micbias[i].ext_cap)
@@ -547,10 +553,14 @@ int __devinit arizona_dev_init(struct arizona *arizona)
                if (arizona->pdata.micbias[i].fast_start)
                        val |= ARIZONA_MICB1_RATE;
 
+               if (arizona->pdata.micbias[i].bypass)
+                       val |= ARIZONA_MICB1_BYPASS;
+
                regmap_update_bits(arizona->regmap,
                                   ARIZONA_MIC_BIAS_CTRL_1 + i,
                                   ARIZONA_MICB1_LVL_MASK |
                                   ARIZONA_MICB1_DISCH |
+                                  ARIZONA_MICB1_BYPASS |
                                   ARIZONA_MICB1_RATE, val);
        }
 
diff --git a/include/linux/mfd/arizona/pdata.h 
b/include/linux/mfd/arizona/pdata.h
index d27fbd7..b09fa93 100644
--- a/include/linux/mfd/arizona/pdata.h
+++ b/include/linux/mfd/arizona/pdata.h
@@ -85,6 +85,7 @@ struct arizona_micbias {
        unsigned int ext_cap:1;    /** External capacitor fitted */
        unsigned int discharge:1;  /** Actively discharge */
        unsigned int fast_start:1; /** Enable aggressive startup ramp rate */
+       unsigned int bypass:1;     /** Use bypass mode */
 };
 
 struct arizona_micd_config {
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
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