Commit 00e1b5dc authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/gr/gf100-: move fecs/gpccs ucode into their substructures

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 0033f15b
...@@ -1701,12 +1701,14 @@ gf100_gr_init_ctxctl_ext(struct gf100_gr *gr) ...@@ -1701,12 +1701,14 @@ gf100_gr_init_ctxctl_ext(struct gf100_gr *gr)
if (nvkm_secboot_is_managed(sb, NVKM_SECBOOT_FALCON_FECS)) if (nvkm_secboot_is_managed(sb, NVKM_SECBOOT_FALCON_FECS))
secboot_mask |= BIT(NVKM_SECBOOT_FALCON_FECS); secboot_mask |= BIT(NVKM_SECBOOT_FALCON_FECS);
else else
gf100_gr_init_fw(gr->fecs.falcon, &gr->fuc409c, &gr->fuc409d); gf100_gr_init_fw(gr->fecs.falcon, &gr->fecs.inst,
&gr->fecs.data);
if (nvkm_secboot_is_managed(sb, NVKM_SECBOOT_FALCON_GPCCS)) if (nvkm_secboot_is_managed(sb, NVKM_SECBOOT_FALCON_GPCCS))
secboot_mask |= BIT(NVKM_SECBOOT_FALCON_GPCCS); secboot_mask |= BIT(NVKM_SECBOOT_FALCON_GPCCS);
else else
gf100_gr_init_fw(gr->gpccs.falcon, &gr->fuc41ac, &gr->fuc41ad); gf100_gr_init_fw(gr->gpccs.falcon, &gr->gpccs.inst,
&gr->gpccs.data);
if (secboot_mask != 0) { if (secboot_mask != 0) {
int ret = nvkm_secboot_reset(sb, secboot_mask); int ret = nvkm_secboot_reset(sb, secboot_mask);
...@@ -2023,10 +2025,10 @@ gf100_gr_dtor(struct nvkm_gr *base) ...@@ -2023,10 +2025,10 @@ gf100_gr_dtor(struct nvkm_gr *base)
nvkm_falcon_del(&gr->gpccs.falcon); nvkm_falcon_del(&gr->gpccs.falcon);
nvkm_falcon_del(&gr->fecs.falcon); nvkm_falcon_del(&gr->fecs.falcon);
nvkm_blob_dtor(&gr->fuc409c); nvkm_blob_dtor(&gr->fecs.inst);
nvkm_blob_dtor(&gr->fuc409d); nvkm_blob_dtor(&gr->fecs.data);
nvkm_blob_dtor(&gr->fuc41ac); nvkm_blob_dtor(&gr->gpccs.inst);
nvkm_blob_dtor(&gr->fuc41ad); nvkm_blob_dtor(&gr->gpccs.data);
vfree(gr->bundle); vfree(gr->bundle);
vfree(gr->method); vfree(gr->method);
...@@ -2146,10 +2148,10 @@ gf100_gr_new_(const struct gf100_gr_func *func, struct nvkm_device *device, ...@@ -2146,10 +2148,10 @@ gf100_gr_new_(const struct gf100_gr_func *func, struct nvkm_device *device,
return ret; return ret;
if (gr->firmware) { if (gr->firmware) {
if (gf100_gr_ctor_fw(gr, "fecs_inst", &gr->fuc409c) || if (gf100_gr_ctor_fw(gr, "fecs_inst", &gr->fecs.inst) ||
gf100_gr_ctor_fw(gr, "fecs_data", &gr->fuc409d) || gf100_gr_ctor_fw(gr, "fecs_data", &gr->fecs.data) ||
gf100_gr_ctor_fw(gr, "gpccs_inst", &gr->fuc41ac) || gf100_gr_ctor_fw(gr, "gpccs_inst", &gr->gpccs.inst) ||
gf100_gr_ctor_fw(gr, "gpccs_data", &gr->fuc41ad)) gf100_gr_ctor_fw(gr, "gpccs_data", &gr->gpccs.data))
return -ENODEV; return -ENODEV;
} }
......
...@@ -79,18 +79,19 @@ struct gf100_gr { ...@@ -79,18 +79,19 @@ struct gf100_gr {
struct { struct {
struct nvkm_falcon *falcon; struct nvkm_falcon *falcon;
struct nvkm_blob inst;
struct nvkm_blob data;
struct mutex mutex; struct mutex mutex;
u32 disable; u32 disable;
} fecs; } fecs;
struct { struct {
struct nvkm_falcon *falcon; struct nvkm_falcon *falcon;
struct nvkm_blob inst;
struct nvkm_blob data;
} gpccs; } gpccs;
struct nvkm_blob fuc409c;
struct nvkm_blob fuc409d;
struct nvkm_blob fuc41ac;
struct nvkm_blob fuc41ad;
bool firmware; bool firmware;
/* /*
......
...@@ -333,10 +333,10 @@ gk20a_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr) ...@@ -333,10 +333,10 @@ gk20a_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
if (ret) if (ret)
return ret; return ret;
if (gf100_gr_ctor_fw(gr, "fecs_inst", &gr->fuc409c) || if (gf100_gr_ctor_fw(gr, "fecs_inst", &gr->fecs.inst) ||
gf100_gr_ctor_fw(gr, "fecs_data", &gr->fuc409d) || gf100_gr_ctor_fw(gr, "fecs_data", &gr->fecs.data) ||
gf100_gr_ctor_fw(gr, "gpccs_inst", &gr->fuc41ac) || gf100_gr_ctor_fw(gr, "gpccs_inst", &gr->gpccs.inst) ||
gf100_gr_ctor_fw(gr, "gpccs_data", &gr->fuc41ad)) gf100_gr_ctor_fw(gr, "gpccs_data", &gr->gpccs.data))
return -ENODEV; return -ENODEV;
ret = gk20a_gr_load_sw(gr, "", 0); ret = gk20a_gr_load_sw(gr, "", 0);
......
...@@ -142,14 +142,14 @@ gm200_gr_new_(const struct gf100_gr_func *func, struct nvkm_device *device, ...@@ -142,14 +142,14 @@ gm200_gr_new_(const struct gf100_gr_func *func, struct nvkm_device *device,
/* Load firmwares for non-secure falcons */ /* Load firmwares for non-secure falcons */
if (!nvkm_secboot_is_managed(device->secboot, if (!nvkm_secboot_is_managed(device->secboot,
NVKM_SECBOOT_FALCON_FECS)) { NVKM_SECBOOT_FALCON_FECS)) {
if ((ret = gf100_gr_ctor_fw(gr, "gr/fecs_inst", &gr->fuc409c)) || if ((ret = gf100_gr_ctor_fw(gr, "gr/fecs_inst", &gr->fecs.inst)) ||
(ret = gf100_gr_ctor_fw(gr, "gr/fecs_data", &gr->fuc409d))) (ret = gf100_gr_ctor_fw(gr, "gr/fecs_data", &gr->fecs.data)))
return ret; return ret;
} }
if (!nvkm_secboot_is_managed(device->secboot, if (!nvkm_secboot_is_managed(device->secboot,
NVKM_SECBOOT_FALCON_GPCCS)) { NVKM_SECBOOT_FALCON_GPCCS)) {
if ((ret = gf100_gr_ctor_fw(gr, "gr/gpccs_inst", &gr->fuc41ac)) || if ((ret = gf100_gr_ctor_fw(gr, "gr/gpccs_inst", &gr->gpccs.inst)) ||
(ret = gf100_gr_ctor_fw(gr, "gr/gpccs_data", &gr->fuc41ad))) (ret = gf100_gr_ctor_fw(gr, "gr/gpccs_data", &gr->gpccs.data)))
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment