diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2016-11-04 17:20:36 +1000 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2016-11-07 14:04:50 +1000 |
commit | 52aa30f2524d065c6f251d78e906966fed8291eb (patch) | |
tree | cfe4ef0804a8f29ced0c164c0224e43ae9508a2b /drivers/gpu/drm/nouveau/nouveau_encoder.h | |
parent | fc21a4a0993a9d8d72facccad3ab6f19d8d706fb (diff) | |
download | linux-52aa30f2524d065c6f251d78e906966fed8291eb.tar.gz linux-52aa30f2524d065c6f251d78e906966fed8291eb.tar.bz2 linux-52aa30f2524d065c6f251d78e906966fed8291eb.zip |
drm/nouveau/kms/nv50: switch mst sink back into sst mode
Sometimes we load with a sink already in MST mode. If, however, we can't
or don't want to use MST, we need to be able to switch it back to SST.
This commit instantiates a stub topology manager for any output path that
we believe (the detection of this could use some improvement) has support
for MST, and adds the connector detect() logic for detecting sink support
and switching between modes.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_encoder.h')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_encoder.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_encoder.h b/drivers/gpu/drm/nouveau/nouveau_encoder.h index ee6a6d3fc80f..dfa1a660e73b 100644 --- a/drivers/gpu/drm/nouveau/nouveau_encoder.h +++ b/drivers/gpu/drm/nouveau/nouveau_encoder.h @@ -30,6 +30,7 @@ #include <subdev/bios/dcb.h> #include <drm/drm_encoder_slave.h> +#include <drm/drm_dp_mst_helper.h> #include "dispnv04/disp.h" #define NV_DPMS_CLEARED 0x80 @@ -57,6 +58,7 @@ struct nouveau_encoder { union { struct { + struct nv50_mstm *mstm; u8 dpcd[8]; int link_nr; int link_bw; @@ -90,9 +92,15 @@ get_slave_funcs(struct drm_encoder *enc) } /* nouveau_dp.c */ +enum nouveau_dp_status { + NOUVEAU_DP_SST, + NOUVEAU_DP_MST, +}; + int nouveau_dp_detect(struct nouveau_encoder *); struct nouveau_connector * nouveau_encoder_connector_get(struct nouveau_encoder *encoder); +int nv50_mstm_detect(struct nv50_mstm *, u8 dpcd[8], int allow); #endif /* __NOUVEAU_ENCODER_H__ */ |