]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/mfd/mc13xxx-core.c
tulip: Poll link status more frequently for Comet chips
[karo-tx-linux.git] / drivers / mfd / mc13xxx-core.c
index 0c6c21c5b1a841250a0f1b457005ccff1482d19c..acf5dd712eb297667ea7f0814a0cedb9241e009e 100644 (file)
@@ -660,34 +660,22 @@ int mc13xxx_common_init(struct device *dev)
        if (ret)
                return ret;
 
+       mutex_init(&mc13xxx->lock);
+
        ret = request_threaded_irq(mc13xxx->irq, NULL, mc13xxx_irq_thread,
                        IRQF_ONESHOT | IRQF_TRIGGER_HIGH, "mc13xxx", mc13xxx);
        if (ret)
                return ret;
 
-       mutex_init(&mc13xxx->lock);
-
        if (mc13xxx_probe_flags_dt(mc13xxx) < 0 && pdata)
                mc13xxx->flags = pdata->flags;
 
        if (mc13xxx->flags & MC13XXX_USE_ADC)
                mc13xxx_add_subdevice(mc13xxx, "%s-adc");
 
-       if (mc13xxx->flags & MC13XXX_USE_CODEC) {
-               if (pdata)
-                       mc13xxx_add_subdevice_pdata(mc13xxx, "%s-codec",
-                               pdata->codec, sizeof(*pdata->codec));
-               else
-                       mc13xxx_add_subdevice(mc13xxx, "%s-codec");
-       }
-
        if (mc13xxx->flags & MC13XXX_USE_RTC)
                mc13xxx_add_subdevice(mc13xxx, "%s-rtc");
 
-       if (mc13xxx->flags & MC13XXX_USE_TOUCHSCREEN)
-               mc13xxx_add_subdevice_pdata(mc13xxx, "%s-ts",
-                               &pdata->touch, sizeof(pdata->touch));
-
        if (pdata) {
                mc13xxx_add_subdevice_pdata(mc13xxx, "%s-regulator",
                        &pdata->regulators, sizeof(pdata->regulators));
@@ -695,10 +683,20 @@ int mc13xxx_common_init(struct device *dev)
                                pdata->leds, sizeof(*pdata->leds));
                mc13xxx_add_subdevice_pdata(mc13xxx, "%s-pwrbutton",
                                pdata->buttons, sizeof(*pdata->buttons));
+               if (mc13xxx->flags & MC13XXX_USE_CODEC)
+                       mc13xxx_add_subdevice_pdata(mc13xxx, "%s-codec",
+                               pdata->codec, sizeof(*pdata->codec));
+               if (mc13xxx->flags & MC13XXX_USE_TOUCHSCREEN)
+                       mc13xxx_add_subdevice_pdata(mc13xxx, "%s-ts",
+                               &pdata->touch, sizeof(pdata->touch));
        } else {
                mc13xxx_add_subdevice(mc13xxx, "%s-regulator");
                mc13xxx_add_subdevice(mc13xxx, "%s-led");
                mc13xxx_add_subdevice(mc13xxx, "%s-pwrbutton");
+               if (mc13xxx->flags & MC13XXX_USE_CODEC)
+                       mc13xxx_add_subdevice(mc13xxx, "%s-codec");
+               if (mc13xxx->flags & MC13XXX_USE_TOUCHSCREEN)
+                       mc13xxx_add_subdevice(mc13xxx, "%s-ts");
        }
 
        return 0;