diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.c')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 144 | 
1 files changed, 110 insertions, 34 deletions
| diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index b6ec949361e2..1b256de24563 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -47,46 +47,122 @@ module_param_named(powersave, i915_powersave, int, 0400);  static struct drm_driver driver; -#define INTEL_VGA_DEVICE(id) {			\ +#define INTEL_VGA_DEVICE(id, info) {		\  	.class = PCI_CLASS_DISPLAY_VGA << 8,	\  	.class_mask = 0xffff00,			\  	.vendor = 0x8086,			\  	.device = id,				\  	.subvendor = PCI_ANY_ID,		\  	.subdevice = PCI_ANY_ID,		\ -	.driver_data = 0 } - -static struct pci_device_id pciidlist[] = { -	INTEL_VGA_DEVICE(0x3577), -	INTEL_VGA_DEVICE(0x2562), -	INTEL_VGA_DEVICE(0x3582), -	INTEL_VGA_DEVICE(0x2572), -	INTEL_VGA_DEVICE(0x2582), -	INTEL_VGA_DEVICE(0x258a), -	INTEL_VGA_DEVICE(0x2592), -	INTEL_VGA_DEVICE(0x2772), -	INTEL_VGA_DEVICE(0x27a2), -	INTEL_VGA_DEVICE(0x27ae), -	INTEL_VGA_DEVICE(0x2972), -	INTEL_VGA_DEVICE(0x2982), -	INTEL_VGA_DEVICE(0x2992), -	INTEL_VGA_DEVICE(0x29a2), -	INTEL_VGA_DEVICE(0x29b2), -	INTEL_VGA_DEVICE(0x29c2), -	INTEL_VGA_DEVICE(0x29d2), -	INTEL_VGA_DEVICE(0x2a02), -	INTEL_VGA_DEVICE(0x2a12), -	INTEL_VGA_DEVICE(0x2a42), -	INTEL_VGA_DEVICE(0x2e02), -	INTEL_VGA_DEVICE(0x2e12), -	INTEL_VGA_DEVICE(0x2e22), -	INTEL_VGA_DEVICE(0x2e32), -	INTEL_VGA_DEVICE(0x2e42), -	INTEL_VGA_DEVICE(0xa001), -	INTEL_VGA_DEVICE(0xa011), -	INTEL_VGA_DEVICE(0x35e8), -	INTEL_VGA_DEVICE(0x0042), -	INTEL_VGA_DEVICE(0x0046), +	.driver_data = (unsigned long) info } + +const static struct intel_device_info intel_i830_info = { +	.is_i8xx = 1, .is_mobile = 1, +}; + +const static struct intel_device_info intel_845g_info = { +	.is_i8xx = 1, +}; + +const static struct intel_device_info intel_i85x_info = { +	.is_i8xx = 1, .is_mobile = 1, +}; + +const static struct intel_device_info intel_i865g_info = { +	.is_i8xx = 1, +}; + +const static struct intel_device_info intel_i915g_info = { +	.is_i915g = 1, .is_i9xx = 1, +}; +const static struct intel_device_info intel_i915gm_info = { +	.is_i9xx = 1,  .is_mobile = 1, .has_fbc = 1, +}; +const static struct intel_device_info intel_i945g_info = { +	.is_i9xx = 1, .has_hotplug = 1, +}; +const static struct intel_device_info intel_i945gm_info = { +	.is_i945gm = 1, .is_i9xx = 1, .is_mobile = 1, .has_fbc = 1, +	.has_hotplug = 1, +}; + +const static struct intel_device_info intel_i965g_info = { +	.is_i965g = 1, .is_i9xx = 1, .has_hotplug = 1, +}; + +const static struct intel_device_info intel_i965gm_info = { +	.is_i965g = 1, .is_mobile = 1, .is_i965gm = 1, .is_i9xx = 1, +	.is_mobile = 1, .has_fbc = 1, .has_rc6 = 1, +	.has_hotplug = 1, +}; + +const static struct intel_device_info intel_g33_info = { +	.is_g33 = 1, .is_i9xx = 1, .need_gfx_hws = 1, +	.has_hotplug = 1, +}; + +const static struct intel_device_info intel_g45_info = { +	.is_i965g = 1, .is_g4x = 1, .is_i9xx = 1, .need_gfx_hws = 1, +	.has_pipe_cxsr = 1, +	.has_hotplug = 1, +}; + +const static struct intel_device_info intel_gm45_info = { +	.is_i965g = 1, .is_mobile = 1, .is_g4x = 1, .is_i9xx = 1, +	.is_mobile = 1, .need_gfx_hws = 1, .has_fbc = 1, .has_rc6 = 1, +	.has_pipe_cxsr = 1, +	.has_hotplug = 1, +}; + +const static struct intel_device_info intel_pineview_info = { +	.is_g33 = 1, .is_pineview = 1, .is_mobile = 1, .is_i9xx = 1, +	.has_pipe_cxsr = 1, +	.has_hotplug = 1, +}; + +const static struct intel_device_info intel_ironlake_d_info = { +	.is_ironlake = 1, .is_i965g = 1, .is_i9xx = 1, .need_gfx_hws = 1, +	.has_pipe_cxsr = 1, +	.has_hotplug = 1, +}; + +const static struct intel_device_info intel_ironlake_m_info = { +	.is_ironlake = 1, .is_mobile = 1, .is_i965g = 1, .is_i9xx = 1, +	.need_gfx_hws = 1, .has_rc6 = 1, +	.has_hotplug = 1, +}; + +const static struct pci_device_id pciidlist[] = { +	INTEL_VGA_DEVICE(0x3577, &intel_i830_info), +	INTEL_VGA_DEVICE(0x2562, &intel_845g_info), +	INTEL_VGA_DEVICE(0x3582, &intel_i85x_info), +	INTEL_VGA_DEVICE(0x35e8, &intel_i85x_info), +	INTEL_VGA_DEVICE(0x2572, &intel_i865g_info), +	INTEL_VGA_DEVICE(0x2582, &intel_i915g_info), +	INTEL_VGA_DEVICE(0x258a, &intel_i915g_info), +	INTEL_VGA_DEVICE(0x2592, &intel_i915gm_info), +	INTEL_VGA_DEVICE(0x2772, &intel_i945g_info), +	INTEL_VGA_DEVICE(0x27a2, &intel_i945gm_info), +	INTEL_VGA_DEVICE(0x27ae, &intel_i945gm_info), +	INTEL_VGA_DEVICE(0x2972, &intel_i965g_info), +	INTEL_VGA_DEVICE(0x2982, &intel_i965g_info), +	INTEL_VGA_DEVICE(0x2992, &intel_i965g_info), +	INTEL_VGA_DEVICE(0x29a2, &intel_i965g_info), +	INTEL_VGA_DEVICE(0x29b2, &intel_g33_info), +	INTEL_VGA_DEVICE(0x29c2, &intel_g33_info), +	INTEL_VGA_DEVICE(0x29d2, &intel_g33_info), +	INTEL_VGA_DEVICE(0x2a02, &intel_i965gm_info), +	INTEL_VGA_DEVICE(0x2a12, &intel_i965gm_info), +	INTEL_VGA_DEVICE(0x2a42, &intel_gm45_info), +	INTEL_VGA_DEVICE(0x2e02, &intel_g45_info), +	INTEL_VGA_DEVICE(0x2e12, &intel_g45_info), +	INTEL_VGA_DEVICE(0x2e22, &intel_g45_info), +	INTEL_VGA_DEVICE(0x2e32, &intel_g45_info), +	INTEL_VGA_DEVICE(0x2e42, &intel_g45_info), +	INTEL_VGA_DEVICE(0xa001, &intel_pineview_info), +	INTEL_VGA_DEVICE(0xa011, &intel_pineview_info), +	INTEL_VGA_DEVICE(0x0042, &intel_ironlake_d_info), +	INTEL_VGA_DEVICE(0x0046, &intel_ironlake_m_info),  	{0, 0, 0}  }; |