Lines Matching full:fmc
59 if ((((u64)mbox1 << 32) | *mbox0) != gsp->fmc.args.addr)
81 ret = nvkm_gsp_mem_ctor(gsp, sizeof(*args), &gsp->fmc.args);
91 args = gsp->fmc.args.data;
105 ret = nvkm_fsp_boot_gsp_fmc(device->fsp, gsp->fmc.args.addr, rsvd_size, resume,
106 gsp->fmc.fw.addr, gsp->fmc.hash, gsp->fmc.pkey, gsp->fmc.sig);
118 nvkm_error(subdev, "GSP-FMC boot timed out\n");
123 nvkm_error(subdev, "GSP-FMC boot failed (mbox: 0x%08x)\n", mbox0);
175 /* The FMC ELF header must be exactly this */
191 * elf_validate_sections - validate each section in the FMC ELF image
268 const void *fw = gsp->fws.fmc->data;
273 if (gsp->fws.fmc->size < ELF_HDR_SIZE ||
275 !elf_validate_sections(fw, gsp->fws.fmc->size)) {
276 nvkm_error(subdev, "fmc firmware image is invalid\n");
286 nvkm_error(subdev, "fmc firmware image is invalid\n");
293 /* Load GSP-FMC FW into memory. */
294 ret = nvkm_gsp_mem_ctor(gsp, img_len, &gsp->fmc.fw);
298 memcpy(gsp->fmc.fw.data, img, img_len);
300 gsp->fmc.hash = kmemdup(hash, hash_len, GFP_KERNEL);
301 gsp->fmc.pkey = kmemdup(pkey, pkey_len, GFP_KERNEL);
302 gsp->fmc.sig = kmemdup(sig, sig_len, GFP_KERNEL);
303 if (!gsp->fmc.hash || !gsp->fmc.pkey || !gsp->fmc.sig)
336 ret = nvkm_gsp_load_fw(gsp, "fmc", fwif->ver, &gsp->fws.fmc);