Lines Matching refs:dfc
104 static int partition_enable_opps(struct devfreq_cooling_device *dfc, in partition_enable_opps() argument
108 struct device *dev = dfc->devfreq->dev.parent; in partition_enable_opps()
110 for (i = 0; i < dfc->freq_table_size; i++) { in partition_enable_opps()
113 unsigned int freq = dfc->freq_table[i]; in partition_enable_opps()
140 struct devfreq_cooling_device *dfc = cdev->devdata; in devfreq_cooling_get_max_state() local
142 *state = dfc->freq_table_size - 1; in devfreq_cooling_get_max_state()
150 struct devfreq_cooling_device *dfc = cdev->devdata; in devfreq_cooling_get_cur_state() local
152 *state = dfc->cooling_state; in devfreq_cooling_get_cur_state()
160 struct devfreq_cooling_device *dfc = cdev->devdata; in devfreq_cooling_set_cur_state() local
161 struct devfreq *df = dfc->devfreq; in devfreq_cooling_set_cur_state()
165 if (state == dfc->cooling_state) in devfreq_cooling_set_cur_state()
170 if (state >= dfc->freq_table_size) in devfreq_cooling_set_cur_state()
173 ret = partition_enable_opps(dfc, state); in devfreq_cooling_set_cur_state()
177 dfc->cooling_state = state; in devfreq_cooling_set_cur_state()
191 freq_get_state(struct devfreq_cooling_device *dfc, unsigned long freq) in freq_get_state() argument
195 for (i = 0; i < dfc->freq_table_size; i++) { in freq_get_state()
196 if (dfc->freq_table[i] == freq) in freq_get_state()
214 get_static_power(struct devfreq_cooling_device *dfc, unsigned long freq) in get_static_power() argument
216 struct devfreq *df = dfc->devfreq; in get_static_power()
221 if (!dfc->power_ops->get_static_power) in get_static_power()
241 return dfc->power_ops->get_static_power(voltage); in get_static_power()
257 get_dynamic_power(struct devfreq_cooling_device *dfc, unsigned long freq, in get_dynamic_power() argument
262 struct devfreq_cooling_power *dfc_power = dfc->power_ops; in get_dynamic_power()
278 struct devfreq_cooling_device *dfc = cdev->devdata; in devfreq_cooling_get_requested_power() local
279 struct devfreq *df = dfc->devfreq; in devfreq_cooling_get_requested_power()
286 state = freq_get_state(dfc, freq); in devfreq_cooling_get_requested_power()
290 dyn_power = dfc->power_table[state]; in devfreq_cooling_get_requested_power()
296 static_power = get_static_power(dfc, freq); in devfreq_cooling_get_requested_power()
311 struct devfreq_cooling_device *dfc = cdev->devdata; in devfreq_cooling_state2power() local
315 if (state < 0 || state >= dfc->freq_table_size) in devfreq_cooling_state2power()
318 freq = dfc->freq_table[state]; in devfreq_cooling_state2power()
319 static_power = get_static_power(dfc, freq); in devfreq_cooling_state2power()
321 *power = dfc->power_table[state] + static_power; in devfreq_cooling_state2power()
329 struct devfreq_cooling_device *dfc = cdev->devdata; in devfreq_cooling_power2state() local
330 struct devfreq *df = dfc->devfreq; in devfreq_cooling_power2state()
338 static_power = get_static_power(dfc, freq); in devfreq_cooling_power2state()
351 for (i = 0; i < dfc->freq_table_size - 1; i++) in devfreq_cooling_power2state()
352 if (dyn_power >= dfc->power_table[i]) in devfreq_cooling_power2state()
384 static int devfreq_cooling_gen_tables(struct devfreq_cooling_device *dfc) in devfreq_cooling_gen_tables() argument
386 struct devfreq *df = dfc->devfreq; in devfreq_cooling_gen_tables()
396 if (dfc->power_ops) { in devfreq_cooling_gen_tables()
427 if (dfc->power_ops) { in devfreq_cooling_gen_tables()
428 power_dyn = get_dynamic_power(dfc, freq, voltage); in devfreq_cooling_gen_tables()
439 if (dfc->power_ops) in devfreq_cooling_gen_tables()
440 dfc->power_table = power_table; in devfreq_cooling_gen_tables()
442 dfc->freq_table = freq_table; in devfreq_cooling_gen_tables()
443 dfc->freq_table_size = num_opps; in devfreq_cooling_gen_tables()
475 struct devfreq_cooling_device *dfc; in of_devfreq_cooling_register_power() local
479 dfc = kzalloc(sizeof(*dfc), GFP_KERNEL); in of_devfreq_cooling_register_power()
480 if (!dfc) in of_devfreq_cooling_register_power()
483 dfc->devfreq = df; in of_devfreq_cooling_register_power()
486 dfc->power_ops = dfc_power; in of_devfreq_cooling_register_power()
494 err = devfreq_cooling_gen_tables(dfc); in of_devfreq_cooling_register_power()
498 err = get_idr(&devfreq_idr, &dfc->id); in of_devfreq_cooling_register_power()
502 snprintf(dev_name, sizeof(dev_name), "thermal-devfreq-%d", dfc->id); in of_devfreq_cooling_register_power()
504 cdev = thermal_of_cooling_device_register(np, dev_name, dfc, in of_devfreq_cooling_register_power()
514 dfc->cdev = cdev; in of_devfreq_cooling_register_power()
519 release_idr(&devfreq_idr, dfc->id); in of_devfreq_cooling_register_power()
521 kfree(dfc->power_table); in of_devfreq_cooling_register_power()
522 kfree(dfc->freq_table); in of_devfreq_cooling_register_power()
524 kfree(dfc); in of_devfreq_cooling_register_power()
559 struct devfreq_cooling_device *dfc; in devfreq_cooling_unregister() local
564 dfc = cdev->devdata; in devfreq_cooling_unregister()
566 thermal_cooling_device_unregister(dfc->cdev); in devfreq_cooling_unregister()
567 release_idr(&devfreq_idr, dfc->id); in devfreq_cooling_unregister()
568 kfree(dfc->power_table); in devfreq_cooling_unregister()
569 kfree(dfc->freq_table); in devfreq_cooling_unregister()
571 kfree(dfc); in devfreq_cooling_unregister()