summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2016-12-13 03:39:27 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2016-12-21 11:45:59 -0500
commitec102080aba921f7811d90abd9288d50144bcc69 (patch)
tree3b7ca34c8db979eca40f73b625871baa53b03203 /drivers
parent145225b896bd43a918280de27260ba5a315751c8 (diff)
gpu: nvgpu: define common API to write fuses
We use tegra_fuse_control_write() on k4.4 and tegra_fuse_writel() on previous versions But gr_gm20b_set_gpc_tpc_mask() currently broken since we use tegra_fuse_writel() always to update fuses Hence define tegra_fuse_control_write() on previous kernel versions as well and use it everywhere Bug 200262155 Change-Id: I116ed77d24018dae21884344373c9eaa1750c2bd Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/1270168 Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com> Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/nvgpu/gm20b/gr_gm20b.c17
-rw-r--r--drivers/gpu/nvgpu/gm20b/gr_gm20b.h1
2 files changed, 7 insertions, 11 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
index 01537042..fc98b5ca 100644
--- a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
+++ b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
@@ -511,23 +511,18 @@ static u32 gr_gm20b_get_gpc_tpc_mask(struct gk20a *g, u32 gpc_index)
511 511
512static void gr_gm20b_set_gpc_tpc_mask(struct gk20a *g, u32 gpc_index) 512static void gr_gm20b_set_gpc_tpc_mask(struct gk20a *g, u32 gpc_index)
513{ 513{
514#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0)
515 tegra_fuse_writel(0x1, FUSE_FUSEBYPASS_0);
516 tegra_fuse_writel(0x0, FUSE_WRITE_ACCESS_SW_0);
517#else
518 tegra_fuse_control_write(0x1, FUSE_FUSEBYPASS_0); 514 tegra_fuse_control_write(0x1, FUSE_FUSEBYPASS_0);
519 tegra_fuse_control_write(0x0, FUSE_WRITE_ACCESS_SW_0); 515 tegra_fuse_control_write(0x0, FUSE_WRITE_ACCESS_SW_0);
520#endif
521 516
522 if (g->gr.gpc_tpc_mask[gpc_index] == 0x1) { 517 if (g->gr.gpc_tpc_mask[gpc_index] == 0x1) {
523 tegra_fuse_writel(0x0, FUSE_OPT_GPU_TPC0_DISABLE_0); 518 tegra_fuse_control_write(0x0, FUSE_OPT_GPU_TPC0_DISABLE_0);
524 tegra_fuse_writel(0x1, FUSE_OPT_GPU_TPC1_DISABLE_0); 519 tegra_fuse_control_write(0x1, FUSE_OPT_GPU_TPC1_DISABLE_0);
525 } else if (g->gr.gpc_tpc_mask[gpc_index] == 0x2) { 520 } else if (g->gr.gpc_tpc_mask[gpc_index] == 0x2) {
526 tegra_fuse_writel(0x1, FUSE_OPT_GPU_TPC0_DISABLE_0); 521 tegra_fuse_control_write(0x1, FUSE_OPT_GPU_TPC0_DISABLE_0);
527 tegra_fuse_writel(0x0, FUSE_OPT_GPU_TPC1_DISABLE_0); 522 tegra_fuse_control_write(0x0, FUSE_OPT_GPU_TPC1_DISABLE_0);
528 } else { 523 } else {
529 tegra_fuse_writel(0x0, FUSE_OPT_GPU_TPC0_DISABLE_0); 524 tegra_fuse_control_write(0x0, FUSE_OPT_GPU_TPC0_DISABLE_0);
530 tegra_fuse_writel(0x0, FUSE_OPT_GPU_TPC1_DISABLE_0); 525 tegra_fuse_control_write(0x0, FUSE_OPT_GPU_TPC1_DISABLE_0);
531 } 526 }
532} 527}
533 528
diff --git a/drivers/gpu/nvgpu/gm20b/gr_gm20b.h b/drivers/gpu/nvgpu/gm20b/gr_gm20b.h
index 84eb3862..a1aef80b 100644
--- a/drivers/gpu/nvgpu/gm20b/gr_gm20b.h
+++ b/drivers/gpu/nvgpu/gm20b/gr_gm20b.h
@@ -29,6 +29,7 @@ enum {
29}; 29};
30 30
31#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0) 31#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0)
32#define tegra_fuse_control_write tegra_fuse_writel
32#define FUSE_FUSEBYPASS_0 0x24 33#define FUSE_FUSEBYPASS_0 0x24
33#define FUSE_WRITE_ACCESS_SW_0 0x30 34#define FUSE_WRITE_ACCESS_SW_0 0x30
34#define FUSE_OPT_GPU_TPC0_DISABLE_0 0x30C 35#define FUSE_OPT_GPU_TPC0_DISABLE_0 0x30C