xf86-video-intel: src/i830.h src/i830_lvds.c src/i830_quirks.c
Zhenyu Wang
zhen at kemper.freedesktop.org
Sun Dec 28 18:12:47 PST 2008
src/i830.h | 1 +
src/i830_lvds.c | 3 +++
src/i830_quirks.c | 10 ++++++++++
3 files changed, 14 insertions(+)
New commits:
commit fcd280b730f86ea54ecd89d3e037e71f8375b5f5
Author: Zhenyu Wang <zhenyu.z.wang at intel.com>
Date: Mon Dec 29 10:05:17 2008 +0800
Bug #19239: Add a quirk for broken ACPI lid state
For broken hardware/bios with incorrect ACPI LID state,
there's machine that can not be fixed in ACPI way, customed
DSDT that reprogram _LID method to read EC state. Although
this is ACPI issue, this quirk can be used to work around that.
diff --git a/src/i830.h b/src/i830.h
index 8ad5c69..5e50753 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -1035,6 +1035,7 @@ extern const int I830CopyROP[16];
#define QUIRK_RESET_MODES 0x00000020
#define QUIRK_PFIT_SAFE 0x00000040
#define QUIRK_IGNORE_CRT 0x00000080
+#define QUIRK_BROKEN_ACPI_LID 0x00000100
extern void i830_fixup_devices(ScrnInfoPtr);
#endif /* _I830_H_ */
diff --git a/src/i830_lvds.c b/src/i830_lvds.c
index c6002eb..df92dea 100644
--- a/src/i830_lvds.c
+++ b/src/i830_lvds.c
@@ -401,6 +401,9 @@ i830_lvds_acpi_lid_open(xf86OutputPtr output)
char state[64];
enum lid_status ret = LID_UNKNOWN;
+ if (pI830->quirk_flag & QUIRK_BROKEN_ACPI_LID)
+ goto out;
+
button_dir = opendir(ACPI_BUTTON);
/* If acpi button driver is not loaded, bypass ACPI check method */
if (button_dir == NULL)
diff --git a/src/i830_quirks.c b/src/i830_quirks.c
index 68e39ee..6704376 100644
--- a/src/i830_quirks.c
+++ b/src/i830_quirks.c
@@ -227,6 +227,13 @@ static void quirk_ivch_dvob (I830Ptr pI830)
pI830->quirk_flag |= QUIRK_IVCH_NEED_DVOB;
}
+/* For broken hw/bios for incorrect acpi _LID state that
+ can't be fixed with customed DSDT or other way */
+static void quirk_broken_acpi_lid (I830Ptr pI830)
+{
+ pI830->quirk_flag |= QUIRK_BROKEN_ACPI_LID;
+}
+
/* keep this list sorted by OEM, then by chip ID */
static i830_quirk i830_quirk_list[] = {
/* Aopen mini pc */
@@ -347,6 +354,9 @@ static i830_quirk i830_quirk_list[] = {
/* Asus Eee Box has no LVDS */
{ PCI_CHIP_I945_GME, 0x1043, 0x1252, quirk_ignore_lvds },
+ /* #19239: Mirrus Centrino laptop */
+ { PCI_CHIP_I915_GM, 0x1584, 0x9800, quirk_broken_acpi_lid },
+
{ 0, 0, 0, NULL },
};
More information about the xorg-commit
mailing list