diff options
Diffstat (limited to 'drivers/cpuidle/cpuidle.c')
-rw-r--r-- | drivers/cpuidle/cpuidle.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c index 12fdd3987a36..199488576a05 100644 --- a/drivers/cpuidle/cpuidle.c +++ b/drivers/cpuidle/cpuidle.c | |||
@@ -156,7 +156,7 @@ int cpuidle_enable_device(struct cpuidle_device *dev) | |||
156 | 156 | ||
157 | if (dev->enabled) | 157 | if (dev->enabled) |
158 | return 0; | 158 | return 0; |
159 | if (!cpuidle_curr_driver || !cpuidle_curr_governor) | 159 | if (!cpuidle_get_driver() || !cpuidle_curr_governor) |
160 | return -EIO; | 160 | return -EIO; |
161 | if (!dev->state_count) | 161 | if (!dev->state_count) |
162 | return -EINVAL; | 162 | return -EINVAL; |
@@ -207,7 +207,7 @@ void cpuidle_disable_device(struct cpuidle_device *dev) | |||
207 | { | 207 | { |
208 | if (!dev->enabled) | 208 | if (!dev->enabled) |
209 | return; | 209 | return; |
210 | if (!cpuidle_curr_driver || !cpuidle_curr_governor) | 210 | if (!cpuidle_get_driver() || !cpuidle_curr_governor) |
211 | return; | 211 | return; |
212 | 212 | ||
213 | dev->enabled = 0; | 213 | dev->enabled = 0; |
@@ -271,10 +271,11 @@ static int __cpuidle_register_device(struct cpuidle_device *dev) | |||
271 | { | 271 | { |
272 | int ret; | 272 | int ret; |
273 | struct sys_device *sys_dev = get_cpu_sysdev((unsigned long)dev->cpu); | 273 | struct sys_device *sys_dev = get_cpu_sysdev((unsigned long)dev->cpu); |
274 | struct cpuidle_driver *cpuidle_driver = cpuidle_get_driver(); | ||
274 | 275 | ||
275 | if (!sys_dev) | 276 | if (!sys_dev) |
276 | return -EINVAL; | 277 | return -EINVAL; |
277 | if (!try_module_get(cpuidle_curr_driver->owner)) | 278 | if (!try_module_get(cpuidle_driver->owner)) |
278 | return -EINVAL; | 279 | return -EINVAL; |
279 | 280 | ||
280 | init_completion(&dev->kobj_unregister); | 281 | init_completion(&dev->kobj_unregister); |
@@ -284,7 +285,7 @@ static int __cpuidle_register_device(struct cpuidle_device *dev) | |||
284 | per_cpu(cpuidle_devices, dev->cpu) = dev; | 285 | per_cpu(cpuidle_devices, dev->cpu) = dev; |
285 | list_add(&dev->device_list, &cpuidle_detected_devices); | 286 | list_add(&dev->device_list, &cpuidle_detected_devices); |
286 | if ((ret = cpuidle_add_sysfs(sys_dev))) { | 287 | if ((ret = cpuidle_add_sysfs(sys_dev))) { |
287 | module_put(cpuidle_curr_driver->owner); | 288 | module_put(cpuidle_driver->owner); |
288 | return ret; | 289 | return ret; |
289 | } | 290 | } |
290 | 291 | ||
@@ -325,6 +326,7 @@ EXPORT_SYMBOL_GPL(cpuidle_register_device); | |||
325 | void cpuidle_unregister_device(struct cpuidle_device *dev) | 326 | void cpuidle_unregister_device(struct cpuidle_device *dev) |
326 | { | 327 | { |
327 | struct sys_device *sys_dev = get_cpu_sysdev((unsigned long)dev->cpu); | 328 | struct sys_device *sys_dev = get_cpu_sysdev((unsigned long)dev->cpu); |
329 | struct cpuidle_driver *cpuidle_driver = cpuidle_get_driver(); | ||
328 | 330 | ||
329 | if (dev->registered == 0) | 331 | if (dev->registered == 0) |
330 | return; | 332 | return; |
@@ -340,7 +342,7 @@ void cpuidle_unregister_device(struct cpuidle_device *dev) | |||
340 | 342 | ||
341 | cpuidle_resume_and_unlock(); | 343 | cpuidle_resume_and_unlock(); |
342 | 344 | ||
343 | module_put(cpuidle_curr_driver->owner); | 345 | module_put(cpuidle_driver->owner); |
344 | } | 346 | } |
345 | 347 | ||
346 | EXPORT_SYMBOL_GPL(cpuidle_unregister_device); | 348 | EXPORT_SYMBOL_GPL(cpuidle_unregister_device); |