aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Reding <treding@nvidia.com>2015-12-02 11:32:53 -0500
committerMark Brown <broonie@kernel.org>2015-12-02 14:37:31 -0500
commit92a513b79f942dd86f906512352e2c6d7eca1d8b (patch)
tree13b6ec75af5fcdcca920a9ee8a7c759814d9d871
parent55e03e9c2d6909fd449cdcec9e933f6907f4820e (diff)
regulator: wm831x-ldo: Use platform_register/unregister_drivers()
These new helpers simplify implementing multi-driver modules and properly handle failure to register one driver by unregistering all previously registered drivers. Signed-off-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--drivers/regulator/wm831x-ldo.c27
1 files changed, 8 insertions, 19 deletions
diff --git a/drivers/regulator/wm831x-ldo.c b/drivers/regulator/wm831x-ldo.c
index 5a7b65e8a529..9ad2a29617e2 100644
--- a/drivers/regulator/wm831x-ldo.c
+++ b/drivers/regulator/wm831x-ldo.c
@@ -653,32 +653,21 @@ static struct platform_driver wm831x_alive_ldo_driver = {
653 }, 653 },
654}; 654};
655 655
656static struct platform_driver * const drivers[] = {
657 &wm831x_gp_ldo_driver,
658 &wm831x_aldo_driver,
659 &wm831x_alive_ldo_driver,
660};
661
656static int __init wm831x_ldo_init(void) 662static int __init wm831x_ldo_init(void)
657{ 663{
658 int ret; 664 return platform_register_drivers(drivers, ARRAY_SIZE(drivers));
659
660 ret = platform_driver_register(&wm831x_gp_ldo_driver);
661 if (ret != 0)
662 pr_err("Failed to register WM831x GP LDO driver: %d\n", ret);
663
664 ret = platform_driver_register(&wm831x_aldo_driver);
665 if (ret != 0)
666 pr_err("Failed to register WM831x ALDO driver: %d\n", ret);
667
668 ret = platform_driver_register(&wm831x_alive_ldo_driver);
669 if (ret != 0)
670 pr_err("Failed to register WM831x alive LDO driver: %d\n",
671 ret);
672
673 return 0;
674} 665}
675subsys_initcall(wm831x_ldo_init); 666subsys_initcall(wm831x_ldo_init);
676 667
677static void __exit wm831x_ldo_exit(void) 668static void __exit wm831x_ldo_exit(void)
678{ 669{
679 platform_driver_unregister(&wm831x_alive_ldo_driver); 670 platform_unregister_drivers(drivers, ARRAY_SIZE(drivers));
680 platform_driver_unregister(&wm831x_aldo_driver);
681 platform_driver_unregister(&wm831x_gp_ldo_driver);
682} 671}
683module_exit(wm831x_ldo_exit); 672module_exit(wm831x_ldo_exit);
684 673