Lines Matching refs:acr

40 gm200_acr_nofw(struct nvkm_acr *acr, int ver, const struct nvkm_acr_fwif *fwif)  in gm200_acr_nofw()  argument
42 nvkm_warn(&acr->subdev, "firmware unavailable\n"); in gm200_acr_nofw()
47 gm200_acr_init(struct nvkm_acr *acr) in gm200_acr_init() argument
49 return nvkm_acr_hsf_boot(acr, "load"); in gm200_acr_init()
53 gm200_acr_wpr_check(struct nvkm_acr *acr, u64 *start, u64 *limit) in gm200_acr_wpr_check() argument
55 struct nvkm_device *device = acr->subdev.device; in gm200_acr_wpr_check()
65 gm200_acr_wpr_patch(struct nvkm_acr *acr, s64 adjust) in gm200_acr_wpr_patch() argument
67 struct nvkm_subdev *subdev = &acr->subdev; in gm200_acr_wpr_patch()
74 nvkm_robj(acr->wpr, offset, &hdr, sizeof(hdr)); in gm200_acr_wpr_patch()
77 list_for_each_entry(lsfw, &acr->lsfw, head) { in gm200_acr_wpr_patch()
81 nvkm_robj(acr->wpr, hdr.lsb_offset, &lsb, sizeof(lsb)); in gm200_acr_wpr_patch()
84 lsfw->func->bld_patch(acr, lsb.tail.bl_data_off, adjust); in gm200_acr_wpr_patch()
112 gm200_acr_wpr_build_lsb(struct nvkm_acr *acr, struct nvkm_acr_lsfw *lsfw) in gm200_acr_wpr_build_lsb() argument
122 nvkm_wobj(acr->wpr, lsfw->offset.lsb, &hdr, sizeof(hdr)); in gm200_acr_wpr_build_lsb()
127 gm200_acr_wpr_build(struct nvkm_acr *acr, struct nvkm_acr_lsf *rtos) in gm200_acr_wpr_build() argument
134 list_for_each_entry(lsfw, &acr->lsfw, head) { in gm200_acr_wpr_build()
144 nvkm_wobj(acr->wpr, offset, &hdr, sizeof(hdr)); in gm200_acr_wpr_build()
148 ret = gm200_acr_wpr_build_lsb(acr, lsfw); in gm200_acr_wpr_build()
153 nvkm_wobj(acr->wpr, lsfw->offset.img, in gm200_acr_wpr_build()
158 lsfw->func->bld_write(acr, lsfw->offset.bld, lsfw); in gm200_acr_wpr_build()
162 nvkm_wo32(acr->wpr, offset, WPR_HEADER_V0_FALCON_ID_INVALID); in gm200_acr_wpr_build()
167 gm200_acr_wpr_alloc(struct nvkm_acr *acr, u32 wpr_size) in gm200_acr_wpr_alloc() argument
169 int ret = nvkm_memory_new(acr->subdev.device, NVKM_MEM_TARGET_INST, in gm200_acr_wpr_alloc()
171 &acr->wpr); in gm200_acr_wpr_alloc()
175 acr->wpr_start = nvkm_memory_addr(acr->wpr); in gm200_acr_wpr_alloc()
176 acr->wpr_end = acr->wpr_start + nvkm_memory_size(acr->wpr); in gm200_acr_wpr_alloc()
181 gm200_acr_wpr_layout(struct nvkm_acr *acr) in gm200_acr_wpr_layout() argument
188 list_for_each_entry(lsfw, &acr->lsfw, head) { in gm200_acr_wpr_layout()
207 gm200_acr_wpr_parse(struct nvkm_acr *acr) in gm200_acr_wpr_parse() argument
209 const struct wpr_header *hdr = (void *)acr->wpr_fw->data; in gm200_acr_wpr_parse()
213 wpr_header_dump(&acr->subdev, hdr); in gm200_acr_wpr_parse()
214 lsfw = nvkm_acr_lsfw_add(NULL, acr, NULL, (hdr++)->falcon_id); in gm200_acr_wpr_parse()
223 gm200_acr_hsfw_bld(struct nvkm_acr *acr, struct nvkm_acr_hsf *hsf) in gm200_acr_hsfw_bld() argument
237 flcn_bl_dmem_desc_v1_dump(&acr->subdev, &hsdesc); in gm200_acr_hsfw_bld()
243 gm200_acr_hsfw_boot(struct nvkm_acr *acr, struct nvkm_acr_hsf *hsf, in gm200_acr_hsfw_boot() argument
246 struct nvkm_subdev *subdev = &acr->subdev; in gm200_acr_hsfw_boot()
254 nvkm_falcon_bind_context(falcon, acr->inst); in gm200_acr_hsfw_boot()
264 hsf->func->bld(acr, hsf); in gm200_acr_hsfw_boot()
289 gm200_acr_hsfw_load(struct nvkm_acr *acr, struct nvkm_acr_hsfw *hsfw, in gm200_acr_hsfw_load() argument
292 struct nvkm_subdev *subdev = &acr->subdev; in gm200_acr_hsfw_load()
323 list_add_tail(&hsf->head, &acr->hsf); in gm200_acr_hsfw_load()
348 ret = nvkm_vmm_get(acr->vmm, 12, nvkm_memory_size(hsf->ucode), in gm200_acr_hsfw_load()
353 ret = nvkm_memory_map(hsf->ucode, 0, acr->vmm, hsf->vma, NULL, 0); in gm200_acr_hsfw_load()
362 gm200_acr_unload_boot(struct nvkm_acr *acr, struct nvkm_acr_hsf *hsf) in gm200_acr_unload_boot() argument
364 return gm200_acr_hsfw_boot(acr, hsf, 0, 0x1d); in gm200_acr_unload_boot()
368 gm200_acr_unload_load(struct nvkm_acr *acr, struct nvkm_acr_hsfw *hsfw) in gm200_acr_unload_load() argument
370 return gm200_acr_hsfw_load(acr, hsfw, &acr->subdev.device->pmu->falcon); in gm200_acr_unload_load()
392 gm200_acr_load_boot(struct nvkm_acr *acr, struct nvkm_acr_hsf *hsf) in gm200_acr_load_boot() argument
394 return gm200_acr_hsfw_boot(acr, hsf, 0x10, 0); in gm200_acr_load_boot()
398 gm200_acr_load_load(struct nvkm_acr *acr, struct nvkm_acr_hsfw *hsfw) in gm200_acr_load_load() argument
404 desc->regions.region_props[0].start_addr = acr->wpr_start >> 8; in gm200_acr_load_load()
405 desc->regions.region_props[0].end_addr = acr->wpr_end >> 8; in gm200_acr_load_load()
410 flcn_acr_desc_dump(&acr->subdev, desc); in gm200_acr_load_load()
412 return gm200_acr_hsfw_load(acr, hsfw, &acr->subdev.device->pmu->falcon); in gm200_acr_load_load()
456 gm200_acr_load(struct nvkm_acr *acr, int ver, const struct nvkm_acr_fwif *fwif) in gm200_acr_load() argument
458 struct nvkm_subdev *subdev = &acr->subdev; in gm200_acr_load()
462 acr, "acr/bl", "acr/ucode_load", "load"); in gm200_acr_load()
467 acr, "acr/bl", "acr/ucode_unload", in gm200_acr_load()