diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gp106/sec2_gp106.c')
-rw-r--r-- | drivers/gpu/nvgpu/gp106/sec2_gp106.c | 30 |
1 files changed, 7 insertions, 23 deletions
diff --git a/drivers/gpu/nvgpu/gp106/sec2_gp106.c b/drivers/gpu/nvgpu/gp106/sec2_gp106.c index d480d875..29fc2df0 100644 --- a/drivers/gpu/nvgpu/gp106/sec2_gp106.c +++ b/drivers/gpu/nvgpu/gp106/sec2_gp106.c | |||
@@ -82,12 +82,9 @@ int bl_bootstrap_sec2(struct nvgpu_pmu *pmu, | |||
82 | void *desc, u32 bl_sz) | 82 | void *desc, u32 bl_sz) |
83 | { | 83 | { |
84 | struct gk20a *g = gk20a_from_pmu(pmu); | 84 | struct gk20a *g = gk20a_from_pmu(pmu); |
85 | struct acr_desc *acr = &g->acr; | ||
86 | struct mm_gk20a *mm = &g->mm; | 85 | struct mm_gk20a *mm = &g->mm; |
87 | u32 virt_addr = 0; | 86 | struct nvgpu_falcon_bl_info bl_info; |
88 | struct hsflcn_bl_desc *pmu_bl_gm10x_desc = g->acr.pmu_hsbl_desc; | ||
89 | u32 data = 0; | 87 | u32 data = 0; |
90 | u32 dst; | ||
91 | 88 | ||
92 | nvgpu_log_fn(g, " "); | 89 | nvgpu_log_fn(g, " "); |
93 | 90 | ||
@@ -113,25 +110,12 @@ int bl_bootstrap_sec2(struct nvgpu_pmu *pmu, | |||
113 | data |= (1 << 3); | 110 | data |= (1 << 3); |
114 | gk20a_writel(g, psec_falcon_engctl_r(), data); | 111 | gk20a_writel(g, psec_falcon_engctl_r(), data); |
115 | 112 | ||
116 | /*copy bootloader interface structure to dmem*/ | 113 | bl_info.bl_src = g->acr.hsbl_ucode.cpu_va; |
117 | nvgpu_flcn_copy_to_dmem(&g->sec2_flcn, 0, (u8 *)desc, | 114 | bl_info.bl_desc = desc; |
118 | sizeof(struct flcn_bl_dmem_desc), 0); | 115 | bl_info.bl_desc_size = sizeof(struct flcn_bl_dmem_desc_v1); |
119 | 116 | bl_info.bl_size = bl_sz; | |
120 | /* copy bootloader to TOP of IMEM */ | 117 | bl_info.bl_start_tag = g->acr.pmu_hsbl_desc->bl_start_tag; |
121 | dst = (psec_falcon_hwcfg_imem_size_v( | 118 | nvgpu_flcn_bl_bootstrap(&g->sec2_flcn, &bl_info); |
122 | gk20a_readl(g, psec_falcon_hwcfg_r())) << 8) - bl_sz; | ||
123 | |||
124 | nvgpu_flcn_copy_to_imem(&g->sec2_flcn, dst, | ||
125 | (u8 *)(acr->hsbl_ucode.cpu_va), bl_sz, 0, 0, | ||
126 | pmu_bl_gm10x_desc->bl_start_tag); | ||
127 | |||
128 | gm20b_dbg_pmu(g, "Before starting falcon with BL\n"); | ||
129 | |||
130 | gk20a_writel(g, psec_falcon_mailbox0_r(), 0xDEADA5A5); | ||
131 | |||
132 | virt_addr = pmu_bl_gm10x_desc->bl_start_tag << 8; | ||
133 | |||
134 | nvgpu_flcn_bootstrap(&g->sec2_flcn, virt_addr); | ||
135 | 119 | ||
136 | return 0; | 120 | return 0; |
137 | } | 121 | } |