drm/nouveau/sec2/gp102: allow module to load when LSFW is missing
authorBen Skeggs <bskeggs@redhat.com>
Tue, 16 Jun 2020 00:41:49 +0000 (10:41 +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/engine/sec2/gp102.c
drivers/gpu/drm/nouveau/nvkm/engine/sec2/priv.h
drivers/gpu/drm/nouveau/nvkm/engine/sec2/tu102.c

index 36b31bf..bccf7ac 100644 (file)
 #include <nvfw/flcn.h>
 #include <nvfw/sec2.h>
 
+int
+gp102_sec2_nofw(struct nvkm_sec2 *sec2, int ver,
+               const struct nvkm_sec2_fwif *fwif)
+{
+       nvkm_warn(&sec2->engine.subdev, "firmware unavailable\n");
+       return 0;
+}
+
 static int
 gp102_sec2_acr_bootstrap_falcon_callback(void *priv, struct nvfw_falcon_msg *hdr)
 {
@@ -328,8 +336,9 @@ MODULE_FIRMWARE("nvidia/gp107/sec2/sig-1.bin");
 
 static const struct nvkm_sec2_fwif
 gp102_sec2_fwif[] = {
-       { 1, gp102_sec2_load, &gp102_sec2, &gp102_sec2_acr_1 },
-       { 0, gp102_sec2_load, &gp102_sec2, &gp102_sec2_acr_0 },
+       {  1, gp102_sec2_load, &gp102_sec2, &gp102_sec2_acr_1 },
+       {  0, gp102_sec2_load, &gp102_sec2, &gp102_sec2_acr_0 },
+       { -1, gp102_sec2_nofw, &gp102_sec2 },
        {}
 };
 
index bb88117..8cbc0b7 100644 (file)
@@ -20,6 +20,7 @@ struct nvkm_sec2_fwif {
        const struct nvkm_acr_lsf_func *acr;
 };
 
+int gp102_sec2_nofw(struct nvkm_sec2 *, int, const struct nvkm_sec2_fwif *);
 int gp102_sec2_load(struct nvkm_sec2 *, int, const struct nvkm_sec2_fwif *);
 extern const struct nvkm_sec2_func gp102_sec2;
 extern const struct nvkm_acr_lsf_func gp102_sec2_acr_1;
index a829565..a231c1c 100644 (file)
@@ -49,13 +49,6 @@ tu102_sec2 = {
        .initmsg = gp102_sec2_initmsg,
 };
 
-static int
-tu102_sec2_nofw(struct nvkm_sec2 *sec2, int ver,
-               const struct nvkm_sec2_fwif *fwif)
-{
-       return 0;
-}
-
 MODULE_FIRMWARE("nvidia/tu102/sec2/desc.bin");
 MODULE_FIRMWARE("nvidia/tu102/sec2/image.bin");
 MODULE_FIRMWARE("nvidia/tu102/sec2/sig.bin");
@@ -75,7 +68,7 @@ MODULE_FIRMWARE("nvidia/tu117/sec2/sig.bin");
 static const struct nvkm_sec2_fwif
 tu102_sec2_fwif[] = {
        {  0, gp102_sec2_load, &tu102_sec2, &gp102_sec2_acr_1 },
-       { -1, tu102_sec2_nofw, &tu102_sec2 }
+       { -1, gp102_sec2_nofw, &tu102_sec2 }
 };
 
 int