ChangeLog          |  125 +++++++++++++++++++++++++++++++++++++++
 config.guess       |   32 ++++++----
 config.sub         |   44 ++++++++++++--
 configure          |   20 +++---
 configure.ac       |    2 
 debian/changelog   |   11 ++-
 src/common.h       |    2 
 src/i810_reg.h     |   42 ++++++++++++-
 src/i830.h         |    5 +
 src/i830_debug.c   |  136 +++++++++++++++++++++++++++++++++++++++++++
 src/i830_display.c |    5 -
 src/i830_dri.c     |  101 +++++++++++---------------------
 src/i830_driver.c  |   30 +++++++--
 src/i830_dvo.c     |    8 ++
 src/i830_memory.c  |   15 +++-
 src/i830_quirks.c  |  166 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
 16 files changed, 629 insertions(+), 115 deletions(-)

New commits:
commit 4682799c75a0960d4e26e7c6bdfaa3a1310161a8
Author: Brice Goglin <[EMAIL PROTECTED]>
Date:   Sat Feb 23 00:53:22 2008 +0100

    New upstream release

diff --git a/ChangeLog b/ChangeLog
index d94a5bc..b8e26ca 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,128 @@
+commit 90dcbcef878e0e708c871702a45381752707418a
+Author: Jesse Barnes <[EMAIL PROTECTED]>
+Date:   Fri Feb 22 12:28:50 2008 -0800
+
+    Bump version to 2.2.1
+
+commit c81cf678aabbf84bfa4b98d491a5a38179f591f4
+Author: Jesse Barnes <[EMAIL PROTECTED]>
+Date:   Thu Feb 7 11:56:28 2008 -0800
+
+    Add CACHE_MODE_0 register to dump output
+
+commit db2e848b13368eb9c180cd82494645459a6c0382
+Author: Keith Packard <[EMAIL PROTECTED]>
+Date:   Sat Feb 16 18:16:12 2008 -0800
+
+    Decode DSPCLK_GATE, dump PIPE*STAT, MI_MODE, MI_DISPLAY_POWER_DOWN, 
MI_ARB_STATE, MI_RDRET_STATE, ECOSKPD
+
+commit b85c0992938e85e2228e69a3d9bfdd14958c0f4f
+Author: Jesse Barnes <[EMAIL PROTECTED]>
+Date:   Fri Feb 22 11:41:25 2008 -0800
+
+    Add quirk for DVO channel selection
+    
+    Some machines want DVOA, some DVOB.  We can use this quirk to differentiate
+    them until we come up with a better solution.  Patch from Hong Liu.
+    
+    Fixes #13722.
+
+commit 5073b4026c536f6e5f0c8c5a741a1852b4480f31
+Author: Zhenyu Wang <[EMAIL PROTECTED]>
+Date:   Tue Feb 19 21:13:45 2008 +0800
+
+    Don't leak memory if no DMI info is provided by kernel
+
+commit 3709962b91402027f2a73f732d1eb935f7d714b9
+Author: Zhenyu Wang <[EMAIL PROTECTED]>
+Date:   Mon Feb 18 14:35:06 2008 +0800
+
+    Fix Lenovo X60 TV quirk
+    
+    Z61 has same subsys ids with X60, but does have one S-video
+    TV out. Use DMI info instead to quirk TV on X60, X60s.
+
+commit 866ae8873613a51ca09973f77aa1ea62477b54a1
+Author: Zhenyu Wang <[EMAIL PROTECTED]>
+Date:   Mon Feb 18 14:32:32 2008 +0800
+
+    Add DMI info for i830 quirks
+    
+    Linux kernel has CONFIG_DMIID to export dmi info
+    through sysfs.
+
+commit 945ec2b2516b6508857ee5cd136e59accbc6ebe7
+Author: Zhenyu Wang <[EMAIL PROTECTED]>
+Date:   Wed Jan 30 18:55:20 2008 +0800
+
+    hardware status page initialization rework
+    
+    Order hardware status page setup more reasonable after
+    all memory bound, in case new chipset requires non-stolen
+    page and that could be bound then.
+    
+    Also clean up drm irq handler install function, and put
+    first install in starting stage later than status page setup,
+    so we won't make device cry for uninitialized status page.
+
+commit 9e3fb1c75a9aff6aecfc2a21ccc6b2e2d32a5f9a
+Author: Zhenyu Wang <[EMAIL PROTECTED]>
+Date:   Wed Jan 30 18:52:32 2008 +0800
+
+    Wrap up chipsets which needs graphics address for status page
+    
+    Also add support on new chipset.
+
+commit 4ef51aba115820fe79048fa45221138f1e5054d2
+Author: Jesse Barnes <[EMAIL PROTECTED]>
+Date:   Thu Feb 21 08:43:34 2008 -0800
+
+    Add pipe A force enable quirk for ThinkPad X40
+    
+    ThinkPad X40s need this quirk or they'll crash frequently.
+    
+    Fixes #14521.
+
+commit 122e9a266b04b9f88a4294aadfa6fb5f9a6faff5
+Author: Jesse Barnes <[EMAIL PROTECTED]>
+Date:   Thu Feb 21 08:37:42 2008 -0800
+
+    Remove side effects from VGA debug code
+    
+    The VGA register dumping code was leaving ARX in data mode rather than 
index
+    mode, which could cause problems for later software accessing AR* 
registers.
+    Fix it to make sure it's in index mode when we're done.
+    
+    Fixes #14434.
+
+commit 83be0e293aee63cd181ace8e36a0ee78e3c5a8e1
+Author: Jesse Barnes <[EMAIL PROTECTED]>
+Date:   Wed Feb 20 13:08:27 2008 -0800
+
+    Fix DSP*CNTR restoration
+    
+    When checking which pipe a given plane was associated with, we weren't 
properly
+    masking the pipe selection bits.  Fixes #14481 and should allow the driver 
to
+    work with vesafb again.
+
+commit aa1813e4807e500fb122f36af988cf60f91e05a5
+Author: Zhenyu Wang <[EMAIL PROTECTED]>
+Date:   Tue Feb 19 08:51:53 2008 +0800
+
+    Fix last 8XX clock's p2 value commit
+    
+    My fault to change Hong's origin patch reversely.
+
+commit 1cea254b70158600d9dfff8ba66fb2ec0a6e0f67
+Author: Zhenyu Wang <[EMAIL PROTECTED]>
+Date:   Fri Feb 15 13:20:22 2008 +0800
+
+    Bug #14440: fix stolen mem size mask on i830M
+    
+    For i830M stolen mem size mask should always be 0x70.
+    Use 0xF0 for later chipsets should be ok, so behavior is
+    identical to kernel agp.
+
 commit 2c8f87be99957e0e18d8bcda46bd8706ab374253
 Author: Jesse Barnes <[EMAIL PROTECTED]>
 Date:   Wed Feb 6 09:35:43 2008 -0800
