Lines Matching defs:drv
52 bool cpuidle_not_available(struct cpuidle_driver *drv,
55 return off || !initialized || !drv || !dev || !dev->enabled;
66 struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev);
69 if (!drv)
73 for (i = drv->state_count - 1; i >= 0; i--)
74 if (drv->states[i].enter_dead)
75 return drv->states[i].enter_dead(dev, i);
80 static int find_deepest_state(struct cpuidle_driver *drv,
89 for (i = 1; i < drv->state_count; i++) {
90 struct cpuidle_state *s = &drv->states[i];
126 * @drv: cpuidle driver for the given CPU.
132 int cpuidle_find_deepest_state(struct cpuidle_driver *drv,
136 return find_deepest_state(drv, dev, latency_limit_ns, 0, false);
140 static noinstr void enter_s2idle_proper(struct cpuidle_driver *drv,
143 struct cpuidle_state *target_state = &drv->states[index];
162 target_state->enter_s2idle(dev, drv, index);
181 * @drv: cpuidle driver for the given CPU.
187 int cpuidle_enter_s2idle(struct cpuidle_driver *drv, struct cpuidle_device *dev)
196 index = find_deepest_state(drv, dev, U64_MAX, 0, true);
198 enter_s2idle_proper(drv, dev, index);
208 * @drv: cpuidle driver for this cpu
209 * @index: index into the states table in @drv of the state to enter
212 struct cpuidle_driver *drv,
217 struct cpuidle_state *target_state = &drv->states[index];
229 index = find_deepest_state(drv, dev, target_state->exit_latency_ns,
235 target_state = &drv->states[index];
267 entered_state = target_state->enter(dev, drv, index);
288 if (!cpuidle_state_is_coupled(drv, index))
292 s64 diff, delay = drv->states[entered_state].exit_latency_ns;
306 if (diff < drv->states[entered_state].target_residency_ns) {
317 for (i = entered_state + 1; i < drv->state_count; i++) {
325 if (diff - delay >= drv->states[i].target_residency_ns) {
346 * @drv: the cpuidle driver
356 int cpuidle_select(struct cpuidle_driver *drv, struct cpuidle_device *dev,
359 return cpuidle_curr_governor->select(drv, dev, stop_tick);
365 * @drv: the cpuidle driver tied with the cpu
372 int cpuidle_enter(struct cpuidle_driver *drv, struct cpuidle_device *dev,
385 if (cpuidle_state_is_coupled(drv, index))
386 ret = cpuidle_enter_state_coupled(dev, drv, index);
388 ret = cpuidle_enter_state(dev, drv, index);
425 * @drv: the cpuidle driver tied with the cpu
429 __cpuidle u64 cpuidle_poll_time(struct cpuidle_driver *drv,
441 for (i = 1; i < drv->state_count; i++) {
447 state_limit = drv->states[i].target_residency_ns;
537 struct cpuidle_driver *drv;
548 drv = cpuidle_get_cpu_driver(dev);
550 if (!drv)
561 ret = cpuidle_curr_governor->enable(drv, dev);
590 struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev);
595 if (!drv || !cpuidle_curr_governor)
601 cpuidle_curr_governor->disable(drv, dev);
611 struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev);
615 module_put(drv->owner);
636 struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev);
639 if (!try_module_get(drv->owner))
642 for (i = 0; i < drv->state_count; i++) {
643 if (drv->states[i].flags & CPUIDLE_FLAG_UNUSABLE)
646 if (drv->states[i].flags & CPUIDLE_FLAG_OFF)
737 * @drv: a valid pointer to a struct cpuidle_driver
739 void cpuidle_unregister(struct cpuidle_driver *drv)
744 for_each_cpu(cpu, drv->cpumask) {
749 cpuidle_unregister_driver(drv);
759 * @drv : a valid pointer to a struct cpuidle_driver
764 int cpuidle_register(struct cpuidle_driver *drv,
770 ret = cpuidle_register_driver(drv);
776 for_each_cpu(cpu, drv->cpumask) {
795 cpuidle_unregister(drv);