From: Ben Skeggs <bske...@redhat.com>

- preparation for GSP-RM

Signed-off-by: Ben Skeggs <bske...@redhat.com>
Reviewed-by: Lyude Paul <ly...@redhat.com>
Acked-by: Danilo Krummrich <m...@dakr.org>
Signed-off-by: Lyude Paul <ly...@redhat.com>
---
 drivers/gpu/drm/nouveau/nvkm/engine/disp/dp.c    | 9 +++++++++
 drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.h  | 4 ++++
 drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c | 6 +++---
 3 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/dp.c 
b/drivers/gpu/drm/nouveau/nvkm/engine/disp/dp.c
index 0e6e388003765..99fe7ef07a443 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/dp.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/dp.c
@@ -41,6 +41,14 @@
  */
 #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
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.h 
b/drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.h
index 38b6b43a9f200..513794a278a91 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.h
@@ -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 {                                              
\
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c 
b/drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c
index 7574f22006441..6ca364e953bd7 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c
@@ -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
-- 
2.41.0

Reply via email to