From a88e58cc9d2c4b9f852716240b3cabc9449d8679 Mon Sep 17 00:00:00 2001 From: Richard Zhao Date: Thu, 23 Jul 2015 15:10:42 -0700 Subject: gpu: nvgpu: vgpu: add t210 gm20b support - add hal initializaiton - create folders vgpu/gk20a and vgpu/gm20b for specific code Bug 1653185 Change-Id: If94d45e22a1d73d2e4916673736cc29751be4e40 Signed-off-by: Richard Zhao Reviewed-on: http://git-master/r/774148 GVS: Gerrit_Virtual_Submit Reviewed-by: Aingara Paramakuru Reviewed-by: Ken Adams --- drivers/gpu/nvgpu/vgpu/vgpu.c | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) (limited to 'drivers/gpu/nvgpu/vgpu/vgpu.c') diff --git a/drivers/gpu/nvgpu/vgpu/vgpu.c b/drivers/gpu/nvgpu/vgpu/vgpu.c index b16fe47c..b2c08d68 100644 --- a/drivers/gpu/nvgpu/vgpu/vgpu.c +++ b/drivers/gpu/nvgpu/vgpu/vgpu.c @@ -22,6 +22,8 @@ #include "gk20a/hal_gk20a.h" #include "gk20a/hw_mc_gk20a.h" +#include "gm20b/hal_gm20b.h" + static inline int vgpu_comm_init(struct platform_device *pdev) { size_t queue_sizes[] = { TEGRA_VGPU_QUEUE_SIZES }; @@ -243,27 +245,38 @@ static void vgpu_detect_chip(struct gk20a *g) g->gpu_characteristics.rev); } +void vgpu_init_hal_common(struct gk20a *g) +{ + struct gpu_ops *gops = &g->ops; + + vgpu_init_fifo_ops(gops); + vgpu_init_gr_ops(gops); + vgpu_init_ltc_ops(gops); + vgpu_init_mm_ops(gops); + vgpu_init_debug_ops(gops); +} + static int vgpu_init_hal(struct gk20a *g) { u32 ver = g->gpu_characteristics.arch + g->gpu_characteristics.impl; + int err; switch (ver) { case GK20A_GPUID_GK20A: gk20a_dbg_info("gk20a detected"); - /* init gk20a ops then override with virt extensions */ - gk20a_init_hal(g); - vgpu_init_fifo_ops(&g->ops); - vgpu_init_gr_ops(&g->ops); - vgpu_init_ltc_ops(&g->ops); - vgpu_init_mm_ops(&g->ops); - vgpu_init_debug_ops(&g->ops); + err = vgpu_gk20a_init_hal(g); + break; + case GK20A_GPUID_GM20B: + gk20a_dbg_info("gm20b detected"); + err = vgpu_gm20b_init_hal(g); break; default: gk20a_err(&g->dev->dev, "no support for %x", ver); - return -ENODEV; + err = -ENODEV; + break; } - return 0; + return err; } int vgpu_pm_finalize_poweron(struct device *dev) -- cgit v1.2.2