diff --git a/config.guess b/config.guess
index 278f9e9..f32079a 100755
--- a/config.guess
+++ b/config.guess
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
-#   Inc.
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   Free Software Foundation, Inc.
 
-timestamp='2007-07-22'
+timestamp='2008-01-23'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -56,8 +56,8 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 
2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -532,7 +532,7 @@ EOF
                echo rs6000-ibm-aix3.2
        fi
        exit ;;
-    *:AIX:*:[45])
+    *:AIX:*:[456])
        IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk 
'{ print $1 }'`
        if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; 
then
                IBM_ARCH=rs6000
@@ -799,6 +799,9 @@ EOF
            EM64T | authenticamd)
                echo x86_64-unknown-interix${UNAME_RELEASE}
                exit ;;
+           IA64)
+               echo ia64-unknown-interix${UNAME_RELEASE}
+               exit ;;
        esac ;;
     [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
        echo i${UNAME_MACHINE}-pc-mks
@@ -833,7 +836,14 @@ EOF
        echo ${UNAME_MACHINE}-pc-minix
        exit ;;
     arm*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       eval $set_cc_for_build
+       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+           | grep -q __ARM_EABI__
+       then
+           echo ${UNAME_MACHINE}-unknown-linux-gnu
+       else
+           echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+       fi
        exit ;;
     avr32*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
@@ -954,8 +964,8 @@ EOF
     x86_64:Linux:*:*)
        echo x86_64-unknown-linux-gnu
        exit ;;
-    xtensa:Linux:*:*)
-       echo xtensa-unknown-linux-gnu
+    xtensa*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     i*86:Linux:*:*)
        # The BFD linker knows what the default object file format is, so
@@ -1474,9 +1484,9 @@ This script, last modified $timestamp, has failed to 
recognize
 the operating system you are using. It is advised that you
 download the most up to date version of the config scripts from
 
-  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+  
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
 and
-  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+  
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
 
 If the version you run ($0) is already up to date, please
 send the following data and any information you think might be
diff --git a/config.sub b/config.sub
index 1761d8b..6759825 100755
--- a/config.sub
+++ b/config.sub
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Configuration validation subroutine script.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
-#   Inc.
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   Free Software Foundation, Inc.
 
-timestamp='2007-06-28'
+timestamp='2008-01-16'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -72,8 +72,8 @@ Report bugs and patches to <[EMAIL PROTECTED]>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 
2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -369,10 +369,14 @@ case $basic_machine in
        | v850-* | v850e-* | vax-* \
        | we32k-* \
        | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
-       | xstormy16-* | xtensa-* \
+       | xstormy16-* | xtensa*-* \
        | ymp-* \
        | z8k-*)
                ;;
+       # Recognize the basic CPU types without company name, with glob match.
+       xtensa*)
+               basic_machine=$basic_machine-unknown
+               ;;
        # Recognize the various machine names and aliases which stand
        # for a CPU type and a company and sometimes even an OS.
        386bsd)
@@ -443,6 +447,14 @@ case $basic_machine in
                basic_machine=ns32k-sequent
                os=-dynix
                ;;
+       blackfin)
+               basic_machine=bfin-unknown
+               os=-linux
+               ;;
+       blackfin-*)
+               basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
        c90)
                basic_machine=c90-cray
                os=-unicos
@@ -668,6 +680,14 @@ case $basic_machine in
                basic_machine=m68k-isi
                os=-sysv
                ;;
+       m68knommu)
+               basic_machine=m68k-unknown
+               os=-linux
+               ;;
+       m68knommu-*)
+               basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
        m88k-omron*)
                basic_machine=m88k-omron
                ;;
@@ -813,6 +833,14 @@ case $basic_machine in
                basic_machine=i860-intel
                os=-osf
                ;;
+       parisc)
+               basic_machine=hppa-unknown
+               os=-linux
+               ;;
+       parisc-*)
+               basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
        pbd)
                basic_machine=sparc-tti
                ;;
@@ -1021,6 +1049,10 @@ case $basic_machine in
                basic_machine=tic6x-unknown
                os=-coff
                ;;
+       tile*)
+               basic_machine=tile-unknown
+               os=-linux-gnu
+               ;;
        tx39)
                basic_machine=mipstx39-unknown
                ;;
diff --git a/configure b/configure
index aabba24..4944cb6 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for xf86-video-intel 2.2.0.90.
+# Generated by GNU Autoconf 2.61 for xf86-video-intel 2.2.1.
 #
 # Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
 #
@@ -728,8 +728,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='xf86-video-intel'
 PACKAGE_TARNAME='xf86-video-intel'
-PACKAGE_VERSION='2.2.0.90'
-PACKAGE_STRING='xf86-video-intel 2.2.0.90'
+PACKAGE_VERSION='2.2.1'
+PACKAGE_STRING='xf86-video-intel 2.2.1'
 PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
 
 ac_unique_file="Makefile.am"
@@ -1453,7 +1453,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures xf86-video-intel 2.2.0.90 to adapt to many kinds of 
systems.
+\`configure' configures xf86-video-intel 2.2.1 to adapt to many kinds of 
systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1523,7 +1523,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of xf86-video-intel 2.2.0.90:";;
+     short | recursive ) echo "Configuration of xf86-video-intel 2.2.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1648,7 +1648,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-xf86-video-intel configure 2.2.0.90
+xf86-video-intel configure 2.2.1
 generated by GNU Autoconf 2.61
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1662,7 +1662,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by xf86-video-intel $as_me 2.2.0.90, which was
+It was created by xf86-video-intel $as_me 2.2.1, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   $ $0 $@
@@ -2357,7 +2357,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='xf86-video-intel'
- VERSION='2.2.0.90'
+ VERSION='2.2.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -23160,7 +23160,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by xf86-video-intel $as_me 2.2.0.90, which was
+This file was extended by xf86-video-intel $as_me 2.2.1, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -23213,7 +23213,7 @@ Report bugs to <[EMAIL PROTECTED]>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-xf86-video-intel config.status 2.2.0.90
+xf86-video-intel config.status 2.2.1
 configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`\\"
 
