Lines Matching refs:lsfw

70 	struct nvkm_acr_lsf *lsfw;  in gm200_acr_wpr_patch()  local
77 list_for_each_entry(lsfw, &acr->lsfw, head) { in gm200_acr_wpr_patch()
78 if (lsfw->id != hdr.falcon_id) in gm200_acr_wpr_patch()
84 lsfw->func->bld_patch(acr, lsb.tail.bl_data_off, adjust); in gm200_acr_wpr_patch()
94 gm200_acr_wpr_build_lsb_tail(struct nvkm_acr_lsfw *lsfw, in gm200_acr_wpr_build_lsb_tail() argument
97 hdr->ucode_off = lsfw->offset.img; in gm200_acr_wpr_build_lsb_tail()
98 hdr->ucode_size = lsfw->ucode_size; in gm200_acr_wpr_build_lsb_tail()
99 hdr->data_size = lsfw->data_size; in gm200_acr_wpr_build_lsb_tail()
100 hdr->bl_code_size = lsfw->bootloader_size; in gm200_acr_wpr_build_lsb_tail()
101 hdr->bl_imem_off = lsfw->bootloader_imem_offset; in gm200_acr_wpr_build_lsb_tail()
102 hdr->bl_data_off = lsfw->offset.bld; in gm200_acr_wpr_build_lsb_tail()
103 hdr->bl_data_size = lsfw->bl_data_size; in gm200_acr_wpr_build_lsb_tail()
104 hdr->app_code_off = lsfw->app_start_offset + in gm200_acr_wpr_build_lsb_tail()
105 lsfw->app_resident_code_offset; in gm200_acr_wpr_build_lsb_tail()
106 hdr->app_code_size = lsfw->app_resident_code_size; in gm200_acr_wpr_build_lsb_tail()
107 hdr->app_data_off = lsfw->app_start_offset + in gm200_acr_wpr_build_lsb_tail()
108 lsfw->app_resident_data_offset; in gm200_acr_wpr_build_lsb_tail()
109 hdr->app_data_size = lsfw->app_resident_data_size; in gm200_acr_wpr_build_lsb_tail()
110 hdr->flags = lsfw->func->flags; in gm200_acr_wpr_build_lsb_tail()
114 gm200_acr_wpr_build_lsb(struct nvkm_acr *acr, struct nvkm_acr_lsfw *lsfw) in gm200_acr_wpr_build_lsb() argument
118 if (WARN_ON(lsfw->sig->size != sizeof(hdr.signature))) in gm200_acr_wpr_build_lsb()
121 memcpy(&hdr.signature, lsfw->sig->data, lsfw->sig->size); in gm200_acr_wpr_build_lsb()
122 gm200_acr_wpr_build_lsb_tail(lsfw, &hdr.tail); in gm200_acr_wpr_build_lsb()
124 nvkm_wobj(acr->wpr, lsfw->offset.lsb, &hdr, sizeof(hdr)); in gm200_acr_wpr_build_lsb()
131 struct nvkm_acr_lsfw *lsfw; in gm200_acr_wpr_build() local
136 list_for_each_entry(lsfw, &acr->lsfw, head) { in gm200_acr_wpr_build()
138 .falcon_id = lsfw->id, in gm200_acr_wpr_build()
139 .lsb_offset = lsfw->offset.lsb, in gm200_acr_wpr_build()
141 .lazy_bootstrap = rtos && lsfw->id != rtos->id, in gm200_acr_wpr_build()
150 ret = gm200_acr_wpr_build_lsb(acr, lsfw); in gm200_acr_wpr_build()
155 nvkm_wobj(acr->wpr, lsfw->offset.img, in gm200_acr_wpr_build()
156 lsfw->img.data, in gm200_acr_wpr_build()
157 lsfw->img.size); in gm200_acr_wpr_build()
160 lsfw->func->bld_write(acr, lsfw->offset.bld, lsfw); in gm200_acr_wpr_build()
185 struct nvkm_acr_lsfw *lsfw; in gm200_acr_wpr_layout() local
190 list_for_each_entry(lsfw, &acr->lsfw, head) { in gm200_acr_wpr_layout()
192 lsfw->offset.lsb = wpr; in gm200_acr_wpr_layout()
196 lsfw->offset.img = wpr; in gm200_acr_wpr_layout()
197 wpr += lsfw->img.size; in gm200_acr_wpr_layout()
200 lsfw->offset.bld = wpr; in gm200_acr_wpr_layout()
201 lsfw->bl_data_size = ALIGN(lsfw->func->bld_size, 256); in gm200_acr_wpr_layout()
202 wpr += lsfw->bl_data_size; in gm200_acr_wpr_layout()
212 struct nvkm_acr_lsfw *lsfw; in gm200_acr_wpr_parse() local
216 lsfw = nvkm_acr_lsfw_add(NULL, acr, NULL, (hdr++)->falcon_id); in gm200_acr_wpr_parse()
217 if (IS_ERR(lsfw)) in gm200_acr_wpr_parse()
218 return PTR_ERR(lsfw); in gm200_acr_wpr_parse()