summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/nvgpu/gp10b/hw_fuse_gp10b.h8
-rw-r--r--drivers/gpu/nvgpu/gp10b/pmu_gp10b.c13
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}
137static inline u32 fuse_opt_sec_debug_en_r(void)
138{
139 return 0x00021218;
140}
141static 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*/
437static 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
435void gp10b_init_pmu_ops(struct gpu_ops *gops) 447void 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}