drm/nouveau/pmu: move preinit() falcon reset to devinit
authorBen Skeggs <bskeggs@redhat.com>
Wed, 1 Jun 2022 10:47:48 +0000 (20:47 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 9 Nov 2022 00:44:57 +0000 (10:44 +1000)
Cleanup before falcon changes.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gm200.c
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/base.c

index a308b9b..f30718d 100644 (file)
@@ -26,6 +26,7 @@
 #include <subdev/bios.h>
 #include <subdev/bios/bit.h>
 #include <subdev/bios/pmu.h>
+#include <subdev/pmu.h>
 #include <subdev/timer.h>
 
 static void
@@ -85,13 +86,18 @@ pmu_load(struct nv50_devinit *init, u8 type, bool post,
        struct nvkm_subdev *subdev = &init->base.subdev;
        struct nvkm_bios *bios = subdev->device->bios;
        struct nvbios_pmuR pmu;
+       int ret;
 
        if (!nvbios_pmuRm(bios, type, &pmu))
                return -EINVAL;
 
-       if (!post)
+       if (!post || !subdev->device->pmu)
                return 0;
 
+       ret = nvkm_falcon_reset(&subdev->device->pmu->falcon);
+       if (ret)
+               return ret;
+
        pmu_code(init, pmu.boot_addr_pmu, pmu.boot_addr, pmu.boot_size, false);
        pmu_code(init, pmu.code_addr_pmu, pmu.code_addr, pmu.code_size, true);
        pmu_data(init, pmu.data_addr_pmu, pmu.data_addr, pmu.data_size);
index 455e95a..e10f46c 100644 (file)
@@ -99,9 +99,6 @@ nvkm_pmu_reset(struct nvkm_pmu *pmu)
 {
        struct nvkm_device *device = pmu->subdev.device;
 
-       if (!pmu->func->enabled(pmu))
-               return;
-
        /* Reset. */
        if (pmu->func->reset)
                pmu->func->reset(pmu);
@@ -114,14 +111,6 @@ nvkm_pmu_reset(struct nvkm_pmu *pmu)
 }
 
 static int
-nvkm_pmu_preinit(struct nvkm_subdev *subdev)
-{
-       struct nvkm_pmu *pmu = nvkm_pmu(subdev);
-       nvkm_pmu_reset(pmu);
-       return 0;
-}
-
-static int
 nvkm_pmu_init(struct nvkm_subdev *subdev)
 {
        struct nvkm_pmu *pmu = nvkm_pmu(subdev);
@@ -160,7 +149,6 @@ nvkm_pmu_dtor(struct nvkm_subdev *subdev)
 static const struct nvkm_subdev_func
 nvkm_pmu = {
        .dtor = nvkm_pmu_dtor,
-       .preinit = nvkm_pmu_preinit,
        .init = nvkm_pmu_init,
        .fini = nvkm_pmu_fini,
        .intr = nvkm_pmu_intr,