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.
This commit is contained in:
parent
6b9f421b79
commit
fcd280b730
|
|
@ -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_ */
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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 },
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue