diff options
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/hw_fuse_gp10b.h | 8 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/pmu_gp10b.c | 13 |
2 files changed, 21 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/hw_fuse_gp10b.h b/drivers/gpu/nvgpu/gp10b/hw_fuse_gp10b.h index ae524ce5..2b1acf2f 100644 --- a/drivers/gpu/nvgpu/gp10b/hw_fuse_gp10b.h +++ b/drivers/gpu/nvgpu/gp10b/hw_fuse_gp10b.h | |||
@@ -134,4 +134,12 @@ static inline u32 fuse_opt_feature_fuses_override_disable_r(void) | |||
134 | { | 134 | { |
135 | return 0x000213f0; | 135 | return 0x000213f0; |
136 | } | 136 | } |
137 | static inline u32 fuse_opt_sec_debug_en_r(void) | ||
138 | { | ||
139 | return 0x00021218; | ||
140 | } | ||
141 | static inline u32 fuse_opt_priv_sec_en_r(void) | ||
142 | { | ||
143 | return 0x00021434; | ||
144 | } | ||
137 | #endif | 145 | #endif |
diff --git a/drivers/gpu/nvgpu/gp10b/pmu_gp10b.c b/drivers/gpu/nvgpu/gp10b/pmu_gp10b.c index 7832b2ed..f40c1b7b 100644 --- a/drivers/gpu/nvgpu/gp10b/pmu_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/pmu_gp10b.c | |||
@@ -22,6 +22,7 @@ | |||
22 | 22 | ||
23 | #include "pmu_gp10b.h" | 23 | #include "pmu_gp10b.h" |
24 | #include "hw_pwr_gp10b.h" | 24 | #include "hw_pwr_gp10b.h" |
25 | #include "hw_fuse_gp10b.h" | ||
25 | #include "gp10b_sysfs.h" | 26 | #include "gp10b_sysfs.h" |
26 | 27 | ||
27 | #define gp10b_dbg_pmu(fmt, arg...) \ | 28 | #define gp10b_dbg_pmu(fmt, arg...) \ |
@@ -432,6 +433,17 @@ static bool gp10b_is_priv_load(u32 falcon_id) | |||
432 | return enable_status; | 433 | return enable_status; |
433 | } | 434 | } |
434 | 435 | ||
436 | /*Dump Security related fuses*/ | ||
437 | static void pmu_dump_security_fuses_gp10b(struct gk20a *g) | ||
438 | { | ||
439 | gk20a_err(dev_from_gk20a(g), "FUSE_OPT_SEC_DEBUG_EN_0 : 0x%x", | ||
440 | gk20a_readl(g, fuse_opt_sec_debug_en_r())); | ||
441 | gk20a_err(dev_from_gk20a(g), "FUSE_OPT_PRIV_SEC_EN_0 : 0x%x", | ||
442 | gk20a_readl(g, fuse_opt_priv_sec_en_r())); | ||
443 | gk20a_err(dev_from_gk20a(g), "FUSE_GCPLEX_CONFIG_FUSE_0 : 0x%x", | ||
444 | tegra_fuse_readl(FUSE_GCPLEX_CONFIG_FUSE_0)); | ||
445 | } | ||
446 | |||
435 | void gp10b_init_pmu_ops(struct gpu_ops *gops) | 447 | void gp10b_init_pmu_ops(struct gpu_ops *gops) |
436 | { | 448 | { |
437 | if (gops->privsecurity) { | 449 | if (gops->privsecurity) { |
@@ -455,4 +467,5 @@ void gp10b_init_pmu_ops(struct gpu_ops *gops) | |||
455 | gops->pmu.send_lrf_tex_ltc_dram_overide_en_dis_cmd = | 467 | gops->pmu.send_lrf_tex_ltc_dram_overide_en_dis_cmd = |
456 | send_ecc_overide_en_dis_cmd; | 468 | send_ecc_overide_en_dis_cmd; |
457 | gops->pmu.reset = gk20a_pmu_reset; | 469 | gops->pmu.reset = gk20a_pmu_reset; |
470 | gops->pmu.dump_secure_fuses = pmu_dump_security_fuses_gp10b; | ||
458 | } | 471 | } |