]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/nouveau/sec2: switch to instanced constructor
authorBen Skeggs <bskeggs@redhat.com>
Fri, 4 Dec 2020 06:11:29 +0000 (16:11 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Thu, 11 Feb 2021 01:49:59 +0000 (11:49 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
drivers/gpu/drm/nouveau/include/nvkm/core/device.h
drivers/gpu/drm/nouveau/include/nvkm/core/layout.h
drivers/gpu/drm/nouveau/include/nvkm/engine/sec2.h
drivers/gpu/drm/nouveau/nvkm/core/subdev.c
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
drivers/gpu/drm/nouveau/nvkm/engine/sec2/base.c
drivers/gpu/drm/nouveau/nvkm/engine/sec2/gp102.c
drivers/gpu/drm/nouveau/nvkm/engine/sec2/gp108.c
drivers/gpu/drm/nouveau/nvkm/engine/sec2/priv.h
drivers/gpu/drm/nouveau/nvkm/engine/sec2/tu102.c

index e8fd1ccf2381b1d59421c72d4b5a832639067f35..9e42463eef45ebd18a4f5aba9867661e69536531 100644 (file)
@@ -60,7 +60,6 @@ struct nvkm_device {
                struct notifier_block nb;
        } acpi;
 
-       struct nvkm_sec2 *sec2;
        struct nvkm_sw *sw;
        struct nvkm_engine *vic;
 
@@ -104,7 +103,6 @@ struct nvkm_device_chip {
 #undef NVKM_LAYOUT_INST
 #undef NVKM_LAYOUT_ONCE
 
-       int (*sec2    )(struct nvkm_device *, int idx, struct nvkm_sec2 **);
        int (*sw      )(struct nvkm_device *, int idx, struct nvkm_sw **);
        int (*vic     )(struct nvkm_device *, int idx, struct nvkm_engine **);
 };
index 13a3a2087f695b9806535611fbfa1979ec86dc51..1c543734a490040be19f2df75d71446c6db90ddf 100644 (file)
@@ -43,4 +43,5 @@ NVKM_LAYOUT_INST(NVKM_ENGINE_NVDEC   , struct nvkm_nvdec   ,    nvdec, 3)
 NVKM_LAYOUT_INST(NVKM_ENGINE_NVENC   , struct nvkm_nvenc   ,    nvenc, 3)
 NVKM_LAYOUT_ONCE(NVKM_ENGINE_PM      , struct nvkm_pm      ,       pm)
 NVKM_LAYOUT_ONCE(NVKM_ENGINE_SEC     , struct nvkm_engine  ,      sec)
+NVKM_LAYOUT_ONCE(NVKM_ENGINE_SEC2    , struct nvkm_sec2    ,     sec2)
 NVKM_LAYOUT_ONCE(NVKM_ENGINE_VP      , struct nvkm_engine  ,       vp)
index 34dc765648d56f371b024f8ca4448701b85fcbea..06264c840eae6a55ca7063d40fcbef3b66a2bf28 100644 (file)
@@ -18,7 +18,7 @@ struct nvkm_sec2 {
        bool initmsg_received;
 };
 
-int gp102_sec2_new(struct nvkm_device *, int, struct nvkm_sec2 **);
-int gp108_sec2_new(struct nvkm_device *, int, struct nvkm_sec2 **);
-int tu102_sec2_new(struct nvkm_device *, int, struct nvkm_sec2 **);
+int gp102_sec2_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_sec2 **);
+int gp108_sec2_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_sec2 **);
+int tu102_sec2_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_sec2 **);
 #endif
index 4c14f53e722fa15a7038941d9f39254b77a2b6da..aa6a93ba32dd96ba39222630ded48e9d43c2dd28 100644 (file)
@@ -33,7 +33,6 @@ nvkm_subdev_type[NVKM_SUBDEV_NR] = {
 #include <core/layout.h>
 #undef NVKM_LAYOUT_ONCE
 #undef NVKM_LAYOUT_INST
-       [NVKM_ENGINE_SEC2    ] = "sec2",
        [NVKM_ENGINE_SW      ] = "sw",
        [NVKM_ENGINE_VIC     ] = "vic",
 };
index 18db3d25612a7945447bd3c93c009a47f2c7f5db..d5b5f9eb5082f5724c67c0bbfec564a39d5d42bd 100644 (file)
@@ -2199,7 +2199,7 @@ nv132_chipset = {
        .gr       = { 0x00000001, gp102_gr_new },
        .nvdec    = { 0x00000001, gm107_nvdec_new },
        .nvenc    = { 0x00000003, gm107_nvenc_new },
-       .sec2 = gp102_sec2_new,
+       .sec2     = { 0x00000001, gp102_sec2_new },
        .sw = gf100_sw_new,
 };
 
