]> git.itanic.dy.fi Git - linux-stable/commitdiff
hwmon: (smsc47m1) Simplify device registration
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Thu, 7 Dec 2023 14:09:31 +0000 (15:09 +0100)
committerGuenter Roeck <linux@roeck-us.net>
Tue, 2 Jan 2024 16:44:57 +0000 (08:44 -0800)
Use platform_device_register_full() instead of open coding this
function.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Link: https://lore.kernel.org/r/ab326fb9b1ad2191583b4cb3a8bd624dfedb908e.1701957841.git.u.kleine-koenig@pengutronix.de
[groeck: Removed double empty line]
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/smsc47m1.c

index bda39a5a5d4cbc9cc21ae200e60a696e51956903..a17fbe969317cf8e033e6ae985ef1ce2f5d0a8e9 100644 (file)
@@ -864,50 +864,33 @@ static struct platform_driver smsc47m1_driver __refdata = {
 static int __init smsc47m1_device_add(unsigned short address,
                                      const struct smsc47m1_sio_data *sio_data)
 {
-       struct resource res = {
+       const struct resource res = {
                .start  = address,
                .end    = address + SMSC_EXTENT - 1,
                .name   = DRVNAME,
                .flags  = IORESOURCE_IO,
        };
+       const struct platform_device_info pdevinfo = {
+               .name = DRVNAME,
+               .id = address,
+               .res = &res,
+               .num_res = 1,
+               .data = sio_data,
+               .size_data = sizeof(struct smsc47m1_sio_data),
+       };
        int err;
 
        err = smsc47m1_handle_resources(address, sio_data->type, CHECK, NULL);
        if (err)
-               goto exit;
+               return err;
 
-       pdev = platform_device_alloc(DRVNAME, address);
-       if (!pdev) {
-               err = -ENOMEM;
+       pdev = platform_device_register_full(&pdevinfo);
+       if (IS_ERR(pdev)) {
                pr_err("Device allocation failed\n");
-               goto exit;
-       }
-
-       err = platform_device_add_resources(pdev, &res, 1);
-       if (err) {
-               pr_err("Device resource addition failed (%d)\n", err);
-               goto exit_device_put;
-       }
-
-       err = platform_device_add_data(pdev, sio_data,
-                                      sizeof(struct smsc47m1_sio_data));
-       if (err) {
-               pr_err("Platform data allocation failed\n");
-               goto exit_device_put;
-       }
-
-       err = platform_device_add(pdev);
-       if (err) {
-               pr_err("Device addition failed (%d)\n", err);
-               goto exit_device_put;
+               return PTR_ERR(pdev);
        }
 
        return 0;
-
-exit_device_put:
-       platform_device_put(pdev);
-exit:
-       return err;
 }
 
 static int __init sm_smsc47m1_init(void)