mfd: arizona: Add DT options for max_channels_clocked and PDM speaker config
[cascardo/linux.git] / drivers / mfd / dm355evm_msp.c
index 14661ec..86eca61 100644 (file)
@@ -199,11 +199,8 @@ static struct device *add_child(struct i2c_client *client, const char *name,
        int                     status;
 
        pdev = platform_device_alloc(name, -1);
-       if (!pdev) {
-               dev_dbg(&client->dev, "can't alloc dev\n");
-               status = -ENOMEM;
-               goto err;
-       }
+       if (!pdev)
+               return ERR_PTR(-ENOMEM);
 
        device_init_wakeup(&pdev->dev, can_wakeup);
        pdev->dev.parent = &client->dev;
@@ -212,7 +209,7 @@ static struct device *add_child(struct i2c_client *client, const char *name,
                status = platform_device_add_data(pdev, pdata, pdata_len);
                if (status < 0) {
                        dev_dbg(&pdev->dev, "can't add platform_data\n");
-                       goto err;
+                       goto put_device;
                }
        }
 
@@ -225,19 +222,20 @@ static struct device *add_child(struct i2c_client *client, const char *name,
                status = platform_device_add_resources(pdev, &r, 1);
                if (status < 0) {
                        dev_dbg(&pdev->dev, "can't add irq\n");
-                       goto err;
+                       goto put_device;
                }
        }
 
        status = platform_device_add(pdev);
+       if (status)
+               goto put_device;
 
-err:
-       if (status < 0) {
-               platform_device_put(pdev);
-               dev_err(&client->dev, "can't add %s dev\n", name);
-               return ERR_PTR(status);
-       }
        return &pdev->dev;
+
+put_device:
+       platform_device_put(pdev);
+       dev_err(&client->dev, "failed to add device %s\n", name);
+       return ERR_PTR(status);
 }
 
 static int add_children(struct i2c_client *client)