Merge tag 'for-v3.19/omap-a' of git://git.kernel.org/pub/scm/linux/kernel/git/pjw...
[cascardo/linux.git] / drivers / mfd / arizona-core.c
index 10a0cb9..bce7c07 100644 (file)
@@ -393,18 +393,6 @@ static int arizona_runtime_resume(struct device *dev)
                break;
        }
 
-       switch (arizona->type) {
-       case WM5102:
-               ret = wm5102_patch(arizona);
-               if (ret != 0) {
-                       dev_err(arizona->dev, "Failed to apply patch: %d\n",
-                               ret);
-                       goto err;
-               }
-       default:
-               break;
-       }
-
        ret = regcache_sync(arizona->regmap);
        if (ret != 0) {
                dev_err(arizona->dev, "Failed to restore register cache\n");
@@ -534,7 +522,11 @@ EXPORT_SYMBOL_GPL(arizona_of_get_named_gpio);
 static int arizona_of_get_core_pdata(struct arizona *arizona)
 {
        struct arizona_pdata *pdata = &arizona->pdata;
+       struct property *prop;
+       const __be32 *cur;
+       u32 val;
        int ret, i;
+       int count = 0;
 
        pdata->reset = arizona_of_get_named_gpio(arizona, "wlf,reset", true);
 
@@ -560,6 +552,15 @@ static int arizona_of_get_core_pdata(struct arizona *arizona)
                        ret);
        }
 
+       of_property_for_each_u32(arizona->dev->of_node, "wlf,inmode", prop,
+                                cur, val) {
+               if (count == ARRAY_SIZE(arizona->pdata.inmode))
+                       break;
+
+               arizona->pdata.inmode[count] = val;
+               count++;
+       }
+
        return 0;
 }
 
@@ -784,7 +785,8 @@ int arizona_dev_init(struct arizona *arizona)
        /* Ensure device startup is complete */
        switch (arizona->type) {
        case WM5102:
-               ret = regmap_read(arizona->regmap, 0x19, &val);
+               ret = regmap_read(arizona->regmap,
+                                 ARIZONA_WRITE_SEQUENCER_CTRL_3, &val);
                if (ret != 0)
                        dev_err(dev,
                                "Failed to check write sequencer state: %d\n",
@@ -945,6 +947,7 @@ int arizona_dev_init(struct arizona *arizona)
                regmap_update_bits(arizona->regmap,
                                   ARIZONA_MIC_BIAS_CTRL_1 + i,
                                   ARIZONA_MICB1_LVL_MASK |
+                                  ARIZONA_MICB1_EXT_CAP |
                                   ARIZONA_MICB1_DISCH |
                                   ARIZONA_MICB1_BYPASS |
                                   ARIZONA_MICB1_RATE, val);