Lines Matching full:devfreq
3 * A devfreq driver for NVIDIA Tegra SoCs
11 #include <linux/devfreq.h>
157 struct devfreq *devfreq; member
230 u32 band = avg_band_freq * tegra->devfreq->profile->polling_ms; in tegra_devfreq_update_avg_wmark()
243 u32 val = tegra->cur_freq * tegra->devfreq->profile->polling_ms; in tegra_devfreq_update_wmark()
322 target_freq = dev->avg_count / tegra->devfreq->profile->polling_ms; in actmon_device_target_freq()
356 mutex_lock(&tegra->devfreq->lock); in actmon_thread_isr()
367 update_devfreq(tegra->devfreq); in actmon_thread_isr()
369 mutex_unlock(&tegra->devfreq->lock); in actmon_thread_isr()
403 mutex_lock(&tegra->devfreq->lock); in tegra_actmon_delayed_update()
404 update_devfreq(tegra->devfreq); in tegra_actmon_delayed_update()
405 mutex_unlock(&tegra->devfreq->lock); in tegra_actmon_delayed_update()
445 if (mutex_trylock(&tegra->devfreq->lock)) { in tegra_actmon_cpu_notify_cb()
448 mutex_unlock(&tegra->devfreq->lock); in tegra_actmon_cpu_notify_cb()
452 * the moment, then there is no need to update the devfreq's in tegra_actmon_cpu_notify_cb()
482 dev->avg_count = tegra->cur_freq * tegra->devfreq->profile->polling_ms; in tegra_actmon_configure_device()
523 if (!tegra->devfreq->profile->polling_ms || !tegra->started) in tegra_actmon_resume()
526 actmon_writel(tegra, tegra->devfreq->profile->polling_ms - 1, in tegra_actmon_resume()
537 dev_err(tegra->devfreq->dev.parent, in tegra_actmon_resume()
557 dev_err(tegra->devfreq->dev.parent, in tegra_actmon_resume()
591 if (!tegra->devfreq->profile->polling_ms || !tegra->started) in tegra_actmon_pause()
616 struct devfreq *devfreq = tegra->devfreq; in tegra_devfreq_target() local
640 clk_set_min_rate(tegra->emc_clock, devfreq->previous_freq); in tegra_devfreq_target()
669 stat->total_time = tegra->devfreq->profile->polling_ms * cur_freq; in tegra_devfreq_get_dev_status()
682 static int tegra_governor_get_target(struct devfreq *devfreq, in tegra_governor_get_target() argument
692 err = devfreq_update_stats(devfreq); in tegra_governor_get_target()
696 stat = &devfreq->last_status; in tegra_governor_get_target()
713 static int tegra_governor_event_handler(struct devfreq *devfreq, in tegra_governor_event_handler() argument
716 struct tegra_devfreq *tegra = dev_get_drvdata(devfreq->dev.parent); in tegra_governor_event_handler()
721 * Couple devfreq-device with the governor early because it is in tegra_governor_event_handler()
724 tegra->devfreq = devfreq; in tegra_governor_event_handler()
728 devfreq_monitor_start(devfreq); in tegra_governor_event_handler()
734 devfreq_monitor_stop(devfreq); in tegra_governor_event_handler()
748 devfreq_update_interval(devfreq, new_delay); in tegra_governor_event_handler()
754 devfreq_monitor_suspend(devfreq); in tegra_governor_event_handler()
758 devfreq_monitor_resume(devfreq); in tegra_governor_event_handler()
778 struct devfreq *devfreq; in tegra_devfreq_probe() local
819 "tegra-devfreq", tegra); in tegra_devfreq_probe()
887 devfreq = devfreq_add_device(&pdev->dev, &tegra_devfreq_profile, in tegra_devfreq_probe()
889 if (IS_ERR(devfreq)) { in tegra_devfreq_probe()
890 err = PTR_ERR(devfreq); in tegra_devfreq_probe()
913 devfreq_remove_device(tegra->devfreq); in tegra_devfreq_remove()
936 .name = "tegra-devfreq",
943 MODULE_DESCRIPTION("Tegra devfreq driver");