diff --git a/debian/changelog b/debian/changelog
index 1d58356..787f365 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,16 @@
-xserver-xorg-video-intel (2:2.2.0.90-4) UNRELEASED; urgency=low
+xserver-xorg-video-intel (2:2.2.1-1) unstable; urgency=low
 
+  [ Brice Goglin ]
+  * New upstream release.
+    + Fix some blinking pixels and unreadable text, closes: #465921.
+    + Fix i830 stolen memory mask, closes: #464661.
+    + Fix flickering on i855, closes: #443809, #435621.
+
+  [ Julien Cristau ]
   * Build the intel_reg_dumper tool, and install it in the -dbg package.
     Add build-dependency on libpciaccess-dev.
 
- -- Julien Cristau <[EMAIL PROTECTED]>  Tue, 19 Feb 2008 16:31:43 +0100
+ -- Brice Goglin <[EMAIL PROTECTED]>  Sat, 23 Feb 2008 00:52:39 +0100
 
 xserver-xorg-video-intel (2:2.2.0.90-3) unstable; urgency=low
 

commit 90dcbcef878e0e708c871702a45381752707418a
Author: Jesse Barnes <[EMAIL PROTECTED]>
Date:   Fri Feb 22 12:28:50 2008 -0800

    Bump version to 2.2.1

diff --git a/configure.ac b/configure.ac
index 2b7b540..5278f0b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
 
 AC_PREREQ(2.57)
 AC_INIT([xf86-video-intel],
-        2.2.0.90,
+        2.2.1,
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         xf86-video-intel)
 

commit c81cf678aabbf84bfa4b98d491a5a38179f591f4
Author: Jesse Barnes <[EMAIL PROTECTED]>
Date:   Thu Feb 7 11:56:28 2008 -0800

    Add CACHE_MODE_0 register to dump output

