drm/nouveau/pmu/gm200-: explicitly handle nofw
authorBen Skeggs <bskeggs@redhat.com>
Tue, 16 Jun 2020 05:26:20 +0000 (15:26 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 24 Jul 2020 08:50:49 +0000 (18:50 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm200.c
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp102.c
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp10b.c
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/priv.h

index 97b3acd..383376a 100644 (file)
@@ -30,9 +30,17 @@ gm200_pmu = {
        .reset = gf100_pmu_reset,
 };
 
+
+int
+gm200_pmu_nofw(struct nvkm_pmu *pmu, int ver, const struct nvkm_pmu_fwif *fwif)
+{
+       nvkm_warn(&pmu->subdev, "firmware unavailable\n");
+       return 0;
+}
+
 static const struct nvkm_pmu_fwif
 gm200_pmu_fwif[] = {
-       { -1, gf100_pmu_nofw, &gm200_pmu },
+       { -1, gm200_pmu_nofw, &gm200_pmu },
        {}
 };
 
index cf91fd3..8f6ed53 100644 (file)
@@ -234,7 +234,8 @@ gm20b_pmu_load(struct nvkm_pmu *pmu, int ver, const struct nvkm_pmu_fwif *fwif)
 
 static const struct nvkm_pmu_fwif
 gm20b_pmu_fwif[] = {
-       { 0, gm20b_pmu_load, &gm20b_pmu, &gm20b_pmu_acr },
+       {  0, gm20b_pmu_load, &gm20b_pmu, &gm20b_pmu_acr },
+       { -1, gm200_pmu_nofw, &gm20b_pmu },
        {}
 };
 
index 262b8a3..3d8ce14 100644 (file)
@@ -46,7 +46,7 @@ gp102_pmu = {
 
 static const struct nvkm_pmu_fwif
 gp102_pmu_fwif[] = {
-       { -1, gf100_pmu_nofw, &gp102_pmu },
+       { -1, gm200_pmu_nofw, &gp102_pmu },
        {}
 };
 
index 9a4aca2..9c237c4 100644 (file)
@@ -93,7 +93,8 @@ MODULE_FIRMWARE("nvidia/gp10b/pmu/sig.bin");
 
 static const struct nvkm_pmu_fwif
 gp10b_pmu_fwif[] = {
-       { 0, gm20b_pmu_load, &gp10b_pmu, &gp10b_pmu_acr },
+       {  0, gm20b_pmu_load, &gp10b_pmu, &gp10b_pmu_acr },
+       { -1, gm200_pmu_nofw, &gp10b_pmu },
        {}
 };
 
index f470859..276b6d7 100644 (file)
@@ -59,6 +59,7 @@ struct nvkm_pmu_fwif {
 };
 
 int gf100_pmu_nofw(struct nvkm_pmu *, int, const struct nvkm_pmu_fwif *);
+int gm200_pmu_nofw(struct nvkm_pmu *, int, const struct nvkm_pmu_fwif *);
 int gm20b_pmu_load(struct nvkm_pmu *, int, const struct nvkm_pmu_fwif *);
 
 int nvkm_pmu_ctor(const struct nvkm_pmu_fwif *, struct nvkm_device *,