Merge tag 'mfd-3.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / mfd / arizona-core.c
index c784f46..bc8a3ed 100644 (file)
@@ -292,6 +292,7 @@ int arizona_dev_init(struct arizona *arizona)
        struct device *dev = arizona->dev;
        const char *type_name;
        unsigned int reg, val;
+       int (*apply_patch)(struct arizona *) = NULL;
        int ret, i;
 
        dev_set_drvdata(arizona->dev, arizona);
@@ -391,7 +392,7 @@ int arizona_dev_init(struct arizona *arizona)
                                arizona->type);
                        arizona->type = WM5102;
                }
-               ret = wm5102_patch(arizona);
+               apply_patch = wm5102_patch;
                break;
 #endif
 #ifdef CONFIG_MFD_WM5110
@@ -402,7 +403,7 @@ int arizona_dev_init(struct arizona *arizona)
                                arizona->type);
                        arizona->type = WM5110;
                }
-               ret = wm5110_patch(arizona);
+               apply_patch = wm5110_patch;
                break;
 #endif
        default:
@@ -412,9 +413,6 @@ int arizona_dev_init(struct arizona *arizona)
 
        dev_info(dev, "%s revision %c\n", type_name, arizona->rev + 'A');
 
-       if (ret != 0)
-               dev_err(arizona->dev, "Failed to apply patch: %d\n", ret);
-
        /* If we have a /RESET GPIO we'll already be reset */
        if (!arizona->pdata.reset) {
                regcache_mark_dirty(arizona->regmap);
@@ -438,6 +436,15 @@ int arizona_dev_init(struct arizona *arizona)
                goto err_reset;
        }
 
+       if (apply_patch) {
+               ret = apply_patch(arizona);
+               if (ret != 0) {
+                       dev_err(arizona->dev, "Failed to apply patch: %d\n",
+                               ret);
+                       goto err_reset;
+               }
+       }
+
        for (i = 0; i < ARRAY_SIZE(arizona->pdata.gpio_defaults); i++) {
                if (!arizona->pdata.gpio_defaults[i])
                        continue;