@@ -2233,7 +2233,7 @@ nv134_chipset = {
        .gr       = { 0x00000001, gp104_gr_new },
        .nvdec    = { 0x00000001, gm107_nvdec_new },
        .nvenc    = { 0x00000003, gm107_nvenc_new },
-       .sec2 = gp102_sec2_new,
+       .sec2     = { 0x00000001, gp102_sec2_new },
        .sw = gf100_sw_new,
 };
 
@@ -2267,7 +2267,7 @@ nv136_chipset = {
        .gr       = { 0x00000001, gp104_gr_new },
        .nvdec    = { 0x00000001, gm107_nvdec_new },
        .nvenc    = { 0x00000001, gm107_nvenc_new },
-       .sec2 = gp102_sec2_new,
+       .sec2     = { 0x00000001, gp102_sec2_new },
        .sw = gf100_sw_new,
 };
 
@@ -2301,7 +2301,7 @@ nv137_chipset = {
        .gr       = { 0x00000001, gp107_gr_new },
        .nvdec    = { 0x00000001, gm107_nvdec_new },
        .nvenc    = { 0x00000003, gm107_nvenc_new },
-       .sec2 = gp102_sec2_new,
+       .sec2     = { 0x00000001, gp102_sec2_new },
        .sw = gf100_sw_new,
 };
 
@@ -2334,7 +2334,7 @@ nv138_chipset = {
        .fifo     = { 0x00000001, gp100_fifo_new },
        .gr       = { 0x00000001, gp108_gr_new },
        .nvdec    = { 0x00000001, gm107_nvdec_new },
-       .sec2 = gp108_sec2_new,
+       .sec2     = { 0x00000001, gp108_sec2_new },
        .sw = gf100_sw_new,
 };
 
@@ -2393,7 +2393,7 @@ nv140_chipset = {
        .gr       = { 0x00000001, gv100_gr_new },
        .nvdec    = { 0x00000001, gm107_nvdec_new },
        .nvenc    = { 0x00000007, gm107_nvenc_new },
-       .sec2 = gp108_sec2_new,
+       .sec2     = { 0x00000001, gp108_sec2_new },
 };
 
 static const struct nvkm_device_chip
@@ -2427,7 +2427,7 @@ nv162_chipset = {
        .gr       = { 0x00000001, tu102_gr_new },
        .nvdec    = { 0x00000001, gm107_nvdec_new },
        .nvenc    = { 0x00000001, gm107_nvenc_new },
-       .sec2 = tu102_sec2_new,
+       .sec2     = { 0x00000001, tu102_sec2_new },
 };
 
 static const struct nvkm_device_chip
@@ -2461,7 +2461,7 @@ nv164_chipset = {
        .gr       = { 0x00000001, tu102_gr_new },
        .nvdec    = { 0x00000003, gm107_nvdec_new },
        .nvenc    = { 0x00000001, gm107_nvenc_new },
-       .sec2 = tu102_sec2_new,
+       .sec2     = { 0x00000001, tu102_sec2_new },
 };
 
 static const struct nvkm_device_chip
@@ -2495,7 +2495,7 @@ nv166_chipset = {
        .gr       = { 0x00000001, tu102_gr_new },
        .nvdec    = { 0x00000007, gm107_nvdec_new },
        .nvenc    = { 0x00000001, gm107_nvenc_new },
-       .sec2 = tu102_sec2_new,
+       .sec2     = { 0x00000001, tu102_sec2_new },
 };
 
 static const struct nvkm_device_chip
@@ -2529,7 +2529,7 @@ nv167_chipset = {
        .gr       = { 0x00000001, tu102_gr_new },
        .nvdec    = { 0x00000001, gm107_nvdec_new },
        .nvenc    = { 0x00000001, gm107_nvenc_new },
-       .sec2 = tu102_sec2_new,
+       .sec2     = { 0x00000001, tu102_sec2_new },
 };
 
 static const struct nvkm_device_chip
@@ -2563,7 +2563,7 @@ nv168_chipset = {
        .gr       = { 0x00000001, tu102_gr_new },
        .nvdec    = { 0x00000001, gm107_nvdec_new },
        .nvenc    = { 0x00000001, gm107_nvenc_new },
-       .sec2 = tu102_sec2_new,
+       .sec2     = { 0x00000001, tu102_sec2_new },
 };
 
 static const struct nvkm_device_chip
