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.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/acr_gm20b.c b/drivers/gpu/nvgpu/gm20b/acr_gm20b.c
index 3a19d6b6..152b9637 100644
--- a/drivers/gpu/nvgpu/gm20b/acr_gm20b.c
+++ b/drivers/gpu/nvgpu/gm20b/acr_gm20b.c
@@ -1213,6 +1213,39 @@ static int bl_bootstrap(struct pmu_gk20a *pmu,
1213 return 0; 1213 return 0;
1214} 1214}
1215 1215
1216int gm20b_init_nspmu_setup_hw1(struct gk20a *g)
1217{
1218 struct pmu_gk20a *pmu = &g->pmu;
1219 int err = 0;
1220
1221 gk20a_dbg_fn("");
1222
1223 mutex_lock(&pmu->isr_mutex);
1224 pmu_reset(pmu);
1225 pmu->isr_enabled = true;
1226 mutex_unlock(&pmu->isr_mutex);
1227
1228 /* setup apertures - virtual */
1229 gk20a_writel(g, pwr_fbif_transcfg_r(GK20A_PMU_DMAIDX_UCODE),
1230 pwr_fbif_transcfg_mem_type_virtual_f());
1231 gk20a_writel(g, pwr_fbif_transcfg_r(GK20A_PMU_DMAIDX_VIRT),
1232 pwr_fbif_transcfg_mem_type_virtual_f());
1233 /* setup apertures - physical */
1234 gk20a_writel(g, pwr_fbif_transcfg_r(GK20A_PMU_DMAIDX_PHYS_VID),
1235 pwr_fbif_transcfg_mem_type_physical_f() |
1236 pwr_fbif_transcfg_target_local_fb_f());
1237 gk20a_writel(g, pwr_fbif_transcfg_r(GK20A_PMU_DMAIDX_PHYS_SYS_COH),
1238 pwr_fbif_transcfg_mem_type_physical_f() |
1239 pwr_fbif_transcfg_target_coherent_sysmem_f());
1240 gk20a_writel(g, pwr_fbif_transcfg_r(GK20A_PMU_DMAIDX_PHYS_SYS_NCOH),
1241 pwr_fbif_transcfg_mem_type_physical_f() |
1242 pwr_fbif_transcfg_target_noncoherent_sysmem_f());
1243
1244 err = g->ops.pmu.pmu_nsbootstrap(pmu);
1245
1246 return err;
1247}
1248
1216static int gm20b_init_pmu_setup_hw1(struct gk20a *g, 1249static int gm20b_init_pmu_setup_hw1(struct gk20a *g,
1217 struct flcn_bl_dmem_desc *desc, u32 bl_sz) 1250 struct flcn_bl_dmem_desc *desc, u32 bl_sz)
1218{ 1251{