diff options
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/platform_gp10b_tegra.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/platform_gp10b_tegra.c b/drivers/gpu/nvgpu/gp10b/platform_gp10b_tegra.c index 68179685..d3ccd98e 100644 --- a/drivers/gpu/nvgpu/gp10b/platform_gp10b_tegra.c +++ b/drivers/gpu/nvgpu/gp10b/platform_gp10b_tegra.c | |||
@@ -220,6 +220,13 @@ static bool gp10b_tegra_is_railgated(struct device *dev) | |||
220 | static int gp10b_tegra_railgate(struct device *dev) | 220 | static int gp10b_tegra_railgate(struct device *dev) |
221 | { | 221 | { |
222 | struct gk20a_platform *platform = gk20a_get_platform(dev); | 222 | struct gk20a_platform *platform = gk20a_get_platform(dev); |
223 | struct gk20a_scale_profile *profile = platform->g->scale_profile; | ||
224 | |||
225 | /* remove emc frequency floor */ | ||
226 | if (profile) | ||
227 | tegra_bwmgr_set_emc( | ||
228 | (struct tegra_bwmgr_client *)profile->private_data, | ||
229 | 0, TEGRA_BWMGR_SET_EMC_FLOOR); | ||
223 | 230 | ||
224 | if (tegra_bpmp_running() && | 231 | if (tegra_bpmp_running() && |
225 | tegra_powergate_is_powered(TEGRA_POWERGATE_GPU)) { | 232 | tegra_powergate_is_powered(TEGRA_POWERGATE_GPU)) { |
@@ -237,6 +244,7 @@ static int gp10b_tegra_unrailgate(struct device *dev) | |||
237 | { | 244 | { |
238 | int ret = 0; | 245 | int ret = 0; |
239 | struct gk20a_platform *platform = gk20a_get_platform(dev); | 246 | struct gk20a_platform *platform = gk20a_get_platform(dev); |
247 | struct gk20a_scale_profile *profile = platform->g->scale_profile; | ||
240 | 248 | ||
241 | if (tegra_bpmp_running()) { | 249 | if (tegra_bpmp_running()) { |
242 | int i; | 250 | int i; |
@@ -246,6 +254,13 @@ static int gp10b_tegra_unrailgate(struct device *dev) | |||
246 | clk_prepare_enable(platform->clk[i]); | 254 | clk_prepare_enable(platform->clk[i]); |
247 | } | 255 | } |
248 | } | 256 | } |
257 | |||
258 | /* to start with set emc frequency floor to max rate*/ | ||
259 | if (profile) | ||
260 | tegra_bwmgr_set_emc( | ||
261 | (struct tegra_bwmgr_client *)profile->private_data, | ||
262 | tegra_bwmgr_get_max_emc_rate(), | ||
263 | TEGRA_BWMGR_SET_EMC_FLOOR); | ||
249 | return ret; | 264 | return ret; |
250 | } | 265 | } |
251 | 266 | ||
@@ -407,7 +422,6 @@ struct gk20a_platform t18x_gpu_tegra_platform = { | |||
407 | /* frequency scaling configuration */ | 422 | /* frequency scaling configuration */ |
408 | .prescale = gp10b_tegra_prescale, | 423 | .prescale = gp10b_tegra_prescale, |
409 | .postscale = gp10b_tegra_postscale, | 424 | .postscale = gp10b_tegra_postscale, |
410 | |||
411 | .devfreq_governor = "nvhost_podgov", | 425 | .devfreq_governor = "nvhost_podgov", |
412 | .qos_id = PM_QOS_GPU_FREQ_MIN, | 426 | .qos_id = PM_QOS_GPU_FREQ_MIN, |
413 | 427 | ||