diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 98560e1..0d0ff31 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -27,6 +27,7 @@ * */ +#include #include #include "drmP.h" #include "drm.h" @@ -222,6 +223,13 @@ static struct drm_driver driver = { .patchlevel = DRIVER_PATCHLEVEL, }; +/* we're going to make kms fuck off on these... */ +static struct pci_device_id i915_kms_disabled[] = { + { PCI_DEVICE(0x8086, 0x2562) }, /* IS_I845G */ + { PCI_DEVICE(0x8086, 0x3582) }, /* IS_I855 */ + { 0, } +}; + static int __init i915_init(void) { driver.num_ioctls = i915_max_ioctl; @@ -237,7 +247,8 @@ static int __init i915_init(void) */ #if defined(CONFIG_DRM_I915_KMS) if (i915_modeset != 0) - driver.driver_features |= DRIVER_MODESET; + if (!pci_dev_present(i915_kms_disabled)) + driver.driver_features |= DRIVER_MODESET; #endif if (i915_modeset == 1) driver.driver_features |= DRIVER_MODESET;