summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv11b/acr_gv11b.c
diff options
context:
space:
mode:
authorMahantesh Kumbar <mkumbar@nvidia.com>2018-06-20 14:42:01 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2018-07-10 02:40:10 -0400
commit4cd59404a2d4ab1c31605d96cff848dd4e93c3b4 (patch)
tree24884407db02f117d90cccb28b9e713731f18274 /drivers/gpu/nvgpu/gv11b/acr_gv11b.c
parent876953fbb85f9440bbcc1d7d59435593886b53c4 (diff)
gpu: nvgpu: falcon code cleanup
-Created common falcon function nvgpu_flcn_bl_bootstrap() to bootstrap falcon bootloader -Created HAL gk20a_falcon_bl_bootstrap() which does actual bootloader bootstrap by fetching parameters and loading code/parameters as needed. -Created HAL ops bl_bootstrap under nvgpu_falcon_ops. -Created struct nvgpu_falcon_bl_info to hold info required for bootloader to pass to common function -Removed falcons bootstrap code in multiple file & made changes to fill struct nvgpu_falcon_bl_info & call nvgpu_flcn_bl_bootstrap(). Change-Id: Iee275233915ff11f9afb5207ac0c3338ca9dacc1 Signed-off-by: Mahantesh Kumbar <mkumbar@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1756104 Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: svc-misra-checker <svc-misra-checker@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/acr_gv11b.c')
-rw-r--r--drivers/gpu/nvgpu/gv11b/acr_gv11b.c28
1 files changed, 7 insertions, 21 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/acr_gv11b.c b/drivers/gpu/nvgpu/gv11b/acr_gv11b.c
index 673cb7f2..7fe3a2ea 100644
--- a/drivers/gpu/nvgpu/gv11b/acr_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/acr_gv11b.c
@@ -206,11 +206,8 @@ static int bl_bootstrap(struct nvgpu_pmu *pmu,
206 struct flcn_bl_dmem_desc_v1 *pbl_desc, u32 bl_sz) 206 struct flcn_bl_dmem_desc_v1 *pbl_desc, u32 bl_sz)
207{ 207{
208 struct gk20a *g = gk20a_from_pmu(pmu); 208 struct gk20a *g = gk20a_from_pmu(pmu);
209 struct acr_desc *acr = &g->acr;
210 struct mm_gk20a *mm = &g->mm; 209 struct mm_gk20a *mm = &g->mm;
211 u32 virt_addr = 0; 210 struct nvgpu_falcon_bl_info bl_info;
212 struct hsflcn_bl_desc *pmu_bl_gm10x_desc = g->acr.pmu_hsbl_desc;
213 u32 dst;
214 211
215 nvgpu_log_fn(g, " "); 212 nvgpu_log_fn(g, " ");
216 213
@@ -225,23 +222,12 @@ static int bl_bootstrap(struct nvgpu_pmu *pmu,
225 pwr_pmu_new_instblk_target_sys_coh_f() : 222 pwr_pmu_new_instblk_target_sys_coh_f() :
226 pwr_pmu_new_instblk_target_sys_ncoh_f())) ; 223 pwr_pmu_new_instblk_target_sys_ncoh_f())) ;
227 224
228 /*copy bootloader interface structure to dmem*/ 225 bl_info.bl_src = g->acr.hsbl_ucode.cpu_va;
229 nvgpu_flcn_copy_to_dmem(pmu->flcn, 0, (u8 *)pbl_desc, 226 bl_info.bl_desc = (u8 *)pbl_desc;
230 sizeof(struct flcn_bl_dmem_desc_v1), 0); 227 bl_info.bl_desc_size = sizeof(struct flcn_bl_dmem_desc_v1);
231 228 bl_info.bl_size = bl_sz;
232 /* copy bootloader to TOP of IMEM */ 229 bl_info.bl_start_tag = g->acr.pmu_hsbl_desc->bl_start_tag;
233 dst = (pwr_falcon_hwcfg_imem_size_v( 230 nvgpu_flcn_bl_bootstrap(&g->pmu_flcn, &bl_info);
234 gk20a_readl(g, pwr_falcon_hwcfg_r())) << 8) - bl_sz;
235
236 nvgpu_flcn_copy_to_imem(pmu->flcn, dst,
237 (u8 *)(acr->hsbl_ucode.cpu_va), bl_sz, 0, 0,
238 pmu_bl_gm10x_desc->bl_start_tag);
239
240 gv11b_dbg_pmu(g, "Before starting falcon with BL\n");
241
242 virt_addr = pmu_bl_gm10x_desc->bl_start_tag << 8;
243
244 nvgpu_flcn_bootstrap(pmu->flcn, virt_addr);
245 231
246 return 0; 232 return 0;
247} 233}