diff options
author | Tejun Heo <tj@kernel.org> | 2009-08-14 01:41:02 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2009-08-14 01:45:31 -0400 |
commit | 384be2b18a5f9475eab9ca2bdfa95cc1a04ef59c (patch) | |
tree | 04c93f391a1b65c8bf8d7ba8643c07d26c26590a /drivers/rtc/rtc-cmos.c | |
parent | a76761b621bcd8336065c4fe3a74f046858bc34c (diff) | |
parent | 142d44b0dd6741a64a7bdbe029110e7c1dcf1d23 (diff) |
Merge branch 'percpu-for-linus' into percpu-for-next
Conflicts:
arch/sparc/kernel/smp_64.c
arch/x86/kernel/cpu/perf_counter.c
arch/x86/kernel/setup_percpu.c
drivers/cpufreq/cpufreq_ondemand.c
mm/percpu.c
Conflicts in core and arch percpu codes are mostly from commit
ed78e1e078dd44249f88b1dd8c76dafb39567161 which substituted many
num_possible_cpus() with nr_cpu_ids. As for-next branch has moved all
the first chunk allocators into mm/percpu.c, the changes are moved
from arch code to mm/percpu.c.
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'drivers/rtc/rtc-cmos.c')
-rw-r--r-- | drivers/rtc/rtc-cmos.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c index 23e10b6263d6..f7a4701bf863 100644 --- a/drivers/rtc/rtc-cmos.c +++ b/drivers/rtc/rtc-cmos.c | |||
@@ -1174,23 +1174,34 @@ static struct platform_driver cmos_platform_driver = { | |||
1174 | } | 1174 | } |
1175 | }; | 1175 | }; |
1176 | 1176 | ||
1177 | #ifdef CONFIG_PNP | ||
1178 | static bool pnp_driver_registered; | ||
1179 | #endif | ||
1180 | static bool platform_driver_registered; | ||
1181 | |||
1177 | static int __init cmos_init(void) | 1182 | static int __init cmos_init(void) |
1178 | { | 1183 | { |
1179 | int retval = 0; | 1184 | int retval = 0; |
1180 | 1185 | ||
1181 | #ifdef CONFIG_PNP | 1186 | #ifdef CONFIG_PNP |
1182 | pnp_register_driver(&cmos_pnp_driver); | 1187 | retval = pnp_register_driver(&cmos_pnp_driver); |
1188 | if (retval == 0) | ||
1189 | pnp_driver_registered = true; | ||
1183 | #endif | 1190 | #endif |
1184 | 1191 | ||
1185 | if (!cmos_rtc.dev) | 1192 | if (!cmos_rtc.dev) { |
1186 | retval = platform_driver_probe(&cmos_platform_driver, | 1193 | retval = platform_driver_probe(&cmos_platform_driver, |
1187 | cmos_platform_probe); | 1194 | cmos_platform_probe); |
1195 | if (retval == 0) | ||
1196 | platform_driver_registered = true; | ||
1197 | } | ||
1188 | 1198 | ||
1189 | if (retval == 0) | 1199 | if (retval == 0) |
1190 | return 0; | 1200 | return 0; |
1191 | 1201 | ||
1192 | #ifdef CONFIG_PNP | 1202 | #ifdef CONFIG_PNP |
1193 | pnp_unregister_driver(&cmos_pnp_driver); | 1203 | if (pnp_driver_registered) |
1204 | pnp_unregister_driver(&cmos_pnp_driver); | ||
1194 | #endif | 1205 | #endif |
1195 | return retval; | 1206 | return retval; |
1196 | } | 1207 | } |
@@ -1199,9 +1210,11 @@ module_init(cmos_init); | |||
1199 | static void __exit cmos_exit(void) | 1210 | static void __exit cmos_exit(void) |
1200 | { | 1211 | { |
1201 | #ifdef CONFIG_PNP | 1212 | #ifdef CONFIG_PNP |
1202 | pnp_unregister_driver(&cmos_pnp_driver); | 1213 | if (pnp_driver_registered) |
1214 | pnp_unregister_driver(&cmos_pnp_driver); | ||
1203 | #endif | 1215 | #endif |
1204 | platform_driver_unregister(&cmos_platform_driver); | 1216 | if (platform_driver_registered) |
1217 | platform_driver_unregister(&cmos_platform_driver); | ||
1205 | } | 1218 | } |
1206 | module_exit(cmos_exit); | 1219 | module_exit(cmos_exit); |
1207 | 1220 | ||