Lines Matching full:drv

49 bool cpuidle_not_available(struct cpuidle_driver *drv,  in cpuidle_not_available()  argument
52 return off || !initialized || !drv || !dev || !dev->enabled; in cpuidle_not_available()
63 struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev); in cpuidle_play_dead() local
66 if (!drv) in cpuidle_play_dead()
70 for (i = drv->state_count - 1; i >= 0; i--) in cpuidle_play_dead()
71 if (drv->states[i].enter_dead) in cpuidle_play_dead()
72 return drv->states[i].enter_dead(dev, i); in cpuidle_play_dead()
77 static int find_deepest_state(struct cpuidle_driver *drv, in find_deepest_state() argument
86 for (i = 1; i < drv->state_count; i++) { in find_deepest_state()
87 struct cpuidle_state *s = &drv->states[i]; in find_deepest_state()
123 * @drv: cpuidle driver for the given CPU.
129 int cpuidle_find_deepest_state(struct cpuidle_driver *drv, in cpuidle_find_deepest_state() argument
133 return find_deepest_state(drv, dev, latency_limit_ns, 0, false); in cpuidle_find_deepest_state()
137 static void enter_s2idle_proper(struct cpuidle_driver *drv, in enter_s2idle_proper() argument
141 struct cpuidle_state *target_state = &drv->states[index]; in enter_s2idle_proper()
154 target_state->enter_s2idle(dev, drv, index); in enter_s2idle_proper()
170 * @drv: cpuidle driver for the given CPU.
176 int cpuidle_enter_s2idle(struct cpuidle_driver *drv, struct cpuidle_device *dev) in cpuidle_enter_s2idle() argument
185 index = find_deepest_state(drv, dev, U64_MAX, 0, true); in cpuidle_enter_s2idle()
187 enter_s2idle_proper(drv, dev, index); in cpuidle_enter_s2idle()
197 * @drv: cpuidle driver for this cpu
198 * @index: index into the states table in @drv of the state to enter
200 int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv, in cpuidle_enter_state() argument
205 struct cpuidle_state *target_state = &drv->states[index]; in cpuidle_enter_state()
215 index = find_deepest_state(drv, dev, target_state->exit_latency_ns, in cpuidle_enter_state()
221 target_state = &drv->states[index]; in cpuidle_enter_state()
237 entered_state = target_state->enter(dev, drv, index); in cpuidle_enter_state()
256 if (!cpuidle_state_is_coupled(drv, index)) in cpuidle_enter_state()
260 s64 diff, delay = drv->states[entered_state].exit_latency_ns; in cpuidle_enter_state()
274 if (diff < drv->states[entered_state].target_residency_ns) { in cpuidle_enter_state()
284 for (i = entered_state + 1; i < drv->state_count; i++) { in cpuidle_enter_state()
292 if (diff - delay >= drv->states[i].target_residency_ns) in cpuidle_enter_state()
309 * @drv: the cpuidle driver
319 int cpuidle_select(struct cpuidle_driver *drv, struct cpuidle_device *dev, in cpuidle_select() argument
322 return cpuidle_curr_governor->select(drv, dev, stop_tick); in cpuidle_select()
328 * @drv: the cpuidle driver tied with the cpu
335 int cpuidle_enter(struct cpuidle_driver *drv, struct cpuidle_device *dev, in cpuidle_enter() argument
348 if (cpuidle_state_is_coupled(drv, index)) in cpuidle_enter()
349 ret = cpuidle_enter_state_coupled(dev, drv, index); in cpuidle_enter()
351 ret = cpuidle_enter_state(dev, drv, index); in cpuidle_enter()
388 * @drv: the cpuidle driver tied with the cpu
392 u64 cpuidle_poll_time(struct cpuidle_driver *drv, in cpuidle_poll_time() argument
404 for (i = 1; i < drv->state_count; i++) { in cpuidle_poll_time()
410 state_limit = drv->states[i].target_residency_ns; in cpuidle_poll_time()
500 struct cpuidle_driver *drv; in cpuidle_enable_device() local
511 drv = cpuidle_get_cpu_driver(dev); in cpuidle_enable_device()
513 if (!drv) in cpuidle_enable_device()
524 ret = cpuidle_curr_governor->enable(drv, dev); in cpuidle_enable_device()
553 struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev); in cpuidle_disable_device() local
558 if (!drv || !cpuidle_curr_governor) in cpuidle_disable_device()
564 cpuidle_curr_governor->disable(drv, dev); in cpuidle_disable_device()
574 struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev); in __cpuidle_unregister_device() local
578 module_put(drv->owner); in __cpuidle_unregister_device()
599 struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev); in __cpuidle_register_device() local
602 if (!try_module_get(drv->owner)) in __cpuidle_register_device()
605 for (i = 0; i < drv->state_count; i++) { in __cpuidle_register_device()
606 if (drv->states[i].flags & CPUIDLE_FLAG_UNUSABLE) in __cpuidle_register_device()
609 if (drv->states[i].flags & CPUIDLE_FLAG_OFF) in __cpuidle_register_device()
700 * @drv: a valid pointer to a struct cpuidle_driver
702 void cpuidle_unregister(struct cpuidle_driver *drv) in cpuidle_unregister() argument
707 for_each_cpu(cpu, drv->cpumask) { in cpuidle_unregister()
712 cpuidle_unregister_driver(drv); in cpuidle_unregister()
722 * @drv : a valid pointer to a struct cpuidle_driver
727 int cpuidle_register(struct cpuidle_driver *drv, in cpuidle_register() argument
733 ret = cpuidle_register_driver(drv); in cpuidle_register()
739 for_each_cpu(cpu, drv->cpumask) { in cpuidle_register()
758 cpuidle_unregister(drv); in cpuidle_register()