diff --git a/src/i830_debug.c b/src/i830_debug.c
index 38c90ec..7d0c0a0 100644
--- a/src/i830_debug.c
+++ b/src/i830_debug.c
@@ -493,6 +493,7 @@ static struct i830SnapshotRec {
     DEFINEREG2(VCLK_DIVISOR_VGA1, i830_debug_fp),
     DEFINEREG2(VCLK_POST_DIV, i830_debug_vga_pd),
     DEFINEREG2(DPLL_TEST, i830_debug_dpll_test),
+    DEFINEREG(CACHE_MODE_0),
     DEFINEREG(D_STATE),
     DEFINEREG2(DSPCLK_GATE_D, i830_debug_dspclk_gate_d),
     DEFINEREG(RENCLK_GATE_D1),

commit db2e848b13368eb9c180cd82494645459a6c0382
Author: Keith Packard <[EMAIL PROTECTED]>
Date:   Sat Feb 16 18:16:12 2008 -0800

    Decode DSPCLK_GATE, dump PIPE*STAT, MI_MODE, MI_DISPLAY_POWER_DOWN, 
MI_ARB_STATE, MI_RDRET_STATE, ECOSKPD

diff --git a/src/i810_reg.h b/src/i810_reg.h
index e69ae0a..5170004 100644
--- a/src/i810_reg.h
+++ b/src/i810_reg.h
@@ -365,7 +365,10 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 #define CACHE_MODE_0           0x2120
 #define CACHE_MODE_1           0x2124
+#define MI_MODE                       0x209c
+#define MI_DISPLAY_POWER_DOWN  0x20e0
 #define MI_ARB_STATE           0x20e4
+#define MI_RDRET_STATE        0x20fc
 
 /* Start addresses for each of the primary rings:
  */
@@ -976,6 +979,13 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 #define D_STATE                        0x6104
 #define DSPCLK_GATE_D          0x6200
+# define DPUNIT_B_CLOCK_GATE_DISABLE           (1 << 30) /* 965 */
+# define VSUNIT_CLOCK_GATE_DISABLE             (1 << 29) /* 965 */
+# define VRHUNIT_CLOCK_GATE_DISABLE            (1 << 28) /* 965 */
+# define VRDUNIT_CLOCK_GATE_DISABLE            (1 << 27) /* 965 */
+# define AUDUNIT_CLOCK_GATE_DISABLE            (1 << 26) /* 965 */
+# define DPUNIT_A_CLOCK_GATE_DISABLE           (1 << 25) /* 965 */
+# define DPCUNIT_CLOCK_GATE_DISABLE            (1 << 24) /* 965 */
 # define TVRUNIT_CLOCK_GATE_DISABLE            (1 << 23) /* 915-945 */
 # define TVCUNIT_CLOCK_GATE_DISABLE            (1 << 22) /* 915-945 */
 # define TVFUNIT_CLOCK_GATE_DISABLE            (1 << 21) /* 915-945 */
@@ -990,7 +1000,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 # define DPLUNIT_CLOCK_GATE_DISABLE            (1 << 12) /* 915-945 */
 # define DPOUNIT_CLOCK_GATE_DISABLE            (1 << 11)
 # define DPBUNIT_CLOCK_GATE_DISABLE            (1 << 10)
-# define DPCUNIT_CLOCK_GATE_DISABLE            (1 << 9)
+# define DCUNIT_CLOCK_GATE_DISABLE             (1 << 9)
 # define DPUNIT_CLOCK_GATE_DISABLE             (1 << 8)
 # define VRUNIT_CLOCK_GATE_DISABLE             (1 << 7) /* 915+: reserved */
 # define OVHUNIT_CLOCK_GATE_DISABLE            (1 << 6) /* 830-865 */
@@ -1995,6 +2005,32 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #define PIPEAGCMAXGREEN                0x70014
 #define PIPEAGCMAXBLUE         0x70018
 #define PIPEASTAT              0x70024
+# define FIFO_UNDERRUN         (1 << 31)
+# define CRC_ERROR_ENABLE      (1 << 29)
+# define CRC_DONE_ENABLE       (1 << 28)
+# define GMBUS_EVENT_ENABLE    (1 << 27)
+# define VSYNC_INT_ENABLE      (1 << 25)
+# define DLINE_COMPARE_ENABLE  (1 << 24)
+# define DPST_EVENT_ENABLE     (1 << 23)
+# define LBLC_EVENT_ENABLE     (1 << 22)
+# define OFIELD_INT_ENABLE     (1 << 21)
+# define EFIELD_INT_ENABLE     (1 << 20)
+# define SVBLANK_INT_ENABLE    (1 << 18)
+# define VBLANK_INT_ENABLE     (1 << 17)
+# define OREG_UPDATE_ENABLE    (1 << 16)
+# define CRC_ERROR_INT_STATUS  (1 << 13)
+# define CRC_DONE_INT_STATUS   (1 << 12)
+# define GMBUS_INT_STATUS      (1 << 11)
+# define VSYNC_INT_STATUS      (1 << 9)
+# define DLINE_COMPARE_STATUS  (1 << 8)
+# define DPST_EVENT_STATUS     (1 << 7)
+# define LBLC_EVENT_STATUS     (1 << 6)
+# define OFIELD_INT_STATUS     (1 << 5)
+# define EFIELD_INT_STATUS     (1 << 4)
+# define SVBLANK_INT_STATUS    (1 << 2)
+# define VBLANK_INT_STATUS     (1 << 1)
+# define OREG_UPDATE_STATUS    (1 << 0)
+                                
 
 #define DSPARB                 0x70030
 #define DSPFW1                 0x70034
diff --git a/src/i830_debug.c b/src/i830_debug.c
index 9cf7ba5..38c90ec 100644
--- a/src/i830_debug.c
+++ b/src/i830_debug.c
@@ -88,6 +88,61 @@ DEBUGSTRING(i830_debug_pipeconf)
     return XNFprintf("%s, %s", enabled, bit30);
 }
 
