Lines Matching full:gpu
20 struct msm_gpu *gpu = dev_to_gpu(dev); in msm_devfreq_target() local
26 * If the GPU is idle, devfreq is not aware, so just ignore in msm_devfreq_target()
29 if (gpu->devfreq.idle_freq) { in msm_devfreq_target()
30 gpu->devfreq.idle_freq = *freq; in msm_devfreq_target()
39 if (gpu->funcs->gpu_set_freq) in msm_devfreq_target()
40 gpu->funcs->gpu_set_freq(gpu, opp); in msm_devfreq_target()
42 clk_set_rate(gpu->core_clk, *freq); in msm_devfreq_target()
49 static unsigned long get_freq(struct msm_gpu *gpu) in get_freq() argument
51 if (gpu->devfreq.idle_freq) in get_freq()
52 return gpu->devfreq.idle_freq; in get_freq()
54 if (gpu->funcs->gpu_get_freq) in get_freq()
55 return gpu->funcs->gpu_get_freq(gpu); in get_freq()
57 return clk_get_rate(gpu->core_clk); in get_freq()
63 struct msm_gpu *gpu = dev_to_gpu(dev); in msm_devfreq_get_dev_status() local
66 status->current_frequency = get_freq(gpu); in msm_devfreq_get_dev_status()
67 status->busy_time = gpu->funcs->gpu_busy(gpu); in msm_devfreq_get_dev_status()
70 status->total_time = ktime_us_delta(time, gpu->devfreq.time); in msm_devfreq_get_dev_status()
71 gpu->devfreq.time = time; in msm_devfreq_get_dev_status()
91 void msm_devfreq_init(struct msm_gpu *gpu) in msm_devfreq_init() argument
94 if (!gpu->funcs->gpu_busy) in msm_devfreq_init()
97 msm_devfreq_profile.initial_freq = gpu->fast_rate; in msm_devfreq_init()
108 gpu->devfreq.devfreq = devm_devfreq_add_device(&gpu->pdev->dev, in msm_devfreq_init()
112 if (IS_ERR(gpu->devfreq.devfreq)) { in msm_devfreq_init()
113 DRM_DEV_ERROR(&gpu->pdev->dev, "Couldn't initialize GPU devfreq\n"); in msm_devfreq_init()
114 gpu->devfreq.devfreq = NULL; in msm_devfreq_init()
118 devfreq_suspend_device(gpu->devfreq.devfreq); in msm_devfreq_init()
120 gpu->cooling = of_devfreq_cooling_register(gpu->pdev->dev.of_node, in msm_devfreq_init()
121 gpu->devfreq.devfreq); in msm_devfreq_init()
122 if (IS_ERR(gpu->cooling)) { in msm_devfreq_init()
123 DRM_DEV_ERROR(&gpu->pdev->dev, in msm_devfreq_init()
124 "Couldn't register GPU cooling device\n"); in msm_devfreq_init()
125 gpu->cooling = NULL; in msm_devfreq_init()
129 void msm_devfreq_cleanup(struct msm_gpu *gpu) in msm_devfreq_cleanup() argument
131 devfreq_cooling_unregister(gpu->cooling); in msm_devfreq_cleanup()
134 void msm_devfreq_resume(struct msm_gpu *gpu) in msm_devfreq_resume() argument
136 gpu->devfreq.busy_cycles = 0; in msm_devfreq_resume()
137 gpu->devfreq.time = ktime_get(); in msm_devfreq_resume()
139 devfreq_resume_device(gpu->devfreq.devfreq); in msm_devfreq_resume()
142 void msm_devfreq_suspend(struct msm_gpu *gpu) in msm_devfreq_suspend() argument
144 devfreq_suspend_device(gpu->devfreq.devfreq); in msm_devfreq_suspend()
147 void msm_devfreq_active(struct msm_gpu *gpu) in msm_devfreq_active() argument
149 struct msm_gpu_devfreq *df = &gpu->devfreq; in msm_devfreq_active()
176 msm_devfreq_target(&gpu->pdev->dev, &target_freq, 0); in msm_devfreq_active()
182 msm_devfreq_get_dev_status(&gpu->pdev->dev, &status); in msm_devfreq_active()
187 void msm_devfreq_idle(struct msm_gpu *gpu) in msm_devfreq_idle() argument
189 struct msm_gpu_devfreq *df = &gpu->devfreq; in msm_devfreq_idle()
201 idle_freq = get_freq(gpu); in msm_devfreq_idle()
203 if (gpu->clamp_to_idle) in msm_devfreq_idle()
204 msm_devfreq_target(&gpu->pdev->dev, &target_freq, 0); in msm_devfreq_idle()