diff --git a/src/ch7xxx/ch7xxx.c b/src/ch7xxx/ch7xxx.c index 5bfb7c5b..9e2a0055 100644 --- a/src/ch7xxx/ch7xxx.c +++ b/src/ch7xxx/ch7xxx.c @@ -182,7 +182,13 @@ out: static xf86OutputStatus ch7xxx_detect(I2CDevPtr d) { - return XF86OutputStatusUnknown; + struct ch7xxx_priv *dev_priv = d->DriverPrivate.ptr; + CARD8 cdet; + ch7xxx_read(dev_priv, CH7xxx_CONNECTION_DETECT, &cdet); + + if (cdet & CH7xxx_CDET_DVI) + return XF86OutputStatusConnected; + return XF86OutputStatusDisconnected; } static ModeStatus diff --git a/src/ch7xxx/ch7xxx_reg.h b/src/ch7xxx/ch7xxx_reg.h index c626e1fc..0ec84ea9 100644 --- a/src/ch7xxx/ch7xxx_reg.h +++ b/src/ch7xxx/ch7xxx_reg.h @@ -49,7 +49,9 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #define CH7xxx_IDF_HSP (1<<3) #define CH7xxx_IDF_VSP (1<<4) -#define CH7301_CONNECTION_DETECT 0x20 +#define CH7xxx_CONNECTION_DETECT 0x20 +#define CH7xxx_CDET_DVI (1<<5) + #define CH7301_DAC_CNTL 0x21 #define CH7301_HOTPLUG 0x23 #define CH7xxx_TCTL 0x31