mfd: wm5102: Don't wait for boot when boot sequencer is disabled
authorCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Wed, 3 Apr 2013 08:45:29 +0000 (09:45 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Mon, 8 Apr 2013 13:21:03 +0000 (15:21 +0200)
As we are using a custom boot sequence we don't need to wait for the
standard boot sequence in device init when the normal write sequence is
disabled.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/arizona-core.c

index 41856b4c0d173797263d4508a6cc958a86e980c5..6ab03043fd609a23cf95f4061b6a1a1fca799b34 100644 (file)
@@ -600,10 +600,24 @@ int arizona_dev_init(struct arizona *arizona)
                }
        }
 
-       ret = arizona_wait_for_boot(arizona);
-       if (ret != 0) {
-               dev_err(arizona->dev, "Device failed initial boot: %d\n", ret);
-               goto err_reset;
+       switch (arizona->type) {
+       case WM5102:
+               ret = regmap_read(arizona->regmap, 0x19, &val);
+               if (ret != 0)
+                       dev_err(dev,
+                               "Failed to check write sequencer state: %d\n",
+                               ret);
+               else if (val & 0x01)
+                       break;
+               /* Fall through */
+       default:
+               ret = arizona_wait_for_boot(arizona);
+               if (ret != 0) {
+                       dev_err(arizona->dev,
+                               "Device failed initial boot: %d\n", ret);
+                       goto err_reset;
+               }
+               break;
        }
 
        if (apply_patch) {