diff options
author | Keith Packard <keithp@work.jf.intel.com> | 2007-05-12 20:04:31 -0700 |
---|---|---|
committer | Keith Packard <keithp@work.jf.intel.com> | 2007-05-12 20:04:31 -0700 |
commit | b31bef1a8effa9acb6de7edd206b9d8c48d88144 (patch) | |
tree | 63bc8b328c3c7303c4ceaf81392da90f621ef2f5 /src/i810_reg.h | |
parent | 3b769af53e0ef6ef9b56afd679446c73a0e63ea5 (diff) |
Deal with i830 CRT load detection which cannot use FORCE_BORDER.
Chips newer than the i830 can force the border color for the active period
of the screen, allowing the load detection to easily see the right data. In
addition, newer chips appear to have more sensible load detection hardware
which either ignores inactive periods on the screen or performs some
longer-term averaging. The i830 appears to provide unfiltered samples of the
detected load.
For the i830, then, emit a border at the bottom of the screen and, for load
detection, simply turn it purple and wait for the current line to be within
the border. Sample an entire scanline, counting the number of times the load
detection sees a monitor. In my testing, the presence of a monitor will
cause the detection to succeed every time, while the absense will cause it
to fail about 75% of the time. The code here, checks for presence at least
75% of the time, which should be adequate.
Also, as the new mode configuration code has already taken care to enable
the CRT output, eliminate much of the load detection code which is simply
duplicating functionality from the general mode setting code. This should
result in faster load detection as this code will now run in no more than
one frame time. It does burn the CPU the whole time though, polling the
displayed scanline register.
Diffstat (limited to 'src/i810_reg.h')
-rw-r--r-- | src/i810_reg.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/i810_reg.h b/src/i810_reg.h index c3db5c94..234d124f 100644 --- a/src/i810_reg.h +++ b/src/i810_reg.h @@ -1938,6 +1938,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define TV_V_CHROMA_42 0x684a8 /** @} */ +#define PIPEA_DSL 0x70000 + #define PIPEACONF 0x70008 #define PIPEACONF_ENABLE (1<<31) #define PIPEACONF_DISABLE 0 @@ -1966,6 +1968,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define PIPEAFRAMEPIXEL 0x70044 +#define PIPEB_DSL 0x71000 + #define PIPEBCONF 0x71008 #define PIPEBCONF_ENABLE (1<<31) #define PIPEBCONF_DISABLE 0 |