Lines Matching refs:drv
48 static inline void __cpuidle_unset_driver(struct cpuidle_driver *drv) in __cpuidle_unset_driver() argument
52 for_each_cpu(cpu, drv->cpumask) { in __cpuidle_unset_driver()
54 if (drv != __cpuidle_get_cpu_driver(cpu)) in __cpuidle_unset_driver()
70 static inline int __cpuidle_set_driver(struct cpuidle_driver *drv) in __cpuidle_set_driver() argument
74 for_each_cpu(cpu, drv->cpumask) { in __cpuidle_set_driver()
77 __cpuidle_unset_driver(drv); in __cpuidle_set_driver()
81 per_cpu(cpuidle_drivers, cpu) = drv; in __cpuidle_set_driver()
109 static inline int __cpuidle_set_driver(struct cpuidle_driver *drv) in __cpuidle_set_driver() argument
114 cpuidle_curr_driver = drv; in __cpuidle_set_driver()
126 static inline void __cpuidle_unset_driver(struct cpuidle_driver *drv) in __cpuidle_unset_driver() argument
128 if (drv == cpuidle_curr_driver) in __cpuidle_unset_driver()
155 static void __cpuidle_driver_init(struct cpuidle_driver *drv) in __cpuidle_driver_init() argument
159 drv->refcnt = 0; in __cpuidle_driver_init()
166 if (!drv->cpumask) in __cpuidle_driver_init()
167 drv->cpumask = (struct cpumask *)cpu_possible_mask; in __cpuidle_driver_init()
174 for (i = drv->state_count - 1; i >= 0 ; i--) { in __cpuidle_driver_init()
175 if (drv->states[i].flags & CPUIDLE_FLAG_TIMER_STOP) { in __cpuidle_driver_init()
176 drv->bctimer = 1; in __cpuidle_driver_init()
195 static int __cpuidle_register_driver(struct cpuidle_driver *drv) in __cpuidle_register_driver() argument
199 if (!drv || !drv->state_count) in __cpuidle_register_driver()
202 ret = cpuidle_coupled_state_verify(drv); in __cpuidle_register_driver()
209 __cpuidle_driver_init(drv); in __cpuidle_register_driver()
211 ret = __cpuidle_set_driver(drv); in __cpuidle_register_driver()
215 if (drv->bctimer) in __cpuidle_register_driver()
216 on_each_cpu_mask(drv->cpumask, cpuidle_setup_broadcast_timer, in __cpuidle_register_driver()
231 static void __cpuidle_unregister_driver(struct cpuidle_driver *drv) in __cpuidle_unregister_driver() argument
233 if (WARN_ON(drv->refcnt > 0)) in __cpuidle_unregister_driver()
236 if (drv->bctimer) { in __cpuidle_unregister_driver()
237 drv->bctimer = 0; in __cpuidle_unregister_driver()
238 on_each_cpu_mask(drv->cpumask, cpuidle_setup_broadcast_timer, in __cpuidle_unregister_driver()
242 __cpuidle_unset_driver(drv); in __cpuidle_unregister_driver()
255 int cpuidle_register_driver(struct cpuidle_driver *drv) in cpuidle_register_driver() argument
261 ret = __cpuidle_register_driver(drv); in cpuidle_register_driver()
264 if (!ret && !strlen(param_governor) && drv->governor && in cpuidle_register_driver()
265 (cpuidle_get_driver() == drv)) { in cpuidle_register_driver()
267 gov = cpuidle_find_governor(drv->governor); in cpuidle_register_driver()
288 void cpuidle_unregister_driver(struct cpuidle_driver *drv) in cpuidle_unregister_driver() argument
290 bool enabled = (cpuidle_get_driver() == drv); in cpuidle_unregister_driver()
293 __cpuidle_unregister_driver(drv); in cpuidle_unregister_driver()
315 struct cpuidle_driver *drv; in cpuidle_get_driver() local
319 drv = __cpuidle_get_cpu_driver(cpu); in cpuidle_get_driver()
322 return drv; in cpuidle_get_driver()
352 struct cpuidle_driver *drv; in cpuidle_driver_ref() local
356 drv = cpuidle_get_driver(); in cpuidle_driver_ref()
357 if (drv) in cpuidle_driver_ref()
358 drv->refcnt++; in cpuidle_driver_ref()
361 return drv; in cpuidle_driver_ref()
372 struct cpuidle_driver *drv; in cpuidle_driver_unref() local
376 drv = cpuidle_get_driver(); in cpuidle_driver_unref()
377 if (drv && !WARN_ON(drv->refcnt <= 0)) in cpuidle_driver_unref()
378 drv->refcnt--; in cpuidle_driver_unref()