diff options
author | Egbert Eich <eich@freedesktop.org> | 2009-11-06 13:15:04 +0100 |
---|---|---|
committer | Egbert Eich <eich@freedesktop.org> | 2009-11-06 13:15:04 +0100 |
commit | af5f1e1abc11a2182705527421c30ad99b7dc60e (patch) | |
tree | 56d54391bff895091a539d98d774c0b8e11b3180 | |
parent | a76cee0a96f25ef229fb0d6fbf6dbe535845e6f8 (diff) |
I2C: Fix I2C readout.
The Radeon driver attempts to save/restore the hw scaler registers
by reading/writing the range of registers which address the video scaler.
While doing so it also touches the TAP Control index/data registers.
Uncontrolled touching of the data register seems to have an adverse
effect on the ability to run HW supported I2C read out. This running
RadeonHD after running the Radeon driver results in no DDC data.
The reason for this has not been understood however it has been found
experimentally that reading back the scaler data register is able to
'fix' this issue.
We put this hacky workaround in the code until we obtain a better
understanding of the issue.
-rw-r--r-- | src/rhd_i2c.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/rhd_i2c.c b/src/rhd_i2c.c index b59f3d4..0d3553b 100644 --- a/src/rhd_i2c.c +++ b/src/rhd_i2c.c @@ -1365,6 +1365,13 @@ rhdInitI2C(int scrnIndex) } I2CList[i] = I2CPtr; } + /* + * This magic is needed to pry loose the scaler which appears to affect hardware controlled + * I2C readout ?!? after the radeon driver has erronously tried to restore this multi tap data + * register. I put this here for now before I find a better place for it. + */ + RHDRegRead(rhdPtr, 0x657C); + return I2CList; error: rhdTearDownI2C(I2CList); |