aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/watchdog/geodewdt.c
diff options
context:
space:
mode:
authorJean Delvare <jdelvare@suse.de>2014-03-14 08:16:47 -0400
committerWim Van Sebroeck <wim@iguana.be>2014-03-31 07:35:05 -0400
commit78411be4c7136054dab4635d2dbd848c3c9f7eae (patch)
tree8bb04653044e7069663a207d4bc1c08ccd7d361b /drivers/watchdog/geodewdt.c
parentacaaaf62c94a786f68b35cd06979fbd2fcedc89b (diff)
watchdog: geodewdt: 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>
Diffstat (limited to 'drivers/watchdog/geodewdt.c')
-rw-r--r--drivers/watchdog/geodewdt.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/drivers/watchdog/geodewdt.c b/drivers/watchdog/geodewdt.c
index 4a6ae84b42bc..4c43e3fa8bd2 100644
--- a/drivers/watchdog/geodewdt.c
+++ b/drivers/watchdog/geodewdt.c
@@ -215,7 +215,7 @@ static struct miscdevice geodewdt_miscdev = {
215 .fops = &geodewdt_fops, 215 .fops = &geodewdt_fops,
216}; 216};
217 217
218static int geodewdt_probe(struct platform_device *dev) 218static int __init geodewdt_probe(struct platform_device *dev)
219{ 219{
220 int ret; 220 int ret;
221 221
@@ -255,7 +255,6 @@ static void geodewdt_shutdown(struct platform_device *dev)
255} 255}
256 256
257static struct platform_driver geodewdt_driver = { 257static struct platform_driver geodewdt_driver = {
258 .probe = geodewdt_probe,
259 .remove = geodewdt_remove, 258 .remove = geodewdt_remove,
260 .shutdown = geodewdt_shutdown, 259 .shutdown = geodewdt_shutdown,
261 .driver = { 260 .driver = {
@@ -268,20 +267,18 @@ static int __init geodewdt_init(void)
268{ 267{
269 int ret; 268 int ret;
270 269
271 ret = platform_driver_register(&geodewdt_driver);
272 if (ret)
273 return ret;
274
275 geodewdt_platform_device = platform_device_register_simple(DRV_NAME, 270 geodewdt_platform_device = platform_device_register_simple(DRV_NAME,
276 -1, NULL, 0); 271 -1, NULL, 0);
277 if (IS_ERR(geodewdt_platform_device)) { 272 if (IS_ERR(geodewdt_platform_device))
278 ret = PTR_ERR(geodewdt_platform_device); 273 return PTR_ERR(geodewdt_platform_device);
274
275 ret = platform_driver_probe(&geodewdt_driver, geodewdt_probe);
276 if (ret)
279 goto err; 277 goto err;
280 }
281 278
282 return 0; 279 return 0;
283err: 280err:
284 platform_driver_unregister(&geodewdt_driver); 281 platform_device_unregister(geodewdt_platform_device);
285 return ret; 282 return ret;
286} 283}
287 284