summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gm20b/acr_gm20b.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b/acr_gm20b.c')
-rw-r--r--drivers/gpu/nvgpu/gm20b/acr_gm20b.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/acr_gm20b.c b/drivers/gpu/nvgpu/gm20b/acr_gm20b.c
index 1e07f139..2e33c3f0 100644
--- a/drivers/gpu/nvgpu/gm20b/acr_gm20b.c
+++ b/drivers/gpu/nvgpu/gm20b/acr_gm20b.c
@@ -216,7 +216,7 @@ int prepare_ucode_blob(struct gk20a *g)
216 struct ls_flcn_mgr lsfm_l, *plsfm; 216 struct ls_flcn_mgr lsfm_l, *plsfm;
217 struct pmu_gk20a *pmu = &g->pmu; 217 struct pmu_gk20a *pmu = &g->pmu;
218 218
219 if (g->acr.ucode_blob_start) { 219 if (g->acr.ucode_blob.cpu_va) {
220 /*Recovery case, we do not need to form 220 /*Recovery case, we do not need to form
221 non WPR blob of ucodes*/ 221 non WPR blob of ucodes*/
222 err = gk20a_init_pmu(pmu); 222 err = gk20a_init_pmu(pmu);
@@ -238,23 +238,20 @@ int prepare_ucode_blob(struct gk20a *g)
238 if (err) 238 if (err)
239 return err; 239 return err;
240 240
241 if (plsfm->managed_flcn_cnt && !plsfm->mem.cpu_va) { 241 if (plsfm->managed_flcn_cnt && !g->acr.ucode_blob.cpu_va) {
242 /* Generate WPR requirements*/ 242 /* Generate WPR requirements*/
243 err = lsf_gen_wpr_requirements(g, plsfm); 243 err = lsf_gen_wpr_requirements(g, plsfm);
244 if (err) 244 if (err)
245 return err; 245 return err;
246 246
247 /*Alloc memory to hold ucode blob contents*/ 247 /*Alloc memory to hold ucode blob contents*/
248 err = gk20a_gmmu_alloc(g, plsfm->wpr_size, &plsfm->mem); 248 err = gk20a_gmmu_alloc(g, plsfm->wpr_size, &g->acr.ucode_blob);
249 if (err) 249 if (err)
250 return err; 250 return err;
251 251
252 gm20b_dbg_pmu("managed LS falcon %d, WPR size %d bytes.\n", 252 gm20b_dbg_pmu("managed LS falcon %d, WPR size %d bytes.\n",
253 plsfm->managed_flcn_cnt, plsfm->wpr_size); 253 plsfm->managed_flcn_cnt, plsfm->wpr_size);
254 lsfm_init_wpr_contents(g, plsfm, plsfm->mem.cpu_va); 254 lsfm_init_wpr_contents(g, plsfm, g->acr.ucode_blob.cpu_va);
255 g->acr.ucode_blob_start = g->ops.mm.get_iova_addr(g,
256 plsfm->mem.sgt->sgl, 0);
257 g->acr.ucode_blob_size = plsfm->wpr_size;
258 } else { 255 } else {
259 gm20b_dbg_pmu("LSFM is managing no falcons.\n"); 256 gm20b_dbg_pmu("LSFM is managing no falcons.\n");
260 } 257 }
@@ -880,8 +877,8 @@ int gm20b_bootstrap_hs_flcn(struct gk20a *g)
880 u32 *acr_ucode_header_t210_load; 877 u32 *acr_ucode_header_t210_load;
881 u32 *acr_ucode_data_t210_load; 878 u32 *acr_ucode_data_t210_load;
882 879
883 start = acr->ucode_blob_start; 880 start = g->ops.mm.get_iova_addr(g, acr->ucode_blob.sgt->sgl, 0);
884 size = acr->ucode_blob_size; 881 size = acr->ucode_blob.size;
885 882
886 gm20b_dbg_pmu(""); 883 gm20b_dbg_pmu("");
887 884