mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-25 01:33:37 +07:00
drm/nouveau/gr/gf100-: select implementation based on available FW
This will allow for further customisation of the subdev depending on what firmware is available. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
a096ff1981
commit
ef16dc278e
@ -2055,86 +2055,8 @@ gf100_gr_ = {
|
||||
};
|
||||
|
||||
int
|
||||
gf100_gr_ctor_fw_legacy(struct gf100_gr *gr, const char *fwname,
|
||||
struct nvkm_blob *fuc, int ret)
|
||||
{
|
||||
struct nvkm_subdev *subdev = &gr->base.engine.subdev;
|
||||
struct nvkm_device *device = subdev->device;
|
||||
const struct firmware *fw;
|
||||
char f[32];
|
||||
|
||||
/* see if this firmware has a legacy path */
|
||||
if (!strcmp(fwname, "fecs_inst"))
|
||||
fwname = "fuc409c";
|
||||
else if (!strcmp(fwname, "fecs_data"))
|
||||
fwname = "fuc409d";
|
||||
else if (!strcmp(fwname, "gpccs_inst"))
|
||||
fwname = "fuc41ac";
|
||||
else if (!strcmp(fwname, "gpccs_data"))
|
||||
fwname = "fuc41ad";
|
||||
else {
|
||||
/* nope, let's just return the error we got */
|
||||
nvkm_error(subdev, "failed to load %s\n", fwname);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* yes, try to load from the legacy path */
|
||||
nvkm_debug(subdev, "%s: falling back to legacy path\n", fwname);
|
||||
|
||||
snprintf(f, sizeof(f), "nouveau/nv%02x_%s", device->chipset, fwname);
|
||||
ret = request_firmware(&fw, f, device->dev);
|
||||
if (ret) {
|
||||
snprintf(f, sizeof(f), "nouveau/%s", fwname);
|
||||
ret = request_firmware(&fw, f, device->dev);
|
||||
if (ret) {
|
||||
nvkm_error(subdev, "failed to load %s\n", fwname);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
fuc->size = fw->size;
|
||||
fuc->data = kmemdup(fw->data, fuc->size, GFP_KERNEL);
|
||||
release_firmware(fw);
|
||||
return (fuc->data != NULL) ? 0 : -ENOMEM;
|
||||
}
|
||||
|
||||
int
|
||||
gf100_gr_ctor_fw(struct gf100_gr *gr, const char *fwname,
|
||||
struct nvkm_blob *fuc)
|
||||
{
|
||||
const struct firmware *fw;
|
||||
int ret;
|
||||
|
||||
ret = nvkm_firmware_get(&gr->base.engine.subdev, fwname, &fw);
|
||||
if (ret) {
|
||||
ret = gf100_gr_ctor_fw_legacy(gr, fwname, fuc, ret);
|
||||
if (ret)
|
||||
return -ENODEV;
|
||||
return 0;
|
||||
}
|
||||
|
||||
fuc->size = fw->size;
|
||||
fuc->data = kmemdup(fw->data, fuc->size, GFP_KERNEL);
|
||||
nvkm_firmware_put(fw);
|
||||
return (fuc->data != NULL) ? 0 : -ENOMEM;
|
||||
}
|
||||
|
||||
int
|
||||
gf100_gr_ctor(const struct gf100_gr_func *func, struct nvkm_device *device,
|
||||
int index, struct gf100_gr *gr)
|
||||
{
|
||||
gr->func = func;
|
||||
gr->firmware = nvkm_boolopt(device->cfgopt, "NvGrUseFW",
|
||||
func->fecs.ucode == NULL);
|
||||
|
||||
return nvkm_gr_ctor(&gf100_gr_, device, index,
|
||||
gr->firmware || func->fecs.ucode != NULL,
|
||||
&gr->base);
|
||||
}
|
||||
|
||||
int
|
||||
gf100_gr_new_(const struct gf100_gr_func *func, struct nvkm_device *device,
|
||||
int index, struct nvkm_gr **pgr)
|
||||
gf100_gr_new_(const struct gf100_gr_fwif *fwif,
|
||||
struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
struct gf100_gr *gr;
|
||||
int ret;
|
||||
@ -2143,18 +2065,15 @@ gf100_gr_new_(const struct gf100_gr_func *func, struct nvkm_device *device,
|
||||
return -ENOMEM;
|
||||
*pgr = &gr->base;
|
||||
|
||||
ret = gf100_gr_ctor(func, device, index, gr);
|
||||
ret = nvkm_gr_ctor(&gf100_gr_, device, index, true, &gr->base);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (gr->firmware) {
|
||||
if (gf100_gr_ctor_fw(gr, "fecs_inst", &gr->fecs.inst) ||
|
||||
gf100_gr_ctor_fw(gr, "fecs_data", &gr->fecs.data) ||
|
||||
gf100_gr_ctor_fw(gr, "gpccs_inst", &gr->gpccs.inst) ||
|
||||
gf100_gr_ctor_fw(gr, "gpccs_data", &gr->gpccs.data))
|
||||
return -ENODEV;
|
||||
}
|
||||
fwif = nvkm_firmware_load(&gr->base.engine.subdev, fwif, "Gr", gr);
|
||||
if (IS_ERR(fwif))
|
||||
return -ENODEV;
|
||||
|
||||
gr->func = fwif->func;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2457,8 +2376,67 @@ gf100_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
int
|
||||
gf100_gr_nofw(struct gf100_gr *gr, int ver, const struct gf100_gr_fwif *fwif)
|
||||
{
|
||||
gr->firmware = false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
gf100_gr_load_fw(struct gf100_gr *gr, const char *name,
|
||||
struct nvkm_blob *blob)
|
||||
{
|
||||
struct nvkm_subdev *subdev = &gr->base.engine.subdev;
|
||||
struct nvkm_device *device = subdev->device;
|
||||
const struct firmware *fw;
|
||||
char f[32];
|
||||
int ret;
|
||||
|
||||
snprintf(f, sizeof(f), "nouveau/nv%02x_%s", device->chipset, name);
|
||||
ret = request_firmware(&fw, f, device->dev);
|
||||
if (ret) {
|
||||
snprintf(f, sizeof(f), "nouveau/%s", name);
|
||||
ret = request_firmware(&fw, f, device->dev);
|
||||
if (ret) {
|
||||
nvkm_error(subdev, "failed to load %s\n", name);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
blob->size = fw->size;
|
||||
blob->data = kmemdup(fw->data, blob->size, GFP_KERNEL);
|
||||
release_firmware(fw);
|
||||
return (blob->data != NULL) ? 0 : -ENOMEM;
|
||||
}
|
||||
|
||||
int
|
||||
gf100_gr_load(struct gf100_gr *gr, int ver, const struct gf100_gr_fwif *fwif)
|
||||
{
|
||||
struct nvkm_device *device = gr->base.engine.subdev.device;
|
||||
|
||||
if (!nvkm_boolopt(device->cfgopt, "NvGrUseFW", false))
|
||||
return -EINVAL;
|
||||
|
||||
if (gf100_gr_load_fw(gr, "fuc409c", &gr->fecs.inst) ||
|
||||
gf100_gr_load_fw(gr, "fuc409d", &gr->fecs.data) ||
|
||||
gf100_gr_load_fw(gr, "fuc41ac", &gr->gpccs.inst) ||
|
||||
gf100_gr_load_fw(gr, "fuc41ad", &gr->gpccs.data))
|
||||
return -ENOENT;
|
||||
|
||||
gr->firmware = true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gf100_gr_fwif[] = {
|
||||
{ -1, gf100_gr_load, &gf100_gr },
|
||||
{ -1, gf100_gr_nofw, &gf100_gr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gf100_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gf100_gr_new_(&gf100_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gf100_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -136,12 +136,6 @@ struct gf100_gr {
|
||||
u32 size_pm;
|
||||
};
|
||||
|
||||
int gf100_gr_ctor(const struct gf100_gr_func *, struct nvkm_device *,
|
||||
int, struct gf100_gr *);
|
||||
int gf100_gr_new_(const struct gf100_gr_func *, struct nvkm_device *,
|
||||
int, struct nvkm_gr **);
|
||||
void *gf100_gr_dtor(struct nvkm_gr *);
|
||||
|
||||
int gf100_gr_fecs_bind_pointer(struct gf100_gr *, u32 inst);
|
||||
|
||||
struct gf100_gr_func_zbc {
|
||||
@ -247,8 +241,6 @@ extern const struct gf100_gr_func_zbc gp102_gr_zbc;
|
||||
|
||||
extern const struct gf100_gr_func gp107_gr;
|
||||
|
||||
int gk20a_gr_load_sw(struct gf100_gr *, const char *path, int ver);
|
||||
|
||||
#define gf100_gr_chan(p) container_of((p), struct gf100_gr_chan, object)
|
||||
#include <core/object.h>
|
||||
|
||||
@ -269,8 +261,6 @@ struct gf100_gr_chan {
|
||||
|
||||
void gf100_gr_ctxctl_debug(struct gf100_gr *);
|
||||
|
||||
int gf100_gr_ctor_fw(struct gf100_gr *, const char *,
|
||||
struct nvkm_blob *);
|
||||
u64 gf100_gr_units(struct nvkm_gr *);
|
||||
void gf100_gr_zbc_init(struct gf100_gr *);
|
||||
|
||||
@ -309,9 +299,6 @@ void gf100_gr_icmd(struct gf100_gr *, const struct gf100_gr_pack *);
|
||||
void gf100_gr_mthd(struct gf100_gr *, const struct gf100_gr_pack *);
|
||||
int gf100_gr_init_ctxctl(struct gf100_gr *);
|
||||
|
||||
int gm200_gr_new_(const struct gf100_gr_func *, struct nvkm_device *, int,
|
||||
struct nvkm_gr **);
|
||||
|
||||
/* register init value lists */
|
||||
|
||||
extern const struct gf100_gr_init gf100_gr_init_main_0[];
|
||||
@ -394,4 +381,29 @@ extern const struct gf100_gr_init gm107_gr_init_cbm_0[];
|
||||
void gm107_gr_init_bios(struct gf100_gr *);
|
||||
|
||||
void gm200_gr_init_gpc_mmu(struct gf100_gr *);
|
||||
|
||||
struct gf100_gr_fwif {
|
||||
int version;
|
||||
int (*load)(struct gf100_gr *, int ver, const struct gf100_gr_fwif *);
|
||||
const struct gf100_gr_func *func;
|
||||
const struct nvkm_acr_lsf_func *fecs;
|
||||
const struct nvkm_acr_lsf_func *gpccs;
|
||||
};
|
||||
|
||||
int gf100_gr_load(struct gf100_gr *, int, const struct gf100_gr_fwif *);
|
||||
int gf100_gr_nofw(struct gf100_gr *, int, const struct gf100_gr_fwif *);
|
||||
|
||||
int gk20a_gr_load_sw(struct gf100_gr *, const char *path, int ver);
|
||||
|
||||
int gm200_gr_load(struct gf100_gr *, int, const struct gf100_gr_fwif *);
|
||||
extern const struct nvkm_acr_lsf_func gm200_gr_gpccs_acr;
|
||||
extern const struct nvkm_acr_lsf_func gm200_gr_fecs_acr;
|
||||
|
||||
extern const struct nvkm_acr_lsf_func gm20b_gr_fecs_acr;
|
||||
|
||||
extern const struct nvkm_acr_lsf_func gp108_gr_gpccs_acr;
|
||||
extern const struct nvkm_acr_lsf_func gp108_gr_fecs_acr;
|
||||
|
||||
int gf100_gr_new_(const struct gf100_gr_fwif *, struct nvkm_device *, int,
|
||||
struct nvkm_gr **);
|
||||
#endif
|
||||
|
@ -144,8 +144,15 @@ gf104_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gf104_gr_fwif[] = {
|
||||
{ -1, gf100_gr_load, &gf104_gr },
|
||||
{ -1, gf100_gr_nofw, &gf104_gr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gf104_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gf100_gr_new_(&gf104_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gf104_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -143,8 +143,15 @@ gf108_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
const struct gf100_gr_fwif
|
||||
gf108_gr_fwif[] = {
|
||||
{ -1, gf100_gr_load, &gf108_gr },
|
||||
{ -1, gf100_gr_nofw, &gf108_gr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gf108_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gf100_gr_new_(&gf108_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gf108_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -119,8 +119,15 @@ gf110_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gf110_gr_fwif[] = {
|
||||
{ -1, gf100_gr_load, &gf110_gr },
|
||||
{ -1, gf100_gr_nofw, &gf110_gr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gf110_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gf100_gr_new_(&gf110_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gf110_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -184,8 +184,15 @@ gf117_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gf117_gr_fwif[] = {
|
||||
{ -1, gf100_gr_load, &gf117_gr },
|
||||
{ -1, gf100_gr_nofw, &gf117_gr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gf117_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gf100_gr_new_(&gf117_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gf117_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -210,8 +210,15 @@ gf119_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gf119_gr_fwif[] = {
|
||||
{ -1, gf100_gr_load, &gf119_gr },
|
||||
{ -1, gf100_gr_nofw, &gf119_gr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gf119_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gf100_gr_new_(&gf119_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gf119_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -489,8 +489,15 @@ gk104_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gk104_gr_fwif[] = {
|
||||
{ -1, gf100_gr_load, &gk104_gr },
|
||||
{ -1, gf100_gr_nofw, &gk104_gr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gk104_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gf100_gr_new_(&gk104_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gk104_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -385,8 +385,15 @@ gk110_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gk110_gr_fwif[] = {
|
||||
{ -1, gf100_gr_load, &gk110_gr },
|
||||
{ -1, gf100_gr_nofw, &gk110_gr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gk110_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gf100_gr_new_(&gk110_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gk110_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -136,8 +136,15 @@ gk110b_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gk110b_gr_fwif[] = {
|
||||
{ -1, gf100_gr_load, &gk110b_gr },
|
||||
{ -1, gf100_gr_nofw, &gk110b_gr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gk110b_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gf100_gr_new_(&gk110b_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gk110b_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -194,8 +194,15 @@ gk208_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gk208_gr_fwif[] = {
|
||||
{ -1, gf100_gr_load, &gk208_gr },
|
||||
{ -1, gf100_gr_nofw, &gk208_gr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gk208_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gf100_gr_new_(&gk208_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gk208_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -319,29 +319,34 @@ gk20a_gr_load_sw(struct gf100_gr *gr, const char *path, int ver)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
gk20a_gr_load(struct gf100_gr *gr, int ver, const struct gf100_gr_fwif *fwif)
|
||||
{
|
||||
struct nvkm_subdev *subdev = &gr->base.engine.subdev;
|
||||
|
||||
if (nvkm_firmware_load_blob(subdev, "", "fecs_inst", ver,
|
||||
&gr->fecs.inst) ||
|
||||
nvkm_firmware_load_blob(subdev, "", "fecs_data", ver,
|
||||
&gr->fecs.data) ||
|
||||
nvkm_firmware_load_blob(subdev, "", "gpccs_inst", ver,
|
||||
&gr->gpccs.inst) ||
|
||||
nvkm_firmware_load_blob(subdev, "", "gpccs_data", ver,
|
||||
&gr->gpccs.data))
|
||||
return -ENOENT;
|
||||
|
||||
gr->firmware = true;
|
||||
|
||||
return gk20a_gr_load_sw(gr, "", ver);
|
||||
}
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gk20a_gr_fwif[] = {
|
||||
{ -1, gk20a_gr_load, &gk20a_gr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gk20a_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
struct gf100_gr *gr;
|
||||
int ret;
|
||||
|
||||
if (!(gr = kzalloc(sizeof(*gr), GFP_KERNEL)))
|
||||
return -ENOMEM;
|
||||
*pgr = &gr->base;
|
||||
|
||||
ret = gf100_gr_ctor(&gk20a_gr, device, index, gr);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (gf100_gr_ctor_fw(gr, "fecs_inst", &gr->fecs.inst) ||
|
||||
gf100_gr_ctor_fw(gr, "fecs_data", &gr->fecs.data) ||
|
||||
gf100_gr_ctor_fw(gr, "gpccs_inst", &gr->gpccs.inst) ||
|
||||
gf100_gr_ctor_fw(gr, "gpccs_data", &gr->gpccs.data))
|
||||
return -ENODEV;
|
||||
|
||||
ret = gk20a_gr_load_sw(gr, "", 0);
|
||||
if (ret)
|
||||
return -ENODEV;
|
||||
|
||||
return 0;
|
||||
return gf100_gr_new_(gk20a_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -429,8 +429,15 @@ gm107_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gm107_gr_fwif[] = {
|
||||
{ -1, gf100_gr_load, &gm107_gr },
|
||||
{ -1, gf100_gr_nofw, &gm107_gr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gm107_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gf100_gr_new_(&gm107_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gm107_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -24,6 +24,8 @@
|
||||
#include "gf100.h"
|
||||
#include "ctxgf100.h"
|
||||
|
||||
#include <core/firmware.h>
|
||||
#include <subdev/acr.h>
|
||||
#include <subdev/secboot.h>
|
||||
|
||||
#include <nvif/class.h>
|
||||
@ -32,6 +34,14 @@
|
||||
* PGRAPH engine/subdev functions
|
||||
******************************************************************************/
|
||||
|
||||
const struct nvkm_acr_lsf_func
|
||||
gm200_gr_gpccs_acr = {
|
||||
};
|
||||
|
||||
const struct nvkm_acr_lsf_func
|
||||
gm200_gr_fecs_acr = {
|
||||
};
|
||||
|
||||
int
|
||||
gm200_gr_rops(struct gf100_gr *gr)
|
||||
{
|
||||
@ -124,42 +134,6 @@ gm200_gr_oneinit_tiles(struct gf100_gr *gr)
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
gm200_gr_new_(const struct gf100_gr_func *func, struct nvkm_device *device,
|
||||
int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
struct gf100_gr *gr;
|
||||
int ret;
|
||||
|
||||
if (!(gr = kzalloc(sizeof(*gr), GFP_KERNEL)))
|
||||
return -ENOMEM;
|
||||
*pgr = &gr->base;
|
||||
|
||||
ret = gf100_gr_ctor(func, device, index, gr);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Load firmwares for non-secure falcons */
|
||||
if (!nvkm_secboot_is_managed(device->secboot,
|
||||
NVKM_SECBOOT_FALCON_FECS)) {
|
||||
if ((ret = gf100_gr_ctor_fw(gr, "gr/fecs_inst", &gr->fecs.inst)) ||
|
||||
(ret = gf100_gr_ctor_fw(gr, "gr/fecs_data", &gr->fecs.data)))
|
||||
return ret;
|
||||
}
|
||||
if (!nvkm_secboot_is_managed(device->secboot,
|
||||
NVKM_SECBOOT_FALCON_GPCCS)) {
|
||||
if ((ret = gf100_gr_ctor_fw(gr, "gr/gpccs_inst", &gr->gpccs.inst)) ||
|
||||
(ret = gf100_gr_ctor_fw(gr, "gr/gpccs_data", &gr->gpccs.data)))
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = gk20a_gr_load_sw(gr, "gr/", 0);
|
||||
if (ret)
|
||||
return -ENODEV;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct gf100_gr_func
|
||||
gm200_gr = {
|
||||
.oneinit_tiles = gm200_gr_oneinit_tiles,
|
||||
@ -195,8 +169,78 @@ gm200_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
int
|
||||
gm200_gr_load(struct gf100_gr *gr, int ver, const struct gf100_gr_fwif *fwif)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = nvkm_acr_lsfw_load_bl_inst_data_sig(&gr->base.engine.subdev,
|
||||
gr->fecs.falcon,
|
||||
NVKM_ACR_LSF_FECS,
|
||||
"gr/fecs_", ver, fwif->fecs);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = nvkm_acr_lsfw_load_bl_inst_data_sig(&gr->base.engine.subdev,
|
||||
gr->gpccs.falcon,
|
||||
NVKM_ACR_LSF_GPCCS,
|
||||
"gr/gpccs_", ver,
|
||||
fwif->gpccs);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
gr->firmware = true;
|
||||
|
||||
return gk20a_gr_load_sw(gr, "gr/", ver);
|
||||
}
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/sw_method_init.bin");
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/sw_method_init.bin");
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/sw_method_init.bin");
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gm200_gr_fwif[] = {
|
||||
{ 0, gm200_gr_load, &gm200_gr, &gm200_gr_fecs_acr, &gm200_gr_gpccs_acr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gm200_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gm200_gr_new_(&gm200_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gm200_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -22,10 +22,16 @@
|
||||
#include "gf100.h"
|
||||
#include "ctxgf100.h"
|
||||
|
||||
#include <core/firmware.h>
|
||||
#include <subdev/acr.h>
|
||||
#include <subdev/timer.h>
|
||||
|
||||
#include <nvif/class.h>
|
||||
|
||||
const struct nvkm_acr_lsf_func
|
||||
gm20b_gr_fecs_acr = {
|
||||
};
|
||||
|
||||
static void
|
||||
gm20b_gr_init_gpc_mmu(struct gf100_gr *gr)
|
||||
{
|
||||
@ -85,8 +91,51 @@ gm20b_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
static int
|
||||
gm20b_gr_load(struct gf100_gr *gr, int ver, const struct gf100_gr_fwif *fwif)
|
||||
{
|
||||
struct nvkm_subdev *subdev = &gr->base.engine.subdev;
|
||||
int ret;
|
||||
|
||||
ret = nvkm_acr_lsfw_load_bl_inst_data_sig(subdev, gr->fecs.falcon,
|
||||
NVKM_ACR_LSF_FECS,
|
||||
"gr/fecs_", ver, fwif->fecs);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
||||
if (nvkm_firmware_load_blob(subdev, "gr/", "gpccs_inst", ver,
|
||||
&gr->gpccs.inst) ||
|
||||
nvkm_firmware_load_blob(subdev, "gr/", "gpccs_data", ver,
|
||||
&gr->gpccs.data))
|
||||
return -ENOENT;
|
||||
|
||||
gr->firmware = true;
|
||||
|
||||
return gk20a_gr_load_sw(gr, "gr/", ver);
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_ARCH_TEGRA_210_SOC)
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/sw_method_init.bin");
|
||||
#endif
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gm20b_gr_fwif[] = {
|
||||
{ 0, gm20b_gr_load, &gm20b_gr, &gm20b_gr_fecs_acr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gm20b_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gm200_gr_new_(&gm20b_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gm20b_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -135,8 +135,27 @@ gp100_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/sw_method_init.bin");
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gp100_gr_fwif[] = {
|
||||
{ 0, gm200_gr_load, &gp100_gr, &gm200_gr_fecs_acr, &gm200_gr_gpccs_acr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gp100_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gm200_gr_new_(&gp100_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gp100_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -131,8 +131,27 @@ gp102_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/sw_method_init.bin");
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gp102_gr_fwif[] = {
|
||||
{ 0, gm200_gr_load, &gp102_gr, &gm200_gr_fecs_acr, &gm200_gr_gpccs_acr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gp102_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gm200_gr_new_(&gp102_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gp102_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -59,8 +59,40 @@ gp104_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/sw_method_init.bin");
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/sw_method_init.bin");
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gp104_gr_fwif[] = {
|
||||
{ 0, gm200_gr_load, &gp104_gr, &gm200_gr_fecs_acr, &gm200_gr_gpccs_acr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gp104_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gm200_gr_new_(&gp104_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gp104_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -61,8 +61,27 @@ gp107_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/sw_method_init.bin");
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gp107_gr_fwif[] = {
|
||||
{ 0, gm200_gr_load, &gp107_gr, &gm200_gr_fecs_acr, &gm200_gr_gpccs_acr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gp107_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gm200_gr_new_(&gp107_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gp107_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -21,8 +21,37 @@
|
||||
*/
|
||||
#include "gf100.h"
|
||||
|
||||
#include <subdev/acr.h>
|
||||
|
||||
const struct nvkm_acr_lsf_func
|
||||
gp108_gr_gpccs_acr = {
|
||||
};
|
||||
|
||||
const struct nvkm_acr_lsf_func
|
||||
gp108_gr_fecs_acr = {
|
||||
};
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/sw_method_init.bin");
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gp108_gr_fwif[] = {
|
||||
{ 0, gm200_gr_load, &gp107_gr, &gp108_gr_fecs_acr, &gp108_gr_gpccs_acr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gp108_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gm200_gr_new_(&gp107_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gp108_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -23,8 +23,14 @@
|
||||
#include "gf100.h"
|
||||
#include "ctxgf100.h"
|
||||
|
||||
#include <subdev/acr.h>
|
||||
|
||||
#include <nvif/class.h>
|
||||
|
||||
static const struct nvkm_acr_lsf_func
|
||||
gp10b_gr_gpccs_acr = {
|
||||
};
|
||||
|
||||
static const struct gf100_gr_func
|
||||
gp10b_gr = {
|
||||
.oneinit_tiles = gm200_gr_oneinit_tiles,
|
||||
@ -59,8 +65,29 @@ gp10b_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
#if IS_ENABLED(CONFIG_ARCH_TEGRA_186_SOC)
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/sw_method_init.bin");
|
||||
#endif
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gp10b_gr_fwif[] = {
|
||||
{ 0, gm200_gr_load, &gp10b_gr, &gm20b_gr_fecs_acr, &gp10b_gr_gpccs_acr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gp10b_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gm200_gr_new_(&gp10b_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gp10b_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -120,8 +120,27 @@ gv100_gr = {
|
||||
}
|
||||
};
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/sw_method_init.bin");
|
||||
|
||||
static const struct gf100_gr_fwif
|
||||
gv100_gr_fwif[] = {
|
||||
{ 0, gm200_gr_load, &gv100_gr, &gp108_gr_fecs_acr, &gp108_gr_gpccs_acr },
|
||||
{}
|
||||
};
|
||||
|
||||
int
|
||||
gv100_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
|
||||
{
|
||||
return gm200_gr_new_(&gv100_gr, device, index, pgr);
|
||||
return gf100_gr_new_(gv100_gr_fwif, device, index, pgr);
|
||||
}
|
||||
|
@ -195,56 +195,3 @@ gm200_secboot_new(struct nvkm_device *device, int index,
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm200/gr/sw_method_init.bin");
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm204/gr/sw_method_init.bin");
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm206/gr/sw_method_init.bin");
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp100/gr/sw_method_init.bin");
|
||||
|
@ -148,16 +148,3 @@ gm20b_secboot_new(struct nvkm_device *device, int index,
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_ARCH_TEGRA_210_SOC)
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gm20b/gr/sw_method_init.bin");
|
||||
#endif
|
||||
|
@ -170,18 +170,6 @@ gp102_secboot_new(struct nvkm_device *device, int index,
|
||||
return 0;
|
||||
}
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/gr/sw_method_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/nvdec/scrubber.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/sec2/desc.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/sec2/image.bin");
|
||||
@ -189,18 +177,6 @@ MODULE_FIRMWARE("nvidia/gp102/sec2/sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/sec2/desc-1.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/sec2/image-1.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp102/sec2/sig-1.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/gr/sw_method_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/nvdec/scrubber.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/sec2/desc.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/sec2/image.bin");
|
||||
@ -208,18 +184,6 @@ MODULE_FIRMWARE("nvidia/gp104/sec2/sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/sec2/desc-1.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/sec2/image-1.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp104/sec2/sig-1.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/gr/sw_method_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/nvdec/scrubber.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/sec2/desc.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/sec2/image.bin");
|
||||
@ -227,18 +191,6 @@ MODULE_FIRMWARE("nvidia/gp106/sec2/sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/sec2/desc-1.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/sec2/image-1.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp106/sec2/sig-1.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/gr/sw_method_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/nvdec/scrubber.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/sec2/desc.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp107/sec2/image.bin");
|
||||
|
@ -45,35 +45,11 @@ gp108_secboot_new(struct nvkm_device *device, int index,
|
||||
return nvkm_secboot_ctor(&gp102_secboot, acr, device, index, &gsb->base);
|
||||
}
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/sw_method_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/nvdec/scrubber.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/sec2/desc.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/sec2/image.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/sec2/sig.bin");
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/gr/sw_method_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/nvdec/scrubber.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/sec2/desc.bin");
|
||||
MODULE_FIRMWARE("nvidia/gv100/sec2/image.bin");
|
||||
|
@ -71,18 +71,3 @@ gp10b_secboot_new(struct nvkm_device *device, int index,
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_ARCH_TEGRA_186_SOC)
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp10b/gr/sw_method_init.bin");
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user