diff options
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/vgpu.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/vgpu/vgpu.c b/drivers/gpu/nvgpu/vgpu/vgpu.c index 4948d246..aa4ece5f 100644 --- a/drivers/gpu/nvgpu/vgpu/vgpu.c +++ b/drivers/gpu/nvgpu/vgpu/vgpu.c | |||
@@ -258,6 +258,26 @@ static void vgpu_detect_chip(struct gk20a *g) | |||
258 | g->gpu_characteristics.rev); | 258 | g->gpu_characteristics.rev); |
259 | } | 259 | } |
260 | 260 | ||
261 | static int vgpu_init_gpu_characteristics(struct gk20a *g) | ||
262 | { | ||
263 | struct gk20a_platform *platform = gk20a_get_platform(g->dev); | ||
264 | u32 max_freq; | ||
265 | int err; | ||
266 | |||
267 | gk20a_dbg_fn(""); | ||
268 | |||
269 | err = gk20a_init_gpu_characteristics(g); | ||
270 | if (err) | ||
271 | return err; | ||
272 | |||
273 | if (vgpu_get_attribute(platform->virt_handle, | ||
274 | TEGRA_VGPU_ATTRIB_MAX_FREQ, &max_freq)) | ||
275 | return -ENOMEM; | ||
276 | |||
277 | g->gpu_characteristics.max_freq = max_freq; | ||
278 | return 0; | ||
279 | } | ||
280 | |||
261 | void vgpu_init_hal_common(struct gk20a *g) | 281 | void vgpu_init_hal_common(struct gk20a *g) |
262 | { | 282 | { |
263 | struct gpu_ops *gops = &g->ops; | 283 | struct gpu_ops *gops = &g->ops; |
@@ -269,7 +289,7 @@ void vgpu_init_hal_common(struct gk20a *g) | |||
269 | vgpu_init_debug_ops(gops); | 289 | vgpu_init_debug_ops(gops); |
270 | vgpu_init_fecs_trace_ops(gops); | 290 | vgpu_init_fecs_trace_ops(gops); |
271 | vgpu_init_tsg_ops(gops); | 291 | vgpu_init_tsg_ops(gops); |
272 | gops->chip_init_gpu_characteristics = gk20a_init_gpu_characteristics; | 292 | gops->chip_init_gpu_characteristics = vgpu_init_gpu_characteristics; |
273 | } | 293 | } |
274 | 294 | ||
275 | static int vgpu_init_hal(struct gk20a *g) | 295 | static int vgpu_init_hal(struct gk20a *g) |