Lines Matching refs:dfc
67 struct devfreq_cooling_device *dfc = cdev->devdata;
69 *state = dfc->max_state;
77 struct devfreq_cooling_device *dfc = cdev->devdata;
79 *state = dfc->cooling_state;
87 struct devfreq_cooling_device *dfc = cdev->devdata;
88 struct devfreq *df = dfc->devfreq;
93 if (state == dfc->cooling_state)
98 if (state > dfc->max_state)
101 if (dfc->em_pd) {
102 perf_idx = dfc->max_state - state;
103 freq = dfc->em_pd->table[perf_idx].frequency * 1000;
105 freq = dfc->freq_table[state];
108 dev_pm_qos_update_request(&dfc->req_max_freq,
111 dfc->cooling_state = state;
181 struct devfreq_cooling_device *dfc = cdev->devdata;
182 struct devfreq *df = dfc->devfreq;
195 if (dfc->power_ops && dfc->power_ops->get_real_power) {
202 res = dfc->power_ops->get_real_power(df, power, freq, voltage);
204 state = dfc->capped_state;
207 dfc->res_util = dfc->em_pd->table[state].power;
208 dfc->res_util /= MICROWATT_PER_MILLIWATT;
210 dfc->res_util *= SCALE_ERROR_MITIGATION;
213 dfc->res_util /= *power;
219 perf_idx = get_perf_idx(dfc->em_pd, freq / 1000);
228 *power = dfc->em_pd->table[perf_idx].power;
240 dfc->res_util = SCALE_ERROR_MITIGATION;
247 struct devfreq_cooling_device *dfc = cdev->devdata;
250 if (state > dfc->max_state)
253 perf_idx = dfc->max_state - state;
254 *power = dfc->em_pd->table[perf_idx].power;
263 struct devfreq_cooling_device *dfc = cdev->devdata;
264 struct devfreq *df = dfc->devfreq;
276 if (dfc->power_ops && dfc->power_ops->get_real_power) {
278 est_power = power * dfc->res_util;
291 for (i = dfc->max_state; i > 0; i--) {
293 em_power_mw = dfc->em_pd->table[i].power;
299 *state = dfc->max_state - i;
300 dfc->capped_state = *state;
308 * @dfc: Pointer to devfreq cooling device.
317 static int devfreq_cooling_gen_tables(struct devfreq_cooling_device *dfc,
320 struct devfreq *df = dfc->devfreq;
325 dfc->freq_table = kcalloc(num_opps, sizeof(*dfc->freq_table),
327 if (!dfc->freq_table)
335 kfree(dfc->freq_table);
340 dfc->freq_table[i] = freq;
367 struct devfreq_cooling_device *dfc;
374 dfc = kzalloc(sizeof(*dfc), GFP_KERNEL);
375 if (!dfc)
378 dfc->devfreq = df;
380 ops = &dfc->cooling_ops;
387 dfc->em_pd = em;
393 dfc->power_ops = dfc_power;
395 num_opps = em_pd_nr_perf_states(dfc->em_pd);
402 err = devfreq_cooling_gen_tables(dfc, num_opps);
413 dfc->max_state = num_opps - 1;
415 err = dev_pm_qos_add_request(dev, &dfc->req_max_freq,
426 cdev = thermal_of_cooling_device_register(np, name, dfc, ops);
437 dfc->cdev = cdev;
442 dev_pm_qos_remove_request(&dfc->req_max_freq);
444 kfree(dfc->freq_table);
446 kfree(dfc);
527 struct devfreq_cooling_device *dfc;
533 dfc = cdev->devdata;
534 dev = dfc->devfreq->dev.parent;
536 thermal_cooling_device_unregister(dfc->cdev);
537 dev_pm_qos_remove_request(&dfc->req_max_freq);
541 kfree(dfc->freq_table);
542 kfree(dfc);