[Intel-gfx] [PATCH 1/2] drm/i915: split PCI IDs out into i915_drm.h v3
For use by userspace (at some point in the future) and other kernel code. v2: move PCI IDs to uabi (Chris) move PCI IDs to drm/ (Dave) v3: fixup Quanta detection - needs to come first (Daniel) Signed-off-by: Jesse Barnes jbar...@virtuousgeek.org --- drivers/gpu/drm/i915/i915_drv.c | 164 +++--- include/drm/i915_drm.h |2 + include/drm/i915_pciids.h | 208 +++ 3 files changed, 244 insertions(+), 130 deletions(-) create mode 100644 include/drm/i915_pciids.h diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index b07362f..e87bccf 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -140,25 +140,6 @@ MODULE_PARM_DESC(fastboot, Try to skip unnecessary mode sets at boot time static struct drm_driver driver; extern int intel_agp_enabled; -#define INTEL_VGA_DEVICE(id, info) { \ - .class = PCI_BASE_CLASS_DISPLAY 16, \ - .class_mask = 0xff, \ - .vendor = 0x8086, \ - .device = id, \ - .subvendor = PCI_ANY_ID,\ - .subdevice = PCI_ANY_ID,\ - .driver_data = (unsigned long) info } - -#define INTEL_QUANTA_VGA_DEVICE(info) {\ - .class = PCI_BASE_CLASS_DISPLAY 16, \ - .class_mask = 0xff, \ - .vendor = 0x8086, \ - .device = 0x16a,\ - .subvendor = 0x152d,\ - .subdevice = 0x8990,\ - .driver_data = (unsigned long) info } - - static const struct intel_device_info intel_i830_info = { .gen = 2, .is_mobile = 1, .cursor_needs_physical = 1, .num_pipes = 2, .has_overlay = 1, .overlay_needs_physical = 1, @@ -333,118 +314,41 @@ static const struct intel_device_info intel_haswell_m_info = { .has_vebox_ring = 1, }; +/* + * Make sure any device matches here are from most specific to most + * general. For example, since the Quanta match is based on the subsystem + * and subvendor IDs, we need it to come before the more general IVB + * PCI ID matches, otherwise we'll use the wrong info struct above. + */ +#define INTEL_PCI_IDS \ + INTEL_I830_IDS(intel_i830_info), \ + INTEL_I845G_IDS(intel_845g_info), \ + INTEL_I85X_IDS(intel_i85x_info), \ + INTEL_I865G_IDS(intel_i865g_info), \ + INTEL_I915G_IDS(intel_i915g_info), \ + INTEL_I915GM_IDS(intel_i915gm_info), \ + INTEL_I945G_IDS(intel_i945g_info), \ + INTEL_I945GM_IDS(intel_i945gm_info), \ + INTEL_I965G_IDS(intel_i965g_info), \ + INTEL_G33_IDS(intel_g33_info), \ + INTEL_I965GM_IDS(intel_i965gm_info), \ + INTEL_GM45_IDS(intel_gm45_info), \ + INTEL_G45_IDS(intel_g45_info), \ + INTEL_PINEVIEW_IDS(intel_pineview_info), \ + INTEL_IRONLAKE_D_IDS(intel_ironlake_d_info), \ + INTEL_IRONLAKE_M_IDS(intel_ironlake_m_info), \ + INTEL_SNB_D_IDS(intel_sandybridge_d_info), \ + INTEL_SNB_M_IDS(intel_sandybridge_m_info), \ + INTEL_IVB_Q_IDS(intel_ivybridge_q_info), /* must be first IVB */ \ + INTEL_IVB_M_IDS(intel_ivybridge_m_info), \ + INTEL_IVB_D_IDS(intel_ivybridge_d_info), \ + INTEL_HSW_D_IDS(intel_haswell_d_info), \ + INTEL_HSW_M_IDS(intel_haswell_m_info), \ + INTEL_VLV_M_IDS(intel_valleyview_m_info), \ + INTEL_VLV_D_IDS(intel_valleyview_d_info) + static const struct pci_device_id pciidlist[] = { /* aka */ - INTEL_VGA_DEVICE(0x3577, intel_i830_info), /* I830_M */ - INTEL_VGA_DEVICE(0x2562, intel_845g_info), /* 845_G */ - INTEL_VGA_DEVICE(0x3582, intel_i85x_info), /* I855_GM */ - INTEL_VGA_DEVICE(0x358e, intel_i85x_info), - INTEL_VGA_DEVICE(0x2572, intel_i865g_info),/* I865_G */ - INTEL_VGA_DEVICE(0x2582, intel_i915g_info),/* I915_G */ - INTEL_VGA_DEVICE(0x258a, intel_i915g_info),/* E7221_G */ - INTEL_VGA_DEVICE(0x2592, intel_i915gm_info), /* I915_GM */ - INTEL_VGA_DEVICE(0x2772, intel_i945g_info),/* I945_G */ - INTEL_VGA_DEVICE(0x27a2, intel_i945gm_info), /* I945_GM */ - INTEL_VGA_DEVICE(0x27ae, intel_i945gm_info), /* I945_GME */ - INTEL_VGA_DEVICE(0x2972, intel_i965g_info),/* I946_GZ */ - INTEL_VGA_DEVICE(0x2982, intel_i965g_info),/* G35_G */ - INTEL_VGA_DEVICE(0x2992, intel_i965g_info),/* I965_Q */ - INTEL_VGA_DEVICE(0x29a2, intel_i965g_info),/* I965_G */ - INTEL_VGA_DEVICE(0x29b2, intel_g33_info), /* Q35_G */ - INTEL_VGA_DEVICE(0x29c2, intel_g33_info), /* G33_G */ -
Re: [Intel-gfx] [PATCH 1/2] drm/i915: split PCI IDs out into i915_drm.h v3
On 07/24/2013 05:04 PM, Jesse Barnes wrote: For use by userspace (at some point in the future) and other kernel code. v2: move PCI IDs to uabi (Chris) move PCI IDs to drm/ (Dave) v3: fixup Quanta detection - needs to come first (Daniel) Signed-off-by: Jesse Barnes jbar...@virtuousgeek.org --- drivers/gpu/drm/i915/i915_drv.c | 164 +++--- include/drm/i915_drm.h |2 + include/drm/i915_pciids.h | 208 +++ 3 files changed, 244 insertions(+), 130 deletions(-) create mode 100644 include/drm/i915_pciids.h +#define INTEL_VGA_DEVICE(id, info) { \ + .class = PCI_BASE_CLASS_DISPLAY 16,\ + .class_mask = 0xff, \ + .vendor = 0x8086, \ + .device = id, \ + .subvendor = PCI_ANY_ID,\ + .subdevice = PCI_ANY_ID,\ + .driver_data = (unsigned long) info } I retract my objections from yesterday. I expected the header to define a static table (like static const struct xxx i915_pci_ids[] = ...), which I didn't like due its inflexibility. But, this macro I do like. It's flexible enough. Acked-by: Chad Versace chad.vers...@linux.intel.com ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 1/2] drm/i915: split PCI IDs out into i915_drm.h v3
On Thu, Jul 25, 2013 at 09:37:48AM -0700, Jesse Barnes wrote: For use by userspace (at some point in the future) and other kernel code. v2: move PCI IDs to uabi (Chris) move PCI IDs to drm/ (Dave) v3: fixup Quanta detection - needs to come first (Daniel) One last comment! +#define INTEL_VGA_DEVICE(id, info) { \ + .class = PCI_BASE_CLASS_DISPLAY 16, \ + .class_mask = 0xff, \ + .vendor = 0x8086, \ + .device = id, \ + .subvendor = PCI_ANY_ID,\ + .subdevice = PCI_ANY_ID,\ + .driver_data = (unsigned long) info } libpciaccess doesn't define either PCI_BASE_CLASS_DISPLAY or PCI_ANY_ID. Since we use the hex values for the rest of the elements, it would seem to be tidier to also use 0x3 16 instead of PCI_BASE_CLASS_DISPLAY 16. I would leave PCI_ANY_ID as a symbolic value though. -Chris -- Chris Wilson, Intel Open Source Technology Centre ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 1/2] drm/i915: split PCI IDs out into i915_drm.h v3
For use by userspace (at some point in the future) and other kernel code. v2: move PCI IDs to uabi (Chris) move PCI IDs to drm/ (Dave) v3: fixup Quanta detection - needs to come first (Daniel) Signed-off-by: Jesse Barnes jbar...@virtuousgeek.org --- drivers/gpu/drm/i915/i915_drv.c | 164 +++--- include/drm/i915_drm.h |2 + include/drm/i915_pciids.h | 208 +++ 3 files changed, 244 insertions(+), 130 deletions(-) create mode 100644 include/drm/i915_pciids.h diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index b07362f..e87bccf 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -140,25 +140,6 @@ MODULE_PARM_DESC(fastboot, Try to skip unnecessary mode sets at boot time static struct drm_driver driver; extern int intel_agp_enabled; -#define INTEL_VGA_DEVICE(id, info) { \ - .class = PCI_BASE_CLASS_DISPLAY 16, \ - .class_mask = 0xff, \ - .vendor = 0x8086, \ - .device = id, \ - .subvendor = PCI_ANY_ID,\ - .subdevice = PCI_ANY_ID,\ - .driver_data = (unsigned long) info } - -#define INTEL_QUANTA_VGA_DEVICE(info) {\ - .class = PCI_BASE_CLASS_DISPLAY 16, \ - .class_mask = 0xff, \ - .vendor = 0x8086, \ - .device = 0x16a,\ - .subvendor = 0x152d,\ - .subdevice = 0x8990,\ - .driver_data = (unsigned long) info } - - static const struct intel_device_info intel_i830_info = { .gen = 2, .is_mobile = 1, .cursor_needs_physical = 1, .num_pipes = 2, .has_overlay = 1, .overlay_needs_physical = 1, @@ -333,118 +314,41 @@ static const struct intel_device_info intel_haswell_m_info = { .has_vebox_ring = 1, }; +/* + * Make sure any device matches here are from most specific to most + * general. For example, since the Quanta match is based on the subsystem + * and subvendor IDs, we need it to come before the more general IVB + * PCI ID matches, otherwise we'll use the wrong info struct above. + */ +#define INTEL_PCI_IDS \ + INTEL_I830_IDS(intel_i830_info), \ + INTEL_I845G_IDS(intel_845g_info), \ + INTEL_I85X_IDS(intel_i85x_info), \ + INTEL_I865G_IDS(intel_i865g_info), \ + INTEL_I915G_IDS(intel_i915g_info), \ + INTEL_I915GM_IDS(intel_i915gm_info), \ + INTEL_I945G_IDS(intel_i945g_info), \ + INTEL_I945GM_IDS(intel_i945gm_info), \ + INTEL_I965G_IDS(intel_i965g_info), \ + INTEL_G33_IDS(intel_g33_info), \ + INTEL_I965GM_IDS(intel_i965gm_info), \ + INTEL_GM45_IDS(intel_gm45_info), \ + INTEL_G45_IDS(intel_g45_info), \ + INTEL_PINEVIEW_IDS(intel_pineview_info), \ + INTEL_IRONLAKE_D_IDS(intel_ironlake_d_info), \ + INTEL_IRONLAKE_M_IDS(intel_ironlake_m_info), \ + INTEL_SNB_D_IDS(intel_sandybridge_d_info), \ + INTEL_SNB_M_IDS(intel_sandybridge_m_info), \ + INTEL_IVB_Q_IDS(intel_ivybridge_q_info), /* must be first IVB */ \ + INTEL_IVB_M_IDS(intel_ivybridge_m_info), \ + INTEL_IVB_D_IDS(intel_ivybridge_d_info), \ + INTEL_HSW_D_IDS(intel_haswell_d_info), \ + INTEL_HSW_M_IDS(intel_haswell_m_info), \ + INTEL_VLV_M_IDS(intel_valleyview_m_info), \ + INTEL_VLV_D_IDS(intel_valleyview_d_info) + static const struct pci_device_id pciidlist[] = { /* aka */ - INTEL_VGA_DEVICE(0x3577, intel_i830_info), /* I830_M */ - INTEL_VGA_DEVICE(0x2562, intel_845g_info), /* 845_G */ - INTEL_VGA_DEVICE(0x3582, intel_i85x_info), /* I855_GM */ - INTEL_VGA_DEVICE(0x358e, intel_i85x_info), - INTEL_VGA_DEVICE(0x2572, intel_i865g_info),/* I865_G */ - INTEL_VGA_DEVICE(0x2582, intel_i915g_info),/* I915_G */ - INTEL_VGA_DEVICE(0x258a, intel_i915g_info),/* E7221_G */ - INTEL_VGA_DEVICE(0x2592, intel_i915gm_info), /* I915_GM */ - INTEL_VGA_DEVICE(0x2772, intel_i945g_info),/* I945_G */ - INTEL_VGA_DEVICE(0x27a2, intel_i945gm_info), /* I945_GM */ - INTEL_VGA_DEVICE(0x27ae, intel_i945gm_info), /* I945_GME */ - INTEL_VGA_DEVICE(0x2972, intel_i965g_info),/* I946_GZ */ - INTEL_VGA_DEVICE(0x2982, intel_i965g_info),/* G35_G */ - INTEL_VGA_DEVICE(0x2992, intel_i965g_info),/* I965_Q */ - INTEL_VGA_DEVICE(0x29a2, intel_i965g_info),/* I965_G */ - INTEL_VGA_DEVICE(0x29b2, intel_g33_info), /* Q35_G */ - INTEL_VGA_DEVICE(0x29c2, intel_g33_info), /* G33_G */ -