diff options
author | Jean Delvare <jdelvare@suse.de> | 2014-03-14 13:18:47 +0100 |
---|---|---|
committer | Wim Van Sebroeck <wim@iguana.be> | 2014-03-31 13:35:26 +0200 |
commit | 996735ffd4560ee12d8dd98ad9d27379ee943890 (patch) | |
tree | 13988707574e0cf78ce408558d04317b927b6236 | |
parent | 78411be4c7136054dab4635d2dbd848c3c9f7eae (diff) | |
download | op-kernel-dev-996735ffd4560ee12d8dd98ad9d27379ee943890.zip op-kernel-dev-996735ffd4560ee12d8dd98ad9d27379ee943890.tar.gz |
watchdog: ib700wdt: Use platform_driver_probe
Using platform_driver_probe instead of platform_driver_register has
two benefits:
* The driver will fail to load if device probing fails.
* The probe function can be marked __init.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
-rw-r--r-- | drivers/watchdog/ib700wdt.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/drivers/watchdog/ib700wdt.c b/drivers/watchdog/ib700wdt.c index 7ae3669..4247c49 100644 --- a/drivers/watchdog/ib700wdt.c +++ b/drivers/watchdog/ib700wdt.c @@ -277,7 +277,7 @@ static struct miscdevice ibwdt_miscdev = { * Init & exit routines */ -static int ibwdt_probe(struct platform_device *dev) +static int __init ibwdt_probe(struct platform_device *dev) { int res; @@ -336,7 +336,6 @@ static void ibwdt_shutdown(struct platform_device *dev) } static struct platform_driver ibwdt_driver = { - .probe = ibwdt_probe, .remove = ibwdt_remove, .shutdown = ibwdt_shutdown, .driver = { @@ -351,21 +350,19 @@ static int __init ibwdt_init(void) pr_info("WDT driver for IB700 single board computer initialising\n"); - err = platform_driver_register(&ibwdt_driver); - if (err) - return err; - ibwdt_platform_device = platform_device_register_simple(DRV_NAME, -1, NULL, 0); - if (IS_ERR(ibwdt_platform_device)) { - err = PTR_ERR(ibwdt_platform_device); - goto unreg_platform_driver; - } + if (IS_ERR(ibwdt_platform_device)) + return PTR_ERR(ibwdt_platform_device); + + err = platform_driver_probe(&ibwdt_driver, ibwdt_probe); + if (err) + goto unreg_platform_device; return 0; -unreg_platform_driver: - platform_driver_unregister(&ibwdt_driver); +unreg_platform_device: + platform_device_unregister(ibwdt_platform_device); return err; } |