summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgt215.c
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2017-05-19 23:59:35 +1000
committerBen Skeggs <bskeggs@redhat.com>2017-06-16 14:04:56 +1000
commit409b9e54727e700ab8dd15a1e29226eda1e04cdb (patch)
treeeed18b0b3d0549c5b1783575a2f1d2985bb7fb63 /drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgt215.c
parent7d1fede03c5880003a08ff080e6e41984902be46 (diff)
downloadop-kernel-dev-409b9e54727e700ab8dd15a1e29226eda1e04cdb.zip
op-kernel-dev-409b9e54727e700ab8dd15a1e29226eda1e04cdb.tar.gz
drm/nouveau/disp/gt215-: port HDA ELD controls to nvkm_ior
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgt215.c')
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgt215.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgt215.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgt215.c
index eb08410..5e9126e 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgt215.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgt215.c
@@ -21,6 +21,22 @@
*/
#include "ior.h"
+#include <subdev/timer.h>
+
+void
+gt215_sor_dp_audio(struct nvkm_ior *sor, int head, bool enable)
+{
+ struct nvkm_device *device = sor->disp->engine.subdev.device;
+ const u32 soff = nv50_ior_base(sor);
+ const u32 data = 0x80000000 | (0x00000001 * enable);
+ const u32 mask = 0x8000000d;
+ nvkm_mask(device, 0x61c1e0 + soff, mask, data);
+ nvkm_msec(device, 2000,
+ if (!(nvkm_rd32(device, 0x61c1e0 + soff) & 0x80000000))
+ break;
+ );
+}
+
static const struct nvkm_ior_func
gt215_sor = {
.state = g94_sor_state,
@@ -34,6 +50,11 @@ gt215_sor = {
.power = g94_sor_dp_power,
.pattern = g94_sor_dp_pattern,
.drive = g94_sor_dp_drive,
+ .audio = gt215_sor_dp_audio,
+ },
+ .hda = {
+ .hpd = gt215_hda_hpd,
+ .eld = gt215_hda_eld,
},
};
OpenPOWER on IntegriCloud