diff options
author | Mahantesh Kumbar <mkumbar@nvidia.com> | 2018-06-20 14:42:01 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-07-10 02:40:10 -0400 |
commit | 4cd59404a2d4ab1c31605d96cff848dd4e93c3b4 (patch) | |
tree | 24884407db02f117d90cccb28b9e713731f18274 /drivers/gpu/nvgpu/gv11b | |
parent | 876953fbb85f9440bbcc1d7d59435593886b53c4 (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')
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/acr_gv11b.c | 28 |
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 | } |