diff options
author | Richard Zhao <rizhao@nvidia.com> | 2015-07-23 18:10:42 -0400 |
---|---|---|
committer | Richard Zhao <rizhao@nvidia.com> | 2015-08-19 08:12:00 -0400 |
commit | a88e58cc9d2c4b9f852716240b3cabc9449d8679 (patch) | |
tree | 5965b2645913695ed36e61aa4c42fdb60045cf42 /drivers/gpu/nvgpu/vgpu/vgpu.c | |
parent | db8bce518bcf2a1b46e5897f55469f348a16c9a2 (diff) |
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 <rizhao@nvidia.com>
Reviewed-on: http://git-master/r/774148
GVS: Gerrit_Virtual_Submit
Reviewed-by: Aingara Paramakuru <aparamakuru@nvidia.com>
Reviewed-by: Ken Adams <kadams@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/vgpu/vgpu.c')
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/vgpu.c | 31 |
1 files changed, 22 insertions, 9 deletions
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 @@ | |||
22 | #include "gk20a/hal_gk20a.h" | 22 | #include "gk20a/hal_gk20a.h" |
23 | #include "gk20a/hw_mc_gk20a.h" | 23 | #include "gk20a/hw_mc_gk20a.h" |
24 | 24 | ||
25 | #include "gm20b/hal_gm20b.h" | ||
26 | |||
25 | static inline int vgpu_comm_init(struct platform_device *pdev) | 27 | static inline int vgpu_comm_init(struct platform_device *pdev) |
26 | { | 28 | { |
27 | size_t queue_sizes[] = { TEGRA_VGPU_QUEUE_SIZES }; | 29 | size_t queue_sizes[] = { TEGRA_VGPU_QUEUE_SIZES }; |
@@ -243,27 +245,38 @@ static void vgpu_detect_chip(struct gk20a *g) | |||
243 | g->gpu_characteristics.rev); | 245 | g->gpu_characteristics.rev); |
244 | } | 246 | } |
245 | 247 | ||
248 | void vgpu_init_hal_common(struct gk20a *g) | ||
249 | { | ||
250 | struct gpu_ops *gops = &g->ops; | ||
251 | |||
252 | vgpu_init_fifo_ops(gops); | ||
253 | vgpu_init_gr_ops(gops); | ||
254 | vgpu_init_ltc_ops(gops); | ||
255 | vgpu_init_mm_ops(gops); | ||
256 | vgpu_init_debug_ops(gops); | ||
257 | } | ||
258 | |||
246 | static int vgpu_init_hal(struct gk20a *g) | 259 | static int vgpu_init_hal(struct gk20a *g) |
247 | { | 260 | { |
248 | u32 ver = g->gpu_characteristics.arch + g->gpu_characteristics.impl; | 261 | u32 ver = g->gpu_characteristics.arch + g->gpu_characteristics.impl; |
262 | int err; | ||
249 | 263 | ||
250 | switch (ver) { | 264 | switch (ver) { |
251 | case GK20A_GPUID_GK20A: | 265 | case GK20A_GPUID_GK20A: |
252 | gk20a_dbg_info("gk20a detected"); | 266 | gk20a_dbg_info("gk20a detected"); |
253 | /* init gk20a ops then override with virt extensions */ | 267 | err = vgpu_gk20a_init_hal(g); |
254 | gk20a_init_hal(g); | 268 | break; |
255 | vgpu_init_fifo_ops(&g->ops); | 269 | case GK20A_GPUID_GM20B: |
256 | vgpu_init_gr_ops(&g->ops); | 270 | gk20a_dbg_info("gm20b detected"); |
257 | vgpu_init_ltc_ops(&g->ops); | 271 | err = vgpu_gm20b_init_hal(g); |
258 | vgpu_init_mm_ops(&g->ops); | ||
259 | vgpu_init_debug_ops(&g->ops); | ||
260 | break; | 272 | break; |
261 | default: | 273 | default: |
262 | gk20a_err(&g->dev->dev, "no support for %x", ver); | 274 | gk20a_err(&g->dev->dev, "no support for %x", ver); |
263 | return -ENODEV; | 275 | err = -ENODEV; |
276 | break; | ||
264 | } | 277 | } |
265 | 278 | ||
266 | return 0; | 279 | return err; |
267 | } | 280 | } |
268 | 281 | ||
269 | int vgpu_pm_finalize_poweron(struct device *dev) | 282 | int vgpu_pm_finalize_poweron(struct device *dev) |