OSDN Git Service

mfd: max8925: Fix mfd device register failure
authorQing Xu <qingx@marvell.com>
Mon, 4 Feb 2013 15:40:43 +0000 (23:40 +0800)
committerSamuel Ortiz <sameo@linux.intel.com>
Wed, 13 Feb 2013 23:23:00 +0000 (00:23 +0100)
we encounter rtc/power/touch driver registry failure, root cause
it is resources confilict in insert_resouce, solved by changing
mfd_add_devices 5th parameter to NULL

Signed-off-by: Qing Xu <qingx@marvell.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/max8925-core.c

index 0ad8d9a..d7abbb3 100644 (file)
@@ -859,7 +859,7 @@ int max8925_device_init(struct max8925_chip *chip,
 
        ret = mfd_add_devices(chip->dev, 0, &rtc_devs[0],
                              ARRAY_SIZE(rtc_devs),
-                             &rtc_resources[0], chip->irq_base, NULL);
+                             NULL, chip->irq_base, NULL);
        if (ret < 0) {
                dev_err(chip->dev, "Failed to add rtc subdev\n");
                goto out;
@@ -867,7 +867,7 @@ int max8925_device_init(struct max8925_chip *chip,
 
        ret = mfd_add_devices(chip->dev, 0, &onkey_devs[0],
                              ARRAY_SIZE(onkey_devs),
-                             &onkey_resources[0], 0, NULL);
+                             NULL, 0, NULL);
        if (ret < 0) {
                dev_err(chip->dev, "Failed to add onkey subdev\n");
                goto out_dev;
@@ -886,21 +886,19 @@ int max8925_device_init(struct max8925_chip *chip,
                goto out_dev;
        }
 
-       if (pdata && pdata->power) {
-               ret = mfd_add_devices(chip->dev, 0, &power_devs[0],
-                                     ARRAY_SIZE(power_devs),
-                                     &power_supply_resources[0], 0, NULL);
-               if (ret < 0) {
-                       dev_err(chip->dev,
-                               "Failed to add power supply subdev\n");
-                       goto out_dev;
-               }
+       ret = mfd_add_devices(chip->dev, 0, &power_devs[0],
+                             ARRAY_SIZE(power_devs),
+                             NULL, 0, NULL);
+       if (ret < 0) {
+               dev_err(chip->dev,
+                       "Failed to add power supply subdev, err = %d\n", ret);
+               goto out_dev;
        }
 
        if (pdata && pdata->touch) {
                ret = mfd_add_devices(chip->dev, 0, &touch_devs[0],
                                      ARRAY_SIZE(touch_devs),
-                                     &touch_resources[0], 0, NULL);
+                                     NULL, chip->tsc_irq, NULL);
                if (ret < 0) {
                        dev_err(chip->dev, "Failed to add touch subdev\n");
                        goto out_dev;