+DEBUGSTRING(i830_debug_pipestat)
+{
+    char *_FIFO_UNDERRUN = val & FIFO_UNDERRUN ? " FIFO_UNDERRUN" : "";
+    char *_CRC_ERROR_ENABLE = val & CRC_ERROR_ENABLE ? " CRC_ERROR_ENABLE" : 
"";
+    char *_CRC_DONE_ENABLE = val & CRC_DONE_ENABLE ? " CRC_DONE_ENABLE" : "";
+    char *_GMBUS_EVENT_ENABLE = val & GMBUS_EVENT_ENABLE ? " 
GMBUS_EVENT_ENABLE" : "";
+    char *_VSYNC_INT_ENABLE = val & VSYNC_INT_ENABLE ? " VSYNC_INT_ENABLE" : 
"";
+    char *_DLINE_COMPARE_ENABLE = val & DLINE_COMPARE_ENABLE ? " 
DLINE_COMPARE_ENABLE" : "";
+    char *_DPST_EVENT_ENABLE = val & DPST_EVENT_ENABLE ? " DPST_EVENT_ENABLE" 
: "";
+    char *_LBLC_EVENT_ENABLE = val & LBLC_EVENT_ENABLE ? " LBLC_EVENT_ENABLE" 
: "";
+    char *_OFIELD_INT_ENABLE = val & OFIELD_INT_ENABLE ? " OFIELD_INT_ENABLE" 
: "";
+    char *_EFIELD_INT_ENABLE = val & EFIELD_INT_ENABLE ? " EFIELD_INT_ENABLE" 
: "";
+    char *_SVBLANK_INT_ENABLE = val & SVBLANK_INT_ENABLE ? " 
SVBLANK_INT_ENABLE" : "";
+    char *_VBLANK_INT_ENABLE = val & VBLANK_INT_ENABLE ? " VBLANK_INT_ENABLE" 
: "";
+    char *_OREG_UPDATE_ENABLE = val & OREG_UPDATE_ENABLE ? " 
OREG_UPDATE_ENABLE" : "";
+    char *_CRC_ERROR_INT_STATUS = val & CRC_ERROR_INT_STATUS ? " 
CRC_ERROR_INT_STATUS" : "";
+    char *_CRC_DONE_INT_STATUS = val & CRC_DONE_INT_STATUS ? " 
CRC_DONE_INT_STATUS" : "";
+    char *_GMBUS_INT_STATUS = val & GMBUS_INT_STATUS ? " GMBUS_INT_STATUS" : 
"";
+    char *_VSYNC_INT_STATUS = val & VSYNC_INT_STATUS ? " VSYNC_INT_STATUS" : 
"";
+    char *_DLINE_COMPARE_STATUS = val & DLINE_COMPARE_STATUS ? " 
DLINE_COMPARE_STATUS" : "";
+    char *_DPST_EVENT_STATUS = val & DPST_EVENT_STATUS ? " DPST_EVENT_STATUS" 
: "";
+    char *_LBLC_EVENT_STATUS = val & LBLC_EVENT_STATUS ? " LBLC_EVENT_STATUS" 
: "";
+    char *_OFIELD_INT_STATUS = val & OFIELD_INT_STATUS ? " OFIELD_INT_STATUS" 
: "";
+    char *_EFIELD_INT_STATUS = val & EFIELD_INT_STATUS ? " EFIELD_INT_STATUS" 
: "";
+    char *_SVBLANK_INT_STATUS = val & SVBLANK_INT_STATUS ? " 
SVBLANK_INT_STATUS" : "";
+    char *_VBLANK_INT_STATUS = val & VBLANK_INT_STATUS ? " VBLANK_INT_STATUS" 
: "";
+    char *_OREG_UPDATE_STATUS = val & OREG_UPDATE_STATUS ? " 
OREG_UPDATE_STATUS" : "";
+    return 
XNFprintf("status:%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
+                    _FIFO_UNDERRUN,
+                    _CRC_ERROR_ENABLE,
+                    _CRC_DONE_ENABLE,
+                    _GMBUS_EVENT_ENABLE,
+                    _VSYNC_INT_ENABLE,
+                    _DLINE_COMPARE_ENABLE,
+                    _DPST_EVENT_ENABLE,
+                    _LBLC_EVENT_ENABLE,
+                    _OFIELD_INT_ENABLE,
+                    _EFIELD_INT_ENABLE,
+                    _SVBLANK_INT_ENABLE,
+                    _VBLANK_INT_ENABLE,
+                    _OREG_UPDATE_ENABLE,
+                    _CRC_ERROR_INT_STATUS,
+                    _CRC_DONE_INT_STATUS,
+                    _GMBUS_INT_STATUS,
+                    _VSYNC_INT_STATUS,
+                    _DLINE_COMPARE_STATUS,
+                    _DPST_EVENT_STATUS,
+                    _LBLC_EVENT_STATUS,
+                    _OFIELD_INT_STATUS,
+                    _EFIELD_INT_STATUS,
+                    _SVBLANK_INT_STATUS,
+                    _VBLANK_INT_STATUS,
+                    _OREG_UPDATE_STATUS);
+}
+
 DEBUGSTRING(i830_debug_hvtotal)
 {
     return XNFprintf("%d active, %d total", (val & 0xffff) + 1,
@@ -340,6 +395,76 @@ DEBUGSTRING(i830_debug_sdvo)
                     enable, pipe, stall, detected, sdvoextra, gang);
 }
 
