Lines Matching refs:dfc

78 static int partition_enable_opps(struct devfreq_cooling_device *dfc,  in partition_enable_opps()  argument
82 struct device *dev = dfc->devfreq->dev.parent; in partition_enable_opps()
84 for (i = 0; i < dfc->freq_table_size; i++) { in partition_enable_opps()
87 unsigned int freq = dfc->freq_table[i]; in partition_enable_opps()
114 struct devfreq_cooling_device *dfc = cdev->devdata; in devfreq_cooling_get_max_state() local
116 *state = dfc->freq_table_size - 1; in devfreq_cooling_get_max_state()
124 struct devfreq_cooling_device *dfc = cdev->devdata; in devfreq_cooling_get_cur_state() local
126 *state = dfc->cooling_state; in devfreq_cooling_get_cur_state()
134 struct devfreq_cooling_device *dfc = cdev->devdata; in devfreq_cooling_set_cur_state() local
135 struct devfreq *df = dfc->devfreq; in devfreq_cooling_set_cur_state()
139 if (state == dfc->cooling_state) in devfreq_cooling_set_cur_state()
144 if (state >= dfc->freq_table_size) in devfreq_cooling_set_cur_state()
147 ret = partition_enable_opps(dfc, state); in devfreq_cooling_set_cur_state()
151 dfc->cooling_state = state; in devfreq_cooling_set_cur_state()
165 freq_get_state(struct devfreq_cooling_device *dfc, unsigned long freq) in freq_get_state() argument
169 for (i = 0; i < dfc->freq_table_size; i++) { in freq_get_state()
170 if (dfc->freq_table[i] == freq) in freq_get_state()
216 get_static_power(struct devfreq_cooling_device *dfc, unsigned long freq) in get_static_power() argument
218 struct devfreq *df = dfc->devfreq; in get_static_power()
221 if (!dfc->power_ops->get_static_power) in get_static_power()
229 return dfc->power_ops->get_static_power(df, voltage); in get_static_power()
245 get_dynamic_power(struct devfreq_cooling_device *dfc, unsigned long freq, in get_dynamic_power() argument
250 struct devfreq_cooling_power *dfc_power = dfc->power_ops; in get_dynamic_power()
253 return dfc_power->get_dynamic_power(dfc->devfreq, freq, in get_dynamic_power()
264 static inline unsigned long get_total_power(struct devfreq_cooling_device *dfc, in get_total_power() argument
268 return get_static_power(dfc, freq) + get_dynamic_power(dfc, freq, in get_total_power()
277 struct devfreq_cooling_device *dfc = cdev->devdata; in devfreq_cooling_get_requested_power() local
278 struct devfreq *df = dfc->devfreq; in devfreq_cooling_get_requested_power()
287 state = freq_get_state(dfc, freq); in devfreq_cooling_get_requested_power()
293 if (dfc->power_ops->get_real_power) { in devfreq_cooling_get_requested_power()
300 res = dfc->power_ops->get_real_power(df, power, freq, voltage); in devfreq_cooling_get_requested_power()
302 state = dfc->capped_state; in devfreq_cooling_get_requested_power()
303 dfc->res_util = dfc->power_table[state]; in devfreq_cooling_get_requested_power()
304 dfc->res_util *= SCALE_ERROR_MITIGATION; in devfreq_cooling_get_requested_power()
307 dfc->res_util /= *power; in devfreq_cooling_get_requested_power()
312 dyn_power = dfc->power_table[state]; in devfreq_cooling_get_requested_power()
318 static_power = get_static_power(dfc, freq); in devfreq_cooling_get_requested_power()
329 dfc->res_util = SCALE_ERROR_MITIGATION; in devfreq_cooling_get_requested_power()
338 struct devfreq_cooling_device *dfc = cdev->devdata; in devfreq_cooling_state2power() local
342 if (state >= dfc->freq_table_size) in devfreq_cooling_state2power()
345 freq = dfc->freq_table[state]; in devfreq_cooling_state2power()
346 static_power = get_static_power(dfc, freq); in devfreq_cooling_state2power()
348 *power = dfc->power_table[state] + static_power; in devfreq_cooling_state2power()
356 struct devfreq_cooling_device *dfc = cdev->devdata; in devfreq_cooling_power2state() local
357 struct devfreq *df = dfc->devfreq; in devfreq_cooling_power2state()
366 if (dfc->power_ops->get_real_power) { in devfreq_cooling_power2state()
368 est_power = power * dfc->res_util; in devfreq_cooling_power2state()
371 static_power = get_static_power(dfc, freq); in devfreq_cooling_power2state()
385 for (i = 0; i < dfc->freq_table_size - 1; i++) in devfreq_cooling_power2state()
386 if (est_power >= dfc->power_table[i]) in devfreq_cooling_power2state()
390 dfc->capped_state = i; in devfreq_cooling_power2state()
419 static int devfreq_cooling_gen_tables(struct devfreq_cooling_device *dfc) in devfreq_cooling_gen_tables() argument
421 struct devfreq *df = dfc->devfreq; in devfreq_cooling_gen_tables()
431 if (dfc->power_ops) { in devfreq_cooling_gen_tables()
458 if (dfc->power_ops) { in devfreq_cooling_gen_tables()
459 if (dfc->power_ops->get_real_power) in devfreq_cooling_gen_tables()
460 power = get_total_power(dfc, freq, voltage); in devfreq_cooling_gen_tables()
462 power = get_dynamic_power(dfc, freq, voltage); in devfreq_cooling_gen_tables()
473 if (dfc->power_ops) in devfreq_cooling_gen_tables()
474 dfc->power_table = power_table; in devfreq_cooling_gen_tables()
476 dfc->freq_table = freq_table; in devfreq_cooling_gen_tables()
477 dfc->freq_table_size = num_opps; in devfreq_cooling_gen_tables()
509 struct devfreq_cooling_device *dfc; in of_devfreq_cooling_register_power() local
513 dfc = kzalloc(sizeof(*dfc), GFP_KERNEL); in of_devfreq_cooling_register_power()
514 if (!dfc) in of_devfreq_cooling_register_power()
517 dfc->devfreq = df; in of_devfreq_cooling_register_power()
520 dfc->power_ops = dfc_power; in of_devfreq_cooling_register_power()
528 err = devfreq_cooling_gen_tables(dfc); in of_devfreq_cooling_register_power()
535 dfc->id = err; in of_devfreq_cooling_register_power()
537 snprintf(dev_name, sizeof(dev_name), "thermal-devfreq-%d", dfc->id); in of_devfreq_cooling_register_power()
539 cdev = thermal_of_cooling_device_register(np, dev_name, dfc, in of_devfreq_cooling_register_power()
549 dfc->cdev = cdev; in of_devfreq_cooling_register_power()
554 ida_simple_remove(&devfreq_ida, dfc->id); in of_devfreq_cooling_register_power()
556 kfree(dfc->power_table); in of_devfreq_cooling_register_power()
557 kfree(dfc->freq_table); in of_devfreq_cooling_register_power()
559 kfree(dfc); in of_devfreq_cooling_register_power()
594 struct devfreq_cooling_device *dfc; in devfreq_cooling_unregister() local
599 dfc = cdev->devdata; in devfreq_cooling_unregister()
601 thermal_cooling_device_unregister(dfc->cdev); in devfreq_cooling_unregister()
602 ida_simple_remove(&devfreq_ida, dfc->id); in devfreq_cooling_unregister()
603 kfree(dfc->power_table); in devfreq_cooling_unregister()
604 kfree(dfc->freq_table); in devfreq_cooling_unregister()
606 kfree(dfc); in devfreq_cooling_unregister()