Lines Matching refs:drv

46 static inline void __cpuidle_unset_driver(struct cpuidle_driver *drv)  in __cpuidle_unset_driver()  argument
50 for_each_cpu(cpu, drv->cpumask) { in __cpuidle_unset_driver()
52 if (drv != __cpuidle_get_cpu_driver(cpu)) in __cpuidle_unset_driver()
68 static inline int __cpuidle_set_driver(struct cpuidle_driver *drv) in __cpuidle_set_driver() argument
72 for_each_cpu(cpu, drv->cpumask) { in __cpuidle_set_driver()
75 __cpuidle_unset_driver(drv); in __cpuidle_set_driver()
79 per_cpu(cpuidle_drivers, cpu) = drv; in __cpuidle_set_driver()
107 static inline int __cpuidle_set_driver(struct cpuidle_driver *drv) in __cpuidle_set_driver() argument
112 cpuidle_curr_driver = drv; in __cpuidle_set_driver()
124 static inline void __cpuidle_unset_driver(struct cpuidle_driver *drv) in __cpuidle_unset_driver() argument
126 if (drv == cpuidle_curr_driver) in __cpuidle_unset_driver()
153 static void __cpuidle_driver_init(struct cpuidle_driver *drv) in __cpuidle_driver_init() argument
157 drv->refcnt = 0; in __cpuidle_driver_init()
164 if (!drv->cpumask) in __cpuidle_driver_init()
165 drv->cpumask = (struct cpumask *)cpu_possible_mask; in __cpuidle_driver_init()
172 for (i = drv->state_count - 1; i >= 0 ; i--) { in __cpuidle_driver_init()
173 if (drv->states[i].flags & CPUIDLE_FLAG_TIMER_STOP) { in __cpuidle_driver_init()
174 drv->bctimer = 1; in __cpuidle_driver_init()
182 struct cpuidle_driver *drv, int index) in poll_idle() argument
194 static void poll_idle_init(struct cpuidle_driver *drv) in poll_idle_init() argument
196 struct cpuidle_state *state = &drv->states[0]; in poll_idle_init()
207 static void poll_idle_init(struct cpuidle_driver *drv) {} in poll_idle_init() argument
223 static int __cpuidle_register_driver(struct cpuidle_driver *drv) in __cpuidle_register_driver() argument
227 if (!drv || !drv->state_count) in __cpuidle_register_driver()
230 ret = cpuidle_coupled_state_verify(drv); in __cpuidle_register_driver()
237 __cpuidle_driver_init(drv); in __cpuidle_register_driver()
239 ret = __cpuidle_set_driver(drv); in __cpuidle_register_driver()
243 if (drv->bctimer) in __cpuidle_register_driver()
244 on_each_cpu_mask(drv->cpumask, cpuidle_setup_broadcast_timer, in __cpuidle_register_driver()
247 poll_idle_init(drv); in __cpuidle_register_driver()
261 static void __cpuidle_unregister_driver(struct cpuidle_driver *drv) in __cpuidle_unregister_driver() argument
263 if (WARN_ON(drv->refcnt > 0)) in __cpuidle_unregister_driver()
266 if (drv->bctimer) { in __cpuidle_unregister_driver()
267 drv->bctimer = 0; in __cpuidle_unregister_driver()
268 on_each_cpu_mask(drv->cpumask, cpuidle_setup_broadcast_timer, in __cpuidle_unregister_driver()
272 __cpuidle_unset_driver(drv); in __cpuidle_unregister_driver()
285 int cpuidle_register_driver(struct cpuidle_driver *drv) in cpuidle_register_driver() argument
290 ret = __cpuidle_register_driver(drv); in cpuidle_register_driver()
305 void cpuidle_unregister_driver(struct cpuidle_driver *drv) in cpuidle_unregister_driver() argument
308 __cpuidle_unregister_driver(drv); in cpuidle_unregister_driver()
320 struct cpuidle_driver *drv; in cpuidle_get_driver() local
324 drv = __cpuidle_get_cpu_driver(cpu); in cpuidle_get_driver()
327 return drv; in cpuidle_get_driver()
357 struct cpuidle_driver *drv; in cpuidle_driver_ref() local
361 drv = cpuidle_get_driver(); in cpuidle_driver_ref()
362 if (drv) in cpuidle_driver_ref()
363 drv->refcnt++; in cpuidle_driver_ref()
366 return drv; in cpuidle_driver_ref()
377 struct cpuidle_driver *drv; in cpuidle_driver_unref() local
381 drv = cpuidle_get_driver(); in cpuidle_driver_unref()
382 if (drv && !WARN_ON(drv->refcnt <= 0)) in cpuidle_driver_unref()
383 drv->refcnt--; in cpuidle_driver_unref()