Lines Matching full:devfreq
3 * A devfreq driver for NVIDIA Tegra SoCs
11 #include <linux/devfreq.h>
180 struct devfreq *devfreq; member
256 u32 band = avg_band_freq * tegra->devfreq->profile->polling_ms; in tegra_devfreq_update_avg_wmark()
269 u32 val = tegra->cur_freq * tegra->devfreq->profile->polling_ms; in tegra_devfreq_update_wmark()
348 target_freq = dev->avg_count / tegra->devfreq->profile->polling_ms; in actmon_device_target_freq()
382 mutex_lock(&tegra->devfreq->lock); in actmon_thread_isr()
393 update_devfreq(tegra->devfreq); in actmon_thread_isr()
395 mutex_unlock(&tegra->devfreq->lock); in actmon_thread_isr()
429 mutex_lock(&tegra->devfreq->lock); in tegra_actmon_delayed_update()
430 update_devfreq(tegra->devfreq); in tegra_actmon_delayed_update()
431 mutex_unlock(&tegra->devfreq->lock); in tegra_actmon_delayed_update()
471 if (mutex_trylock(&tegra->devfreq->lock)) { in tegra_actmon_cpu_notify_cb()
474 mutex_unlock(&tegra->devfreq->lock); in tegra_actmon_cpu_notify_cb()
478 * the moment, then there is no need to update the devfreq's in tegra_actmon_cpu_notify_cb()
508 dev->avg_count = tegra->cur_freq * tegra->devfreq->profile->polling_ms; in tegra_actmon_configure_device()
549 if (!tegra->devfreq->profile->polling_ms || !tegra->started) in tegra_actmon_resume()
552 actmon_writel(tegra, tegra->devfreq->profile->polling_ms - 1, in tegra_actmon_resume()
563 dev_err(tegra->devfreq->dev.parent, in tegra_actmon_resume()
583 dev_err(tegra->devfreq->dev.parent, in tegra_actmon_resume()
617 if (!tegra->devfreq->profile->polling_ms || !tegra->started) in tegra_actmon_pause()
680 stat->total_time = tegra->devfreq->profile->polling_ms * cur_freq; in tegra_devfreq_get_dev_status()
694 static int tegra_governor_get_target(struct devfreq *devfreq, in tegra_governor_get_target() argument
704 err = devfreq_update_stats(devfreq); in tegra_governor_get_target()
708 stat = &devfreq->last_status; in tegra_governor_get_target()
721 * tegra-devfreq driver operates with KHz units, while OPP table in tegra_governor_get_target()
723 * devfreq core. in tegra_governor_get_target()
730 static int tegra_governor_event_handler(struct devfreq *devfreq, in tegra_governor_event_handler() argument
733 struct tegra_devfreq *tegra = dev_get_drvdata(devfreq->dev.parent); in tegra_governor_event_handler()
738 * Couple devfreq-device with the governor early because it is in tegra_governor_event_handler()
741 tegra->devfreq = devfreq; in tegra_governor_event_handler()
745 devfreq_monitor_start(devfreq); in tegra_governor_event_handler()
751 devfreq_monitor_stop(devfreq); in tegra_governor_event_handler()
765 devfreq_update_interval(devfreq, new_delay); in tegra_governor_event_handler()
771 devfreq_monitor_suspend(devfreq); in tegra_governor_event_handler()
775 devfreq_monitor_resume(devfreq); in tegra_governor_event_handler()
797 struct devfreq *devfreq; in tegra_devfreq_probe() local
839 "tegra-devfreq", tegra); in tegra_devfreq_probe()
903 devfreq = devfreq_add_device(&pdev->dev, &tegra_devfreq_profile, in tegra_devfreq_probe()
905 if (IS_ERR(devfreq)) { in tegra_devfreq_probe()
906 err = PTR_ERR(devfreq); in tegra_devfreq_probe()
933 devfreq_remove_device(tegra->devfreq); in tegra_devfreq_remove()
972 .name = "tegra-devfreq",
979 MODULE_DESCRIPTION("Tegra devfreq driver");