diff options
author | Zhenyu Wang <zhenyu.z.wang@intel.com> | 2008-08-11 15:16:44 +0800 |
---|---|---|
committer | Zhenyu Wang <zhenyu.z.wang@intel.com> | 2008-08-11 15:16:44 +0800 |
commit | d592eabc806b752053ade3c18e9dd8e0f39b45a3 (patch) | |
tree | 950d618476ef73f839c57c4a2c6e5d1773e8d393 /src | |
parent | d0018a96064ee0adfe87c2d50c341bf7d2e45eb0 (diff) |
Fix possible spurious interrupts in hotplug detect on 4 series chip
Diffstat (limited to 'src')
-rw-r--r-- | src/i810_reg.h | 2 | ||||
-rw-r--r-- | src/i830_hdmi.c | 9 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/i810_reg.h b/src/i810_reg.h index 4b9ce9bd..7739a1cb 100644 --- a/src/i810_reg.h +++ b/src/i810_reg.h @@ -2822,4 +2822,6 @@ typedef enum { #define DPFC_STATUS2 0x3214 #define DPFC_FENCE_YOFF 0x3218 +#define PEG_BAND_GAP_DATA 0x14d68 + #endif /* _I810_REG_H */ diff --git a/src/i830_hdmi.c b/src/i830_hdmi.c index 58d1c49a..d56eec90 100644 --- a/src/i830_hdmi.c +++ b/src/i830_hdmi.c @@ -140,6 +140,15 @@ i830_hdmi_detect(xf86OutputPtr output) I830Ptr pI830 = I830PTR(pScrn); uint32_t temp, bit; + /* For G4X, PEG_BAND_GAP_DATA 3:0 must first be written 0xd. + * Failure to do so will result in spurious interrupts being + * generated on the port when a cable is not attached. + */ + if (IS_G4X(pI830)) { + temp = INREG(PEG_BAND_GAP_DATA); + OUTREG(PEG_BAND_GAP_DATA, (temp & ~0xf) | 0xd); + } + temp = INREG(PORT_HOTPLUG_EN); OUTREG(PORT_HOTPLUG_EN, |