mfd: twl-core: Move 'inuse' check early at probe time
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Wed, 16 Jan 2013 13:53:56 +0000 (14:53 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Wed, 13 Feb 2013 23:22:51 +0000 (00:22 +0100)
We can fail earlier in case multiple instance of the twl-core is tried to
be loaded.
The twl-core by design only supports one instance.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/twl-core.c

index 547fed540ef74eae5b8d6f94fd68e118ee8eb2b5..18270881106587b40c7be7ce7a8dc0bd6d066de4 100644 (file)
@@ -1170,6 +1170,12 @@ twl_probe(struct i2c_client *client, const struct i2c_device_id *id)
                return -EINVAL;
        }
 
+       if (inuse) {
+               dev_dbg(&client->dev, "only one instance of %s allowed\n",
+                       DRIVER_NAME);
+               return -EBUSY;
+       }
+
        pdev = platform_device_alloc(DRIVER_NAME, -1);
        if (!pdev) {
                dev_err(&client->dev, "can't alloc pdev\n");
@@ -1188,12 +1194,6 @@ twl_probe(struct i2c_client *client, const struct i2c_device_id *id)
                goto free;
        }
 
-       if (inuse) {
-               dev_dbg(&client->dev, "driver is already in use\n");
-               status = -EBUSY;
-               goto free;
-       }
-
        if ((id->driver_data) & TWL6030_CLASS) {
                twl_id = TWL6030_CLASS_ID;
                twl_map = &twl6030_map[0];