Lines Matching full:devfreq
3 * linux/drivers/devfreq/governor_passive.c
12 #include <linux/devfreq.h>
15 static int devfreq_passive_get_target_freq(struct devfreq *devfreq, in devfreq_passive_get_target_freq() argument
19 = (struct devfreq_passive_data *)devfreq->data; in devfreq_passive_get_target_freq()
20 struct devfreq *parent_devfreq = (struct devfreq *)p_data->parent; in devfreq_passive_get_target_freq()
26 * If the devfreq device with passive governor has the specific method in devfreq_passive_get_target_freq()
31 return p_data->get_target_freq(devfreq, freq); in devfreq_passive_get_target_freq()
34 * If the parent and passive devfreq device uses the OPP table, in devfreq_passive_get_target_freq()
39 * - parent devfreq device uses the governors except for passive. in devfreq_passive_get_target_freq()
40 * - passive devfreq device uses the passive governor. in devfreq_passive_get_target_freq()
42 * Each devfreq has the OPP table. After deciding the new frequency in devfreq_passive_get_target_freq()
43 * from the governor of parent devfreq device, the passive governor in devfreq_passive_get_target_freq()
46 * new frequency for passive devfreq device. in devfreq_passive_get_target_freq()
48 if (!devfreq->profile || !devfreq->profile->freq_table in devfreq_passive_get_target_freq()
49 || devfreq->profile->max_state <= 0) in devfreq_passive_get_target_freq()
57 if (devfreq->opp_table && parent_devfreq->opp_table) { in devfreq_passive_get_target_freq()
64 devfreq->opp_table, p_opp); in devfreq_passive_get_target_freq()
89 if (i < devfreq->profile->max_state) { in devfreq_passive_get_target_freq()
90 child_freq = devfreq->profile->freq_table[i]; in devfreq_passive_get_target_freq()
92 count = devfreq->profile->max_state; in devfreq_passive_get_target_freq()
93 child_freq = devfreq->profile->freq_table[count - 1]; in devfreq_passive_get_target_freq()
107 struct devfreq *devfreq = (struct devfreq *)data->this; in devfreq_passive_notifier_call() local
108 struct devfreq *parent = (struct devfreq *)data->parent; in devfreq_passive_notifier_call()
113 mutex_lock_nested(&devfreq->lock, SINGLE_DEPTH_NESTING); in devfreq_passive_notifier_call()
117 ret = devfreq_update_target(devfreq, freq); in devfreq_passive_notifier_call()
122 ret = devfreq_update_target(devfreq, freq); in devfreq_passive_notifier_call()
125 mutex_unlock(&devfreq->lock); in devfreq_passive_notifier_call()
128 dev_warn(&devfreq->dev, in devfreq_passive_notifier_call()
129 "failed to update devfreq using passive governor\n"); in devfreq_passive_notifier_call()
134 static int devfreq_passive_event_handler(struct devfreq *devfreq, in devfreq_passive_event_handler() argument
138 = (struct devfreq_passive_data *)devfreq->data; in devfreq_passive_event_handler()
139 struct devfreq *parent = (struct devfreq *)p_data->parent; in devfreq_passive_event_handler()
149 p_data->this = devfreq; in devfreq_passive_event_handler()
191 MODULE_DESCRIPTION("DEVFREQ Passive governor");