Lines Matching refs:ccdev
132 static int clock_cooling_get_property(struct clock_cooling_device *ccdev, in clock_cooling_get_property() argument
141 struct cpufreq_frequency_table *pos, *table = ccdev->freq_table; in clock_cooling_get_property()
217 struct clock_cooling_device *ccdev = cdev->devdata; in clock_cooling_get_level() local
220 if (clock_cooling_get_property(ccdev, (unsigned long)freq, &val, in clock_cooling_get_level()
241 clock_cooling_get_frequency(struct clock_cooling_device *ccdev, in clock_cooling_get_frequency() argument
247 ret = clock_cooling_get_property(ccdev, level, &freq, GET_FREQ); in clock_cooling_get_frequency()
266 static int clock_cooling_apply(struct clock_cooling_device *ccdev, in clock_cooling_apply() argument
274 if (ccdev->clock_state == cooling_state) in clock_cooling_apply()
277 clip_freq = clock_cooling_get_frequency(ccdev, cooling_state); in clock_cooling_apply()
281 cur_freq = clk_get_rate(ccdev->clk); in clock_cooling_apply()
283 mutex_lock(&ccdev->lock); in clock_cooling_apply()
284 ccdev->clock_state = cooling_state; in clock_cooling_apply()
285 ccdev->clock_val = clip_freq; in clock_cooling_apply()
288 ret = clk_set_rate(ccdev->clk, clip_freq); in clock_cooling_apply()
289 mutex_unlock(&ccdev->lock); in clock_cooling_apply()
310 struct clock_cooling_device *ccdev = to_clock_cooling_device(nb); in clock_cooling_clock_notifier() local
320 if (ndata->new_rate > ccdev->clock_val) in clock_cooling_clock_notifier()
345 struct clock_cooling_device *ccdev = cdev->devdata; in clock_cooling_get_max_state() local
349 ret = clock_cooling_get_property(ccdev, 0, &count, GET_MAXL); in clock_cooling_get_max_state()
369 struct clock_cooling_device *ccdev = cdev->devdata; in clock_cooling_get_cur_state() local
371 *state = ccdev->clock_state; in clock_cooling_get_cur_state()
421 struct clock_cooling_device *ccdev = NULL; in clock_cooling_register() local
425 ccdev = devm_kzalloc(dev, sizeof(*ccdev), GFP_KERNEL); in clock_cooling_register()
426 if (!ccdev) in clock_cooling_register()
429 ccdev->dev = dev; in clock_cooling_register()
430 ccdev->clk = devm_clk_get(dev, clock_name); in clock_cooling_register()
431 if (IS_ERR(ccdev->clk)) in clock_cooling_register()
432 return ERR_CAST(ccdev->clk); in clock_cooling_register()
434 ret = clock_cooling_get_idr(&ccdev->id); in clock_cooling_register()
438 snprintf(dev_name, sizeof(dev_name), "thermal-clock-%d", ccdev->id); in clock_cooling_register()
440 cdev = thermal_cooling_device_register(dev_name, ccdev, in clock_cooling_register()
443 release_idr(ccdev->id); in clock_cooling_register()
446 ccdev->cdev = cdev; in clock_cooling_register()
447 ccdev->clk_rate_change_nb.notifier_call = clock_cooling_clock_notifier; in clock_cooling_register()
450 ret = dev_pm_opp_init_cpufreq_table(dev, &ccdev->freq_table); in clock_cooling_register()
452 release_idr(ccdev->id); in clock_cooling_register()
455 ccdev->clock_state = 0; in clock_cooling_register()
456 ccdev->clock_val = clock_cooling_get_frequency(ccdev, 0); in clock_cooling_register()
458 clk_notifier_register(ccdev->clk, &ccdev->clk_rate_change_nb); in clock_cooling_register()
472 struct clock_cooling_device *ccdev; in clock_cooling_unregister() local
477 ccdev = cdev->devdata; in clock_cooling_unregister()
479 clk_notifier_unregister(ccdev->clk, &ccdev->clk_rate_change_nb); in clock_cooling_unregister()
480 dev_pm_opp_free_cpufreq_table(ccdev->dev, &ccdev->freq_table); in clock_cooling_unregister()
482 thermal_cooling_device_unregister(ccdev->cdev); in clock_cooling_unregister()
483 release_idr(ccdev->id); in clock_cooling_unregister()