drm/nouveau/disp: move dp aux pwr method to HAL
authorBen Skeggs <bskeggs@redhat.com>
Tue, 19 Sep 2023 21:56:21 +0000 (17:56 -0400)
committerLyude Paul <lyude@redhat.com>
Tue, 19 Sep 2023 22:22:10 +0000 (18:22 -0400)
- preparation for GSP-RM

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Acked-by: Danilo Krummrich <me@dakr.org>
Signed-off-by: Lyude Paul <lyude@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-27-lyude@redhat.com
drivers/gpu/drm/nouveau/nvkm/engine/disp/dp.c
drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.h
drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c

index 0e6e388003765880da0ae130a7fc72006244b839..99fe7ef07a443350c7d21d590071ba315b82f840 100644 (file)
  */
 #define AMPERE_IED_HACK(disp) ((disp)->engine.subdev.device->card_type >= GA100)
 
+static int
+nvkm_dp_aux_pwr(struct nvkm_outp *outp, bool pu)
+{
+       outp->dp.enabled = pu;
+       nvkm_dp_enable(outp, outp->dp.enabled);
+       return 0;
+}
+
 struct lt_state {
        struct nvkm_outp *outp;
 
@@ -814,6 +822,7 @@ nvkm_dp_func = {
        .disable = nvkm_dp_disable,
        .bl.get = nvkm_outp_bl_get,
        .bl.set = nvkm_outp_bl_set,
+       .dp.aux_pwr = nvkm_dp_aux_pwr,
 };
 
 int
index 38b6b43a9f2003c7603a7c0855ece52abc2677ac..513794a278a912a49790627d46cad02b25566508 100644 (file)
@@ -104,6 +104,10 @@ struct nvkm_outp_func {
                int (*get)(struct nvkm_outp *);
                int (*set)(struct nvkm_outp *, int level);
        } bl;
+
+       struct {
+               int (*aux_pwr)(struct nvkm_outp *, bool pu);
+       } dp;
 };
 
 #define OUTP_MSG(o,l,f,a...) do {                                              \
index 7574f220064417ed4d2e09cd3b95e61985953610..6ca364e953bd704b08eb88841cf47031b829e315 100644 (file)
@@ -75,10 +75,10 @@ nvkm_uoutp_mthd_dp_aux_pwr(struct nvkm_outp *outp, void *argv, u32 argc)
 
        if (argc != sizeof(args->v0) || args->v0.version != 0)
                return -ENOSYS;
+       if (!outp->func->dp.aux_pwr)
+               return -EINVAL;
 
-       outp->dp.enabled = !!args->v0.state;
-       nvkm_dp_enable(outp, outp->dp.enabled);
-       return 0;
+       return outp->func->dp.aux_pwr(outp, !!args->v0.state);
 }
 
 static int