diff options
author | Mahantesh Kumbar <mkumbar@nvidia.com> | 2016-05-23 06:42:11 -0400 |
---|---|---|
committer | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-05-26 19:04:25 -0400 |
commit | e9d5e7dfca6ac2fa7af380ceea0a0ca4ac3827c6 (patch) | |
tree | 1b46893ce4b27ef947937162eb3f3782ca3f39a2 /drivers/gpu/nvgpu/gk20a | |
parent | ad24c028dba639cebefc3326f925e62c3724a59e (diff) |
gpu: nvgpu: secure boot HAL update
Updated/added secure boot HAL with methods
required to support multiple GPU chips.
JIRA DNVGPU-10
Change-Id: I343b289f2236fd6a6b0ecf9115367ce19990e7d5
Signed-off-by: Mahantesh Kumbar <mkumbar@nvidia.com>
Reviewed-on: http://git-master/r/1151784
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 19 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | 13 |
2 files changed, 30 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index d131862b..d96ce3d8 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h | |||
@@ -534,6 +534,25 @@ struct gpu_ops { | |||
534 | (struct gk20a *g, u32 mask); | 534 | (struct gk20a *g, u32 mask); |
535 | void (*dump_secure_fuses)(struct gk20a *g); | 535 | void (*dump_secure_fuses)(struct gk20a *g); |
536 | int (*reset)(struct gk20a *g); | 536 | int (*reset)(struct gk20a *g); |
537 | int (*falcon_wait_for_halt)(struct gk20a *g, | ||
538 | unsigned int timeout); | ||
539 | int (*falcon_clear_halt_interrupt_status)(struct gk20a *g, | ||
540 | unsigned int timeout); | ||
541 | int (*init_falcon_setup_hw)(struct gk20a *g, | ||
542 | struct flcn_bl_dmem_desc *desc, u32 bl_sz); | ||
543 | bool (*is_lazy_bootstrap)(u32 falcon_id); | ||
544 | bool (*is_priv_load)(u32 falcon_id); | ||
545 | void (*get_wpr)(struct gk20a *g, u64 *base, u64 *size); | ||
546 | int (*alloc_blob_space)(struct gk20a *g, | ||
547 | size_t size, struct mem_desc *mem); | ||
548 | int (*pmu_populate_loader_cfg)(struct gk20a *g, | ||
549 | struct lsfm_managed_ucode_img *lsfm, | ||
550 | union flcn_bl_generic_desc *p_bl_gen_desc, | ||
551 | u32 *p_bl_gen_desc_size); | ||
552 | int (*flcn_populate_bl_dmem_desc)(struct gk20a *g, | ||
553 | struct lsfm_managed_ucode_img *lsfm, | ||
554 | union flcn_bl_generic_desc *p_bl_gen_desc, | ||
555 | u32 *p_bl_gen_desc_size, u32 falconid); | ||
537 | u32 lspmuwprinitdone; | 556 | u32 lspmuwprinitdone; |
538 | u32 lsfloadedfalconid; | 557 | u32 lsfloadedfalconid; |
539 | bool fecsbootstrapdone; | 558 | bool fecsbootstrapdone; |
diff --git a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c index 08ef7738..a8ebaf7a 100644 --- a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | |||
@@ -2758,9 +2758,12 @@ static void gk20a_write_dmatrfbase(struct gk20a *g, u32 addr) | |||
2758 | 2758 | ||
2759 | int gk20a_pmu_reset(struct gk20a *g) | 2759 | int gk20a_pmu_reset(struct gk20a *g) |
2760 | { | 2760 | { |
2761 | gk20a_reset(g, mc_enable_pwr_enabled_f()); | 2761 | int err; |
2762 | struct pmu_gk20a *pmu = &g->pmu; | ||
2762 | 2763 | ||
2763 | return 0; | 2764 | err = pmu_reset(pmu); |
2765 | |||
2766 | return err; | ||
2764 | } | 2767 | } |
2765 | 2768 | ||
2766 | void gk20a_init_pmu_ops(struct gpu_ops *gops) | 2769 | void gk20a_init_pmu_ops(struct gpu_ops *gops) |
@@ -2776,6 +2779,12 @@ void gk20a_init_pmu_ops(struct gpu_ops *gops) | |||
2776 | gops->pmu.pmu_pg_grinit_param = NULL; | 2779 | gops->pmu.pmu_pg_grinit_param = NULL; |
2777 | gops->pmu.send_lrf_tex_ltc_dram_overide_en_dis_cmd = NULL; | 2780 | gops->pmu.send_lrf_tex_ltc_dram_overide_en_dis_cmd = NULL; |
2778 | gops->pmu.dump_secure_fuses = NULL; | 2781 | gops->pmu.dump_secure_fuses = NULL; |
2782 | gops->pmu.is_lazy_bootstrap = NULL; | ||
2783 | gops->pmu.is_priv_load = NULL; | ||
2784 | gops->pmu.get_wpr = NULL; | ||
2785 | gops->pmu.alloc_blob_space = NULL; | ||
2786 | gops->pmu.pmu_populate_loader_cfg = NULL; | ||
2787 | gops->pmu.flcn_populate_bl_dmem_desc = NULL; | ||
2779 | gops->pmu.reset = gk20a_pmu_reset; | 2788 | gops->pmu.reset = gk20a_pmu_reset; |
2780 | } | 2789 | } |
2781 | 2790 | ||