diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2023-12-07 15:09:31 +0100 |
---|---|---|
committer | Guenter Roeck <linux@roeck-us.net> | 2024-01-02 17:44:57 +0100 |
commit | 581076958ee6455588fe3d3368d5e0db3c2d0c69 (patch) | |
tree | d2e0990564e1dcbbe6868f38992ee2bc3a80fd9f /drivers/hwmon | |
parent | hwmon: (smsc47m1) Convert to platform remove callback returning void (diff) | |
download | linux-581076958ee6455588fe3d3368d5e0db3c2d0c69.tar.xz linux-581076958ee6455588fe3d3368d5e0db3c2d0c69.zip |
hwmon: (smsc47m1) Simplify device registration
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>
Diffstat (limited to 'drivers/hwmon')
-rw-r--r-- | drivers/hwmon/smsc47m1.c | 43 |
1 files changed, 13 insertions, 30 deletions
diff --git a/drivers/hwmon/smsc47m1.c b/drivers/hwmon/smsc47m1.c index bda39a5a5d4c..a17fbe969317 100644 --- a/drivers/hwmon/smsc47m1.c +++ b/drivers/hwmon/smsc47m1.c @@ -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) |