From 135d6db448cfaf5a366e6572f1a02a67e35d70db Mon Sep 17 00:00:00 2001 From: Sami Kiminki Date: Fri, 7 Aug 2015 19:07:58 +0300 Subject: gpu: nvgpu: Add HAL for GPU characteristics Add function pointer for chip specific GPU characteristics init. Bug 1637486 Change-Id: I6ce5eea124d8057393dec6e86e72412cc87e1cfa Signed-off-by: Sami Kiminki Signed-off-by: Adeel Raza Reviewed-on: http://git-master/r/780535 (cherry picked from commit f5c240d6ed19b5b9eedff05767c885ad5812c71e) Reviewed-on: http://git-master/r/1120428 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Terje Bergstrom Tested-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/gk20a.c | 2 +- drivers/gpu/nvgpu/gk20a/gk20a.h | 2 ++ drivers/gpu/nvgpu/gk20a/hal_gk20a.c | 3 ++- drivers/gpu/nvgpu/gm20b/hal_gm20b.c | 3 ++- drivers/gpu/nvgpu/vgpu/vgpu.c | 2 +- 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index b8753a21..fb0a6aa3 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c @@ -889,7 +889,7 @@ static int gk20a_pm_finalize_poweron(struct device *dev) goto done; } - err = gk20a_init_gpu_characteristics(g); + err = g->ops.chip_init_gpu_characteristics(g); if (err) { gk20a_err(dev, "failed to init gk20a gpu characteristics"); goto done; diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 8a1f82bc..ee78c6e2 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h @@ -511,6 +511,8 @@ struct gpu_ops { void *scatter_buffer_ptr, size_t scatter_buffer_size); } cde; + + int (*chip_init_gpu_characteristics)(struct gk20a *g); }; struct gk20a { diff --git a/drivers/gpu/nvgpu/gk20a/hal_gk20a.c b/drivers/gpu/nvgpu/gk20a/hal_gk20a.c index 9718aad2..6df8f37c 100644 --- a/drivers/gpu/nvgpu/gk20a/hal_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/hal_gk20a.c @@ -3,7 +3,7 @@ * * GK20A Tegra HAL interface. * - * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2014-2016, NVIDIA CORPORATION. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -70,6 +70,7 @@ int gk20a_init_hal(struct gk20a *g) gk20a_init_debug_ops(gops); gk20a_init_therm_ops(gops); gops->name = "gk20a"; + gops->chip_init_gpu_characteristics = gk20a_init_gpu_characteristics; c->twod_class = FERMI_TWOD_A; c->threed_class = KEPLER_C; diff --git a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c index 5fe01833..559fee61 100644 --- a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c @@ -1,7 +1,7 @@ /* * GM20B Graphics * - * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2014-2016, NVIDIA CORPORATION. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -139,6 +139,7 @@ int gm20b_init_hal(struct gk20a *g) gm20b_init_cde_ops(gops); gm20b_init_therm_ops(gops); gops->name = "gm20b"; + gops->chip_init_gpu_characteristics = gk20a_init_gpu_characteristics; c->twod_class = FERMI_TWOD_A; c->threed_class = MAXWELL_B; diff --git a/drivers/gpu/nvgpu/vgpu/vgpu.c b/drivers/gpu/nvgpu/vgpu/vgpu.c index 5a953e20..4750d7ee 100644 --- a/drivers/gpu/nvgpu/vgpu/vgpu.c +++ b/drivers/gpu/nvgpu/vgpu/vgpu.c @@ -327,7 +327,7 @@ int vgpu_pm_finalize_poweron(struct device *dev) goto done; } - err = gk20a_init_gpu_characteristics(g); + err = g->ops.chip_init_gpu_characteristics(g); if (err) { gk20a_err(dev, "failed to init gk20a gpu characteristics"); goto done; -- cgit v1.2.2