]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
mfd: arizona: Support configuring MICBIASes into bypass mode
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 29 Jan 2013 10:44:41 +0000 (18:44 +0800)
committerSamuel Ortiz <sameo@linux.intel.com>
Mon, 8 Apr 2013 13:20:58 +0000 (15:20 +0200)
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/arizona-core.c
include/linux/mfd/arizona/pdata.h

index 0962c558dc02073559033a4c36f7105d7e55bc6b..dd679e8601daf5d254a0a692406c441b6e0b98ff 100644 (file)
@@ -514,10 +514,16 @@ int 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)
@@ -529,10 +535,14 @@ int 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);
        }
 
index 8755dd05ab785df710683c9c4b13b15ea81a08d2..554d903cdf41a4cf8fc8af7f376a4e4ed3a3d747 100644 (file)
@@ -78,6 +78,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 {