Lines Matching refs:hsf
221 gm200_acr_hsfw_bld(struct nvkm_acr *acr, struct nvkm_acr_hsf *hsf) in gm200_acr_hsfw_bld() argument
225 .code_dma_base = hsf->vma->addr, in gm200_acr_hsfw_bld()
226 .non_sec_code_off = hsf->non_sec_addr, in gm200_acr_hsfw_bld()
227 .non_sec_code_size = hsf->non_sec_size, in gm200_acr_hsfw_bld()
228 .sec_code_off = hsf->sec_addr, in gm200_acr_hsfw_bld()
229 .sec_code_size = hsf->sec_size, in gm200_acr_hsfw_bld()
231 .data_dma_base = hsf->vma->addr + hsf->data_addr, in gm200_acr_hsfw_bld()
232 .data_size = hsf->data_size, in gm200_acr_hsfw_bld()
237 nvkm_falcon_load_dmem(hsf->falcon, &hsdesc, 0, sizeof(hsdesc), 0); in gm200_acr_hsfw_bld()
241 gm200_acr_hsfw_boot(struct nvkm_acr *acr, struct nvkm_acr_hsf *hsf, in gm200_acr_hsfw_boot() argument
246 struct nvkm_falcon *falcon = hsf->falcon; in gm200_acr_hsfw_boot()
255 nvkm_falcon_load_imem(falcon, hsf->imem, in gm200_acr_hsfw_boot()
256 falcon->code.limit - hsf->imem_size, in gm200_acr_hsfw_boot()
257 hsf->imem_size, in gm200_acr_hsfw_boot()
258 hsf->imem_tag, in gm200_acr_hsfw_boot()
262 hsf->func->bld(acr, hsf); in gm200_acr_hsfw_boot()
268 nvkm_falcon_set_start_addr(falcon, hsf->imem_tag << 8); in gm200_acr_hsfw_boot()
291 struct nvkm_acr_hsf *hsf; in gm200_acr_hsfw_load() local
317 if (!(hsf = kzalloc(sizeof(*hsf), GFP_KERNEL))) in gm200_acr_hsfw_load()
319 hsf->func = hsfw->func; in gm200_acr_hsfw_load()
320 hsf->name = hsfw->name; in gm200_acr_hsfw_load()
321 list_add_tail(&hsf->head, &acr->hsf); in gm200_acr_hsfw_load()
323 hsf->imem_size = hsfw->imem_size; in gm200_acr_hsfw_load()
324 hsf->imem_tag = hsfw->imem_tag; in gm200_acr_hsfw_load()
325 hsf->imem = kmemdup(hsfw->imem, hsfw->imem_size, GFP_KERNEL); in gm200_acr_hsfw_load()
326 if (!hsf->imem) in gm200_acr_hsfw_load()
329 hsf->non_sec_addr = hsfw->non_sec_addr; in gm200_acr_hsfw_load()
330 hsf->non_sec_size = hsfw->non_sec_size; in gm200_acr_hsfw_load()
331 hsf->sec_addr = hsfw->sec_addr; in gm200_acr_hsfw_load()
332 hsf->sec_size = hsfw->sec_size; in gm200_acr_hsfw_load()
333 hsf->data_addr = hsfw->data_addr; in gm200_acr_hsfw_load()
334 hsf->data_size = hsfw->data_size; in gm200_acr_hsfw_load()
338 hsfw->image_size, 0x1000, false, &hsf->ucode); in gm200_acr_hsfw_load()
342 nvkm_kmap(hsf->ucode); in gm200_acr_hsfw_load()
343 nvkm_wobj(hsf->ucode, 0, hsfw->image, hsfw->image_size); in gm200_acr_hsfw_load()
344 nvkm_done(hsf->ucode); in gm200_acr_hsfw_load()
346 ret = nvkm_vmm_get(acr->vmm, 12, nvkm_memory_size(hsf->ucode), in gm200_acr_hsfw_load()
347 &hsf->vma); in gm200_acr_hsfw_load()
351 ret = nvkm_memory_map(hsf->ucode, 0, acr->vmm, hsf->vma, NULL, 0); in gm200_acr_hsfw_load()
355 hsf->falcon = falcon; in gm200_acr_hsfw_load()
360 gm200_acr_unload_boot(struct nvkm_acr *acr, struct nvkm_acr_hsf *hsf) in gm200_acr_unload_boot() argument
362 return gm200_acr_hsfw_boot(acr, hsf, 0, 0x1d); in gm200_acr_unload_boot()
390 gm200_acr_load_boot(struct nvkm_acr *acr, struct nvkm_acr_hsf *hsf) in gm200_acr_load_boot() argument
392 return gm200_acr_hsfw_boot(acr, hsf, 0x10, 0); in gm200_acr_load_boot()