+DEBUGSTRING(i830_debug_dspclk_gate_d)
+{
+    char *DPUNIT_B = val & DPUNIT_B_CLOCK_GATE_DISABLE ? " DPUNIT_B" : "";
+    char *VSUNIT = val & VSUNIT_CLOCK_GATE_DISABLE ? " VSUNIT" : "";
+    char *VRHUNIT = val & VRHUNIT_CLOCK_GATE_DISABLE ? " VRHUNIT" : "";
+    char *VRDUNIT = val & VRDUNIT_CLOCK_GATE_DISABLE ? " VRDUNIT" : "";
+    char *AUDUNIT = val & AUDUNIT_CLOCK_GATE_DISABLE ? " AUDUNIT" : "";
+    char *DPUNIT_A = val & DPUNIT_A_CLOCK_GATE_DISABLE ? " DPUNIT_A" : "";
+    char *DPCUNIT = val & DPCUNIT_CLOCK_GATE_DISABLE ? " DPCUNIT" : "";
+    char *TVRUNIT = val & TVRUNIT_CLOCK_GATE_DISABLE ? " TVRUNIT" : "";
+    char *TVCUNIT = val & TVCUNIT_CLOCK_GATE_DISABLE ? " TVCUNIT" : "";
+    char *TVFUNIT = val & TVFUNIT_CLOCK_GATE_DISABLE ? " TVFUNIT" : "";
+    char *TVEUNIT = val & TVEUNIT_CLOCK_GATE_DISABLE ? " TVEUNIT" : "";
+    char *DVSUNIT = val & DVSUNIT_CLOCK_GATE_DISABLE ? " DVSUNIT" : "";
+    char *DSSUNIT = val & DSSUNIT_CLOCK_GATE_DISABLE ? " DSSUNIT" : "";
+    char *DDBUNIT = val & DDBUNIT_CLOCK_GATE_DISABLE ? " DDBUNIT" : "";
+    char *DPRUNIT = val & DPRUNIT_CLOCK_GATE_DISABLE ? " DPRUNIT" : "";
+    char *DPFUNIT = val & DPFUNIT_CLOCK_GATE_DISABLE ? " DPFUNIT" : "";
+    char *DPBMUNIT = val & DPBMUNIT_CLOCK_GATE_DISABLE ? " DPBMUNIT" : "";
+    char *DPLSUNIT = val & DPLSUNIT_CLOCK_GATE_DISABLE ? " DPLSUNIT" : "";
+    char *DPLUNIT = val & DPLUNIT_CLOCK_GATE_DISABLE ? " DPLUNIT" : "";
+    char *DPOUNIT = val & DPOUNIT_CLOCK_GATE_DISABLE ? " DPOUNIT" : "";
+    char *DPBUNIT = val & DPBUNIT_CLOCK_GATE_DISABLE ? " DPBUNIT" : "";
+    char *DCUNIT = val & DCUNIT_CLOCK_GATE_DISABLE ? " DCUNIT" : "";
+    char *DPUNIT = val & DPUNIT_CLOCK_GATE_DISABLE ? " DPUNIT" : "";
+    char *VRUNIT = val & VRUNIT_CLOCK_GATE_DISABLE ? " VRUNIT" : "";
+    char *OVHUNIT = val & OVHUNIT_CLOCK_GATE_DISABLE ? " OVHUNIT" : "";
+    char *DPIOUNIT = val & DPIOUNIT_CLOCK_GATE_DISABLE ? " DPIOUNIT" : "";
+    char *OVFUNIT = val & OVFUNIT_CLOCK_GATE_DISABLE ? " OVFUNIT" : "";
+    char *OVBUNIT = val & OVBUNIT_CLOCK_GATE_DISABLE ? " OVBUNIT" : "";
+    char *OVRUNIT = val & OVRUNIT_CLOCK_GATE_DISABLE ? " OVRUNIT" : "";
+    char *OVCUNIT = val & OVCUNIT_CLOCK_GATE_DISABLE ? " OVCUNIT" : "";
+    char *OVUUNIT = val & OVUUNIT_CLOCK_GATE_DISABLE ? " OVUUNIT" : "";
+    char *OVLUNIT = val & OVLUNIT_CLOCK_GATE_DISABLE ? " OVLUNIT" : "";
+
+    return XNFprintf ("clock gates 
disabled:%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
+                     DPUNIT_B,
+                     VSUNIT,
+                     VRHUNIT,
+                     VRDUNIT,
+                     AUDUNIT,
+                     DPUNIT_A,
+                     DPCUNIT,
+                     TVRUNIT,
+                     TVCUNIT,
+                     TVFUNIT,
+                     TVEUNIT,
+                     DVSUNIT,
+                     DSSUNIT,
+                     DDBUNIT,
+                     DPRUNIT,
+                     DPFUNIT,
+                     DPBMUNIT,
+                     DPLSUNIT,
+                     DPLUNIT,
+                     DPOUNIT,
+                     DPBUNIT,
+                     DCUNIT,
+                     DPUNIT,
+                     VRUNIT,
+                     OVHUNIT,
+                     DPIOUNIT,
+                     OVFUNIT,
+                     OVBUNIT,
+                     OVRUNIT,
+                     OVCUNIT,
+                     OVUUNIT,
+                     OVLUNIT);
+}
+
 #if 0
 DEBUGSTRING(i810_debug_fence_new)
 {
@@ -369,7 +494,7 @@ static struct i830SnapshotRec {
     DEFINEREG2(VCLK_POST_DIV, i830_debug_vga_pd),
     DEFINEREG2(DPLL_TEST, i830_debug_dpll_test),
     DEFINEREG(D_STATE),
-    DEFINEREG(DSPCLK_GATE_D),
+    DEFINEREG2(DSPCLK_GATE_D, i830_debug_dspclk_gate_d),
     DEFINEREG(RENCLK_GATE_D1),
     DEFINEREG(RENCLK_GATE_D2),
 /*  DEFINEREG(RAMCLK_GATE_D),  CRL only */
@@ -408,6 +533,7 @@ static struct i830SnapshotRec {
     DEFINEREG(DSPATILEOFF),
     DEFINEREG2(PIPEACONF, i830_debug_pipeconf),
     DEFINEREG2(PIPEASRC, i830_debug_yxminus1),
+    DEFINEREG2(PIPEASTAT, i830_debug_pipestat),
 
     DEFINEREG(FBC_CFB_BASE),
     DEFINEREG(FBC_LL_BASE),
@@ -440,6 +566,7 @@ static struct i830SnapshotRec {
     DEFINEREG(DSPBTILEOFF),
     DEFINEREG2(PIPEBCONF, i830_debug_pipeconf),
     DEFINEREG2(PIPEBSRC, i830_debug_yxminus1),
+    DEFINEREG2(PIPEBSTAT, i830_debug_pipestat),
 
     DEFINEREG2(FPB0, i830_debug_fp),
     DEFINEREG2(FPB1, i830_debug_fp),
@@ -494,6 +621,11 @@ static struct i830SnapshotRec {
     DEFINEREG(TV_H_CHROMA_0),
     DEFINEREG(TV_H_CHROMA_59),
 
+    DEFINEREG(MI_MODE),
+    DEFINEREG(MI_DISPLAY_POWER_DOWN),
+    DEFINEREG(MI_ARB_STATE),
+    DEFINEREG(MI_RDRET_STATE),
+    DEFINEREG(ECOSKPD),
 #if 0
     DEFINEREG2(FENCE_NEW + 0, i810_debug_fence_new),
     DEFINEREG2(FENCE_NEW + 8, i810_debug_fence_new),

commit b85c0992938e85e2228e69a3d9bfdd14958c0f4f
Author: Jesse Barnes <[EMAIL PROTECTED]>
Date:   Fri Feb 22 11:41:25 2008 -0800

    Add quirk for DVO channel selection
    
    Some machines want DVOA, some DVOB.  We can use this quirk to differentiate
    them until we come up with a better solution.  Patch from Hong Liu.
    
    Fixes #13722.

diff --git a/src/i830.h b/src/i830.h
index 05b0358..132f089 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -840,6 +840,7 @@ extern const int I830CopyROP[16];
 #define QUIRK_IGNORE_LVDS              0x00000002
 #define QUIRK_IGNORE_MACMINI_LVDS      0x00000004
 #define QUIRK_PIPEA_FORCE              0x00000008
+#define QUIRK_IVCH_NEED_DVOB           0x00000010
 extern void i830_fixup_devices(ScrnInfoPtr);
 
 #endif /* _I830_H_ */
diff --git a/src/i830_dvo.c b/src/i830_dvo.c
index e7342b0..81d5601 100644
--- a/src/i830_dvo.c
+++ b/src/i830_dvo.c
@@ -83,7 +83,7 @@ struct _I830DVODriver i830_dvo_drivers[] =
        .type = I830_OUTPUT_DVO_LVDS,
        .modulename = "ivch",
        .fntablename = "ivch_methods",
-       .dvo_reg = DVOB,
+       .dvo_reg = DVOA,
        .address = 0x04, /* Might also be 0x44, 0x84, 0xc4 */
        .symbols = ivch_symbols
     },
@@ -398,6 +398,7 @@ i830_dvo_get_current_mode (xf86OutputPtr output)
 void
 i830_dvo_init(ScrnInfoPtr pScrn)
 {
+    I830Ptr pI830 = I830PTR(pScrn);
     I830OutputPrivatePtr intel_output;
     int ret;
     int i;
@@ -431,6 +432,11 @@ i830_dvo_init(ScrnInfoPtr pScrn)
        ret_ptr = NULL;
        drv->vid_rec = LoaderSymbol(drv->fntablename);
 
+       if (!strcmp(drv->modulename, "ivch") &&
+           pI830->quirk_flag & QUIRK_IVCH_NEED_DVOB) {
+           drv->dvo_reg = DVOB;
+       }
+
        /* Allow the I2C driver info to specify the GPIO to be used in
         * special cases, but otherwise default to what's defined in the spec.
         */
diff --git a/src/i830_quirks.c b/src/i830_quirks.c
index 875bf67..e957845 100644
--- a/src/i830_quirks.c
+++ b/src/i830_quirks.c
@@ -198,6 +198,11 @@ static void quirk_lenovo_tv_dmi (I830Ptr pI830)
        pI830->quirk_flag |= QUIRK_IGNORE_TV;
 }
 
+static void quirk_ivch_dvob (I830Ptr pI830)
+{
+       pI830->quirk_flag |= QUIRK_IVCH_NEED_DVOB;
+}
+
 /* keep this list sorted by OEM, then by chip ID */
 static i830_quirk i830_quirk_list[] = {
     /* Aopen mini pc */
@@ -230,6 +235,8 @@ static i830_quirk i830_quirk_list[] = {
 
     /* Toshiba Satellite U300 has no TV output */
     { PCI_CHIP_I965_GM, 0x1179, 0xff50, quirk_ignore_tv },
+    /* Toshiba i830M laptop (fix bug 11148) */
+    { PCI_CHIP_I830_M, 0x1179, 0xff00, quirk_ivch_dvob },
 
     /* Samsung Q35 has no TV output */
     { PCI_CHIP_I945_GM, 0x144d, 0xc504, quirk_ignore_tv },
@@ -242,6 +249,9 @@ static i830_quirk i830_quirk_list[] = {
     /* ThinkPad X40 needs pipe A force quirk */
     { PCI_CHIP_I855_GM, 0x1014, 0x0557, quirk_pipea_force },
 
+    /* Sony vaio PCG-r600HFP (fix bug 13722) */
+    { PCI_CHIP_I830_M, 0x104d, 0x8100, quirk_ivch_dvob },
+
     { 0, 0, 0, NULL },
 };
 

commit 5073b4026c536f6e5f0c8c5a741a1852b4480f31
Author: Zhenyu Wang <[EMAIL PROTECTED]>
Date:   Tue Feb 19 21:13:45 2008 +0800

    Don't leak memory if no DMI info is provided by kernel

diff --git a/src/i830_quirks.c b/src/i830_quirks.c
index 32ec9ae..875bf67 100644
--- a/src/i830_quirks.c
+++ b/src/i830_quirks.c
@@ -71,7 +71,10 @@ static void i830_dmi_store_##field(void) \
 {\
     FILE *f = NULL;\
     f = fopen(DMIID_FILE(field), "r");\
-    if (f == NULL) { i830_dmi_data[field] = NULL; return;}\
+    if (f == NULL) {\
+       xfree(i830_dmi_data[field]); i830_dmi_data[field] = NULL;\
+       return;\
+    }\
     fread(i830_dmi_data[field], 64, 1, f);\
     fclose(f);\
 }
@@ -95,7 +98,7 @@ I830_DMI_FIELD_FUNC(chassis_version);
 I830_DMI_FIELD_FUNC(chassis_serial);
 I830_DMI_FIELD_FUNC(chassis_asset_tag);
 
-static int i830_dmi_scan(void)
+static void i830_dmi_scan(void)
 {
     int i;
 
@@ -103,9 +106,11 @@ static int i830_dmi_scan(void)
        i830_dmi_data[i] = xcalloc(64, sizeof(char));
        if (!i830_dmi_data[i]) {
            int j;
-           for (j = 0; j < i; j++)
+           for (j = 0; j < i; j++) {
                xfree(i830_dmi_data[j]);
-           return -1;
+               i830_dmi_data[i] = NULL;
+           }
+           return;
        }
     }
 
@@ -127,8 +132,6 @@ static int i830_dmi_scan(void)
     i830_dmi_store_chassis_version();
     i830_dmi_store_chassis_serial();
     i830_dmi_store_chassis_asset_tag();
-
-    return 0;
 }
 
 #define DMIID_DUMP(field) \
@@ -246,9 +249,9 @@ void i830_fixup_devices(ScrnInfoPtr scrn)
 {
     I830Ptr pI830 = I830PTR(scrn);
     i830_quirk_ptr p = i830_quirk_list;
-    int i, ret;
+    int i;
 
-    ret = i830_dmi_scan();
+    i830_dmi_scan();
 
     if (0)
        i830_dmi_dump();
@@ -262,8 +265,7 @@ void i830_fixup_devices(ScrnInfoPtr scrn)
        ++p;
     }
 
-    if (!ret) {
-       for (i = 0; i < dmi_data_max; i++)
+    for (i = 0; i < dmi_data_max; i++)
+       if (i830_dmi_data[i])
            xfree(i830_dmi_data[i]);
-    }
 }

commit 3709962b91402027f2a73f732d1eb935f7d714b9
Author: Zhenyu Wang <[EMAIL PROTECTED]>
Date:   Mon Feb 18 14:35:06 2008 +0800

    Fix Lenovo X60 TV quirk
    
    Z61 has same subsys ids with X60, but does have one S-video
    TV out. Use DMI info instead to quirk TV on X60, X60s.

diff --git a/src/i830_quirks.c b/src/i830_quirks.c
index de213c8..32ec9ae 100644
--- a/src/i830_quirks.c
+++ b/src/i830_quirks.c
@@ -178,6 +178,23 @@ static void quirk_mac_mini (I830Ptr pI830)
     pI830->quirk_flag |= QUIRK_IGNORE_MACMINI_LVDS;
 }
 
+static void quirk_lenovo_tv_dmi (I830Ptr pI830)
+{
+    /* X60, X60s has no TV output.
+     * Z61 has S-video TV output.
+     * And they have same subsys ids...
+     *
+     * http://www-307.ibm.com/pc/support/site.wss/MIGR-45120.html
+     * http://www.thinkwiki.org/wiki/List_of_DMI_IDs
+     */
+    if (!i830_dmi_data[bios_version]) {
+       ErrorF("Failed to load DMI info, X60 TV quirk not applied.\n");
+       return;
+    }
+    if (!strncmp(i830_dmi_data[bios_version], "7B", 2))
+       pI830->quirk_flag |= QUIRK_IGNORE_TV;
+}
+
 /* keep this list sorted by OEM, then by chip ID */
 static i830_quirk i830_quirk_list[] = {
     /* Aopen mini pc */
@@ -196,8 +213,8 @@ static i830_quirk i830_quirk_list[] = {
     /* Dell XPS 1330 */
     { PCI_CHIP_I965_GM, 0x1028, 0x0209, quirk_ignore_tv },
 
-    /* Lenovo X60s has no TV output */
-    { PCI_CHIP_I945_GM, 0x17aa, 0x201a, quirk_ignore_tv },
+    /* Lenovo Napa TV (use dmi)*/
+    { PCI_CHIP_I945_GM, 0x17aa, SUBSYS_ANY, quirk_lenovo_tv_dmi },
     /* Lenovo T61 has no TV output */
     { PCI_CHIP_I965_GM, 0x17aa, 0x20b5, quirk_ignore_tv },
     /* Lenovo 3000 v200 */

commit 866ae8873613a51ca09973f77aa1ea62477b54a1
Author: Zhenyu Wang <[EMAIL PROTECTED]>
Date:   Mon Feb 18 14:32:32 2008 +0800

    Add DMI info for i830 quirks
    
    Linux kernel has CONFIG_DMIID to export dmi info
    through sysfs.

diff --git a/src/i830_quirks.c b/src/i830_quirks.c
index 5e63831..de213c8 100644
--- a/src/i830_quirks.c
+++ b/src/i830_quirks.c
@@ -32,6 +32,9 @@
 
 #define SUBSYS_ANY (~0)
 
+#define DMIID_DIR "/sys/class/dmi/id/"
+#define DMIID_FILE(x) (DMIID_DIR # x)
+
 typedef struct {
     int chipType;
     int subsysVendor;
@@ -39,6 +42,122 @@ typedef struct {
     void (*hook)(I830Ptr);
 } i830_quirk, *i830_quirk_ptr;
 
+enum i830_dmi_data_t {


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to