Loading drivers/rtc/rtc-test.c +24 −24 Original line number Original line Diff line number Diff line Loading @@ -13,7 +13,9 @@ #include <linux/rtc.h> #include <linux/rtc.h> #include <linux/platform_device.h> #include <linux/platform_device.h> static struct platform_device *test0 = NULL, *test1 = NULL; #define MAX_RTC_TEST 3 struct platform_device *pdev[MAX_RTC_TEST]; static int test_rtc_read_alarm(struct device *dev, static int test_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm) struct rtc_wkalrm *alrm) Loading Loading @@ -122,47 +124,45 @@ static struct platform_driver test_driver = { static int __init test_init(void) static int __init test_init(void) { { int err; int i, err; if ((err = platform_driver_register(&test_driver))) if ((err = platform_driver_register(&test_driver))) return err; return err; if ((test0 = platform_device_alloc("rtc-test", 0)) == NULL) { err = -ENOMEM; err = -ENOMEM; goto exit_driver_unregister; for (i = 0; i < MAX_RTC_TEST; i++) { pdev[i] = platform_device_alloc("rtc-test", i); if (!pdev[i]) goto exit_free_mem; } } if ((test1 = platform_device_alloc("rtc-test", 1)) == NULL) { for (i = 0; i < MAX_RTC_TEST; i++) { err = -ENOMEM; err = platform_device_add(pdev[i]); goto exit_put_test0; if (err) goto exit_device_del; } } if ((err = platform_device_add(test0))) goto exit_put_test1; if ((err = platform_device_add(test1))) goto exit_del_test0; return 0; return 0; exit_del_test0: exit_device_del: platform_device_del(test0); for (; i > 0; i--) platform_device_del(pdev[i - 1]); exit_put_test1: platform_device_put(test1); exit_put_test0: exit_free_mem: platform_device_put(test0); for (i = 0; i < MAX_RTC_TEST; i++) platform_device_put(pdev[i]); exit_driver_unregister: platform_driver_unregister(&test_driver); platform_driver_unregister(&test_driver); return err; return err; } } static void __exit test_exit(void) static void __exit test_exit(void) { { platform_device_unregister(test0); int i; platform_device_unregister(test1); for (i = 0; i < MAX_RTC_TEST; i++) platform_device_unregister(pdev[i]); platform_driver_unregister(&test_driver); platform_driver_unregister(&test_driver); } } Loading Loading
drivers/rtc/rtc-test.c +24 −24 Original line number Original line Diff line number Diff line Loading @@ -13,7 +13,9 @@ #include <linux/rtc.h> #include <linux/rtc.h> #include <linux/platform_device.h> #include <linux/platform_device.h> static struct platform_device *test0 = NULL, *test1 = NULL; #define MAX_RTC_TEST 3 struct platform_device *pdev[MAX_RTC_TEST]; static int test_rtc_read_alarm(struct device *dev, static int test_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm) struct rtc_wkalrm *alrm) Loading Loading @@ -122,47 +124,45 @@ static struct platform_driver test_driver = { static int __init test_init(void) static int __init test_init(void) { { int err; int i, err; if ((err = platform_driver_register(&test_driver))) if ((err = platform_driver_register(&test_driver))) return err; return err; if ((test0 = platform_device_alloc("rtc-test", 0)) == NULL) { err = -ENOMEM; err = -ENOMEM; goto exit_driver_unregister; for (i = 0; i < MAX_RTC_TEST; i++) { pdev[i] = platform_device_alloc("rtc-test", i); if (!pdev[i]) goto exit_free_mem; } } if ((test1 = platform_device_alloc("rtc-test", 1)) == NULL) { for (i = 0; i < MAX_RTC_TEST; i++) { err = -ENOMEM; err = platform_device_add(pdev[i]); goto exit_put_test0; if (err) goto exit_device_del; } } if ((err = platform_device_add(test0))) goto exit_put_test1; if ((err = platform_device_add(test1))) goto exit_del_test0; return 0; return 0; exit_del_test0: exit_device_del: platform_device_del(test0); for (; i > 0; i--) platform_device_del(pdev[i - 1]); exit_put_test1: platform_device_put(test1); exit_put_test0: exit_free_mem: platform_device_put(test0); for (i = 0; i < MAX_RTC_TEST; i++) platform_device_put(pdev[i]); exit_driver_unregister: platform_driver_unregister(&test_driver); platform_driver_unregister(&test_driver); return err; return err; } } static void __exit test_exit(void) static void __exit test_exit(void) { { platform_device_unregister(test0); int i; platform_device_unregister(test1); for (i = 0; i < MAX_RTC_TEST; i++) platform_device_unregister(pdev[i]); platform_driver_unregister(&test_driver); platform_driver_unregister(&test_driver); } } Loading