@@ -3162,7 +3162,6 @@ nvkm_device_ctor(const struct nvkm_device_func *func,
 #include <core/layout.h>
 #undef NVKM_LAYOUT_INST
 #undef NVKM_LAYOUT_ONCE
-               _(NVKM_ENGINE_SEC2    ,     sec2);
                _(NVKM_ENGINE_SW      ,       sw);
                _(NVKM_ENGINE_VIC     ,      vic);
                case NVKM_ENGINE_CE1:
index 27591b2caf74ab164734ddf72a129db0d3b32d1f..092c6d0b8e01e172260f7a9ac2ce0a4f6e5d6cdf 100644 (file)
@@ -85,7 +85,7 @@ nvkm_sec2 = {
 
 int
 nvkm_sec2_new_(const struct nvkm_sec2_fwif *fwif, struct nvkm_device *device,
-              int index, u32 addr, struct nvkm_sec2 **psec2)
+              enum nvkm_subdev_type type, int inst, u32 addr, struct nvkm_sec2 **psec2)
 {
        struct nvkm_sec2 *sec2;
        int ret;
@@ -93,7 +93,7 @@ nvkm_sec2_new_(const struct nvkm_sec2_fwif *fwif, struct nvkm_device *device,
        if (!(sec2 = *psec2 = kzalloc(sizeof(*sec2), GFP_KERNEL)))
                return -ENOMEM;
 
-       ret = nvkm_engine_ctor(&nvkm_sec2, device, index, true, &sec2->engine);
+       ret = nvkm_engine_ctor(&nvkm_sec2, device, type, inst, true, &sec2->engine);
        if (ret)
                return ret;
 
index bccf7acb7f98e772699b54454f33bb3d3a3360dc..44e39f5743d59f8ae1b1724c2ca40944ca1080c5 100644 (file)
@@ -343,7 +343,8 @@ gp102_sec2_fwif[] = {
 };
 
 int
-gp102_sec2_new(struct nvkm_device *device, int index, struct nvkm_sec2 **psec2)
+gp102_sec2_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst,
+              struct nvkm_sec2 **psec2)
 {
-       return nvkm_sec2_new_(gp102_sec2_fwif, device, index, 0, psec2);
+       return nvkm_sec2_new_(gp102_sec2_fwif, device, type, inst, 0, psec2);
 }
index e770c9497871bc09086f2b4a7f5ddefe688c2327..3e9f5c842f3c5ff876f58211c3395682ab52a42d 100644 (file)
@@ -36,7 +36,8 @@ gp108_sec2_fwif[] = {
 };
 
 int
-gp108_sec2_new(struct nvkm_device *device, int index, struct nvkm_sec2 **psec2)
+gp108_sec2_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst,
+              struct nvkm_sec2 **psec2)
 {
-       return nvkm_sec2_new_(gp108_sec2_fwif, device, index, 0, psec2);
+       return nvkm_sec2_new_(gp108_sec2_fwif, device, type, inst, 0, psec2);
 }
index 8cbc0b7d0a2752e0485b4831905e333b79e7566f..af19229e885dd1edb9a890cd2d74fe3319366bc7 100644 (file)
@@ -25,6 +25,6 @@ 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;
 
-int nvkm_sec2_new_(const struct nvkm_sec2_fwif *, struct nvkm_device *,
+int nvkm_sec2_new_(const struct nvkm_sec2_fwif *, struct nvkm_device *, enum nvkm_subdev_type,
                   int, u32 addr, struct nvkm_sec2 **);
 #endif
index a231c1c6c0a5ef1db04268918425dd87f0676601..f3faeb70557559049a111727e1a01edc4e0abfba 100644 (file)
@@ -72,10 +72,11 @@ tu102_sec2_fwif[] = {
 };
 
 int
-tu102_sec2_new(struct nvkm_device *device, int index, struct nvkm_sec2 **psec2)
+tu102_sec2_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst,
+              struct nvkm_sec2 **psec2)
 {
        /* TOP info wasn't updated on Turing to reflect the PRI
         * address change for some reason.  We override it here.
         */
-       return nvkm_sec2_new_(tu102_sec2_fwif, device, index, 0x840000, psec2);
+       return nvkm_sec2_new_(tu102_sec2_fwif, device, type, inst, 0x840000, psec2);
 }