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()
92 gm200_acr_wpr_build_lsb_tail(struct nvkm_acr_lsfw *lsfw, in gm200_acr_wpr_build_lsb_tail() argument
95 hdr->ucode_off = lsfw->offset.img; in gm200_acr_wpr_build_lsb_tail()
96 hdr->ucode_size = lsfw->ucode_size; in gm200_acr_wpr_build_lsb_tail()
97 hdr->data_size = lsfw->data_size; in gm200_acr_wpr_build_lsb_tail()
98 hdr->bl_code_size = lsfw->bootloader_size; in gm200_acr_wpr_build_lsb_tail()
99 hdr->bl_imem_off = lsfw->bootloader_imem_offset; in gm200_acr_wpr_build_lsb_tail()
100 hdr->bl_data_off = lsfw->offset.bld; in gm200_acr_wpr_build_lsb_tail()
101 hdr->bl_data_size = lsfw->bl_data_size; in gm200_acr_wpr_build_lsb_tail()
102 hdr->app_code_off = lsfw->app_start_offset + in gm200_acr_wpr_build_lsb_tail()
103 lsfw->app_resident_code_offset; in gm200_acr_wpr_build_lsb_tail()
104 hdr->app_code_size = lsfw->app_resident_code_size; in gm200_acr_wpr_build_lsb_tail()
105 hdr->app_data_off = lsfw->app_start_offset + in gm200_acr_wpr_build_lsb_tail()
106 lsfw->app_resident_data_offset; in gm200_acr_wpr_build_lsb_tail()
107 hdr->app_data_size = lsfw->app_resident_data_size; in gm200_acr_wpr_build_lsb_tail()
108 hdr->flags = lsfw->func->flags; in gm200_acr_wpr_build_lsb_tail()
112 gm200_acr_wpr_build_lsb(struct nvkm_acr *acr, struct nvkm_acr_lsfw *lsfw) in gm200_acr_wpr_build_lsb() argument
116 if (WARN_ON(lsfw->sig->size != sizeof(hdr.signature))) in gm200_acr_wpr_build_lsb()
119 memcpy(&hdr.signature, lsfw->sig->data, lsfw->sig->size); in gm200_acr_wpr_build_lsb()
120 gm200_acr_wpr_build_lsb_tail(lsfw, &hdr.tail); in gm200_acr_wpr_build_lsb()
122 nvkm_wobj(acr->wpr, lsfw->offset.lsb, &hdr, sizeof(hdr)); in gm200_acr_wpr_build_lsb()
129 struct nvkm_acr_lsfw *lsfw; in gm200_acr_wpr_build() local
134 list_for_each_entry(lsfw, &acr->lsfw, head) { in gm200_acr_wpr_build()
136 .falcon_id = lsfw->id, in gm200_acr_wpr_build()
137 .lsb_offset = lsfw->offset.lsb, in gm200_acr_wpr_build()
139 .lazy_bootstrap = rtos && lsfw->id != rtos->id, 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()
154 lsfw->img.data, in gm200_acr_wpr_build()
155 lsfw->img.size); in gm200_acr_wpr_build()
158 lsfw->func->bld_write(acr, lsfw->offset.bld, lsfw); in gm200_acr_wpr_build()
183 struct nvkm_acr_lsfw *lsfw; in gm200_acr_wpr_layout() local
188 list_for_each_entry(lsfw, &acr->lsfw, head) { in gm200_acr_wpr_layout()
190 lsfw->offset.lsb = wpr; in gm200_acr_wpr_layout()
194 lsfw->offset.img = wpr; in gm200_acr_wpr_layout()
195 wpr += lsfw->img.size; in gm200_acr_wpr_layout()
198 lsfw->offset.bld = wpr; in gm200_acr_wpr_layout()
199 lsfw->bl_data_size = ALIGN(lsfw->func->bld_size, 256); in gm200_acr_wpr_layout()
200 wpr += lsfw->bl_data_size; in gm200_acr_wpr_layout()
210 struct nvkm_acr_lsfw *lsfw; in gm200_acr_wpr_parse() local
214 lsfw = nvkm_acr_lsfw_add(NULL, acr, NULL, (hdr++)->falcon_id); in gm200_acr_wpr_parse()
215 if (IS_ERR(lsfw)) in gm200_acr_wpr_parse()
216 return PTR_ERR(lsfw); in gm200_acr_wpr_parse()