diff mbox

[Karmic,SRU] UBUNTU: drm/i915: Support for another B43 device id

Message ID 1285662354-2669-1-git-send-email-ike.pan@canonical.com
State Rejected
Delegated to: Brad Figg
Headers show

Commit Message

Ike Panhc Sept. 28, 2010, 8:25 a.m. UTC
We find there is another device id set for B43 chipset. After adding the device
id 4E90/4E92 beside 4E40/4E42, the machine works fine with the same
modification in xserver-xorg-video-intel.

After reporting to freedesktop bugzilla[1], Chris Wilson said the patch is
queued for adding this id set and the patch is accepted in mainline kernel[2].

This patch is made against Karmic current checkout and only for adding new ids.

BugLink: http://launchpad.net/bugs/640214

[1] https://bugs.freedesktop.org/show_bug.cgi?id=30221
[2] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=41a51428916ab04587bacee2dda61c4a0c4fc02f

Signed-off-by: Ike Panhc <ike.pan@canonical.com>
---
 drivers/char/agp/intel-agp.c    |    8 ++++++++
 drivers/gpu/drm/i915/i915_drv.h |    2 ++
 include/drm/drm_pciids.h        |    1 +
 3 files changed, 11 insertions(+), 0 deletions(-)

Comments

Stefan Bader Sept. 28, 2010, 9:15 a.m. UTC | #1
On 09/28/2010 10:25 AM, Ike Panhc wrote:
> We find there is another device id set for B43 chipset. After adding the device
> id 4E90/4E92 beside 4E40/4E42, the machine works fine with the same
> modification in xserver-xorg-video-intel.
> 
While adding IDs sounds reasonable for SRU, I am a bit confused by the patch:

> After reporting to freedesktop bugzilla[1], Chris Wilson said the patch is
> queued for adding this id set and the patch is accepted in mainline kernel[2].
> 
> This patch is made against Karmic current checkout and only for adding new ids.
> 
> BugLink: http://launchpad.net/bugs/640214
> 
> [1] https://bugs.freedesktop.org/show_bug.cgi?id=30221
> [2] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=41a51428916ab04587bacee2dda61c4a0c4fc02f
> 
> Signed-off-by: Ike Panhc <ike.pan@canonical.com>
> ---
>  drivers/char/agp/intel-agp.c    |    8 ++++++++
>  drivers/gpu/drm/i915/i915_drv.h |    2 ++
>  include/drm/drm_pciids.h        |    1 +
>  3 files changed, 11 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
> index f150be9..2c09d4c 100644
> --- a/drivers/char/agp/intel-agp.c
> +++ b/drivers/char/agp/intel-agp.c
> @@ -38,6 +38,8 @@
>  #define PCI_DEVICE_ID_INTEL_Q33_IG          0x29D2
>  #define PCI_DEVICE_ID_INTEL_B43_HB          0x2E40
>  #define PCI_DEVICE_ID_INTEL_B43_IG          0x2E42
> +#define PCI_DEVICE_ID_INTEL_B43_1_HB        0x2E90
> +#define PCI_DEVICE_ID_INTEL_B43_1_IG        0x2E92
>  #define PCI_DEVICE_ID_INTEL_GM45_HB         0x2A40
>  #define PCI_DEVICE_ID_INTEL_GM45_IG         0x2A42
>  #define PCI_DEVICE_ID_INTEL_IGD_E_HB        0x2E00
> @@ -85,6 +87,8 @@
>  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_GM45_HB || \
>  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G41_HB || \
>  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_B43_HB || \
> +		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_B43_1_HB || \
> +		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_B43_1_HB || \

Why does that add the same line twice? I assume IG is the internal graphics part
and HB the host bridge? The rest seems to add the ids to the correct places (as
far as one can tell).

>  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_D_HB || \
>  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_M_HB || \
>  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_MA_HB || \
> @@ -1238,6 +1242,7 @@ static void intel_i965_get_gtt_range(int *gtt_offset, int *gtt_size)
>  	case PCI_DEVICE_ID_INTEL_G45_HB:
>  	case PCI_DEVICE_ID_INTEL_G41_HB:
>  	case PCI_DEVICE_ID_INTEL_B43_HB:
> +	case PCI_DEVICE_ID_INTEL_B43_1_HB:
>  	case PCI_DEVICE_ID_INTEL_IGDNG_D_HB:
>  	case PCI_DEVICE_ID_INTEL_IGDNG_M_HB:
>  	case PCI_DEVICE_ID_INTEL_IGDNG_MA_HB:
> @@ -2217,6 +2222,8 @@ static const struct intel_driver_description {
>  	    "G45/G43", NULL, &intel_i965_driver },
>  	{ PCI_DEVICE_ID_INTEL_B43_HB, PCI_DEVICE_ID_INTEL_B43_IG, 0,
>  	    "B43", NULL, &intel_i965_driver },
> +	{ PCI_DEVICE_ID_INTEL_B43_1_HB, PCI_DEVICE_ID_INTEL_B43_1_IG, 0,
> +	    "B43", NULL, &intel_i965_driver },
>  	{ PCI_DEVICE_ID_INTEL_G41_HB, PCI_DEVICE_ID_INTEL_G41_IG, 0,
>  	    "G41", NULL, &intel_i965_driver },
>  	{ PCI_DEVICE_ID_INTEL_IGDNG_D_HB, PCI_DEVICE_ID_INTEL_IGDNG_D_IG, 0,
> @@ -2420,6 +2427,7 @@ static struct pci_device_id agp_intel_pci_table[] = {
>  	ID(PCI_DEVICE_ID_INTEL_G45_HB),
>  	ID(PCI_DEVICE_ID_INTEL_G41_HB),
>  	ID(PCI_DEVICE_ID_INTEL_B43_HB),
> +	ID(PCI_DEVICE_ID_INTEL_B43_1_HB),
>  	ID(PCI_DEVICE_ID_INTEL_IGDNG_D_HB),
>  	ID(PCI_DEVICE_ID_INTEL_IGDNG_M_HB),
>  	ID(PCI_DEVICE_ID_INTEL_IGDNG_MA_HB),
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 9919f9f..a62afae 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -907,6 +907,7 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
>  		       (dev)->pci_device == 0x2E22 || \
>  		       (dev)->pci_device == 0x2E32 || \
>  		       (dev)->pci_device == 0x2E42 || \
> +		       (dev)->pci_device == 0x2E92 || \
>  		       (dev)->pci_device == 0x0042 || \
>  		       (dev)->pci_device == 0x0046)
>  
It would be simpler to read if upstream had decided to stick with the defines
rather than falling back to raw numbers, but that is like it is upstream. Just a
thought.

-Stefan

> @@ -920,6 +921,7 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
>  		     (dev)->pci_device == 0x2E22 || \
>  		     (dev)->pci_device == 0x2E32 || \
>  		     (dev)->pci_device == 0x2E42 || \
> +		     (dev)->pci_device == 0x2E92 || \
>  		     IS_GM45(dev))
>  
>  #define IS_IGDG(dev) ((dev)->pci_device == 0xa001)
> diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h
> index 3f6e545..eddcf57 100644
> --- a/include/drm/drm_pciids.h
> +++ b/include/drm/drm_pciids.h
> @@ -553,6 +553,7 @@
>  	{0x8086, 0x2e22, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
>  	{0x8086, 0x2e32, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
>  	{0x8086, 0x2e42, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
> +	{0x8086, 0x2e92, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
>  	{0x8086, 0xa001, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
>  	{0x8086, 0xa011, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
>  	{0x8086, 0x35e8, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
Andy Whitcroft Sept. 28, 2010, 9:17 a.m. UTC | #2
On Tue, Sep 28, 2010 at 04:25:54PM +0800, Ike Panhc wrote:
> We find there is another device id set for B43 chipset. After adding the device
> id 4E90/4E92 beside 4E40/4E42, the machine works fine with the same
> modification in xserver-xorg-video-intel.
> 
> After reporting to freedesktop bugzilla[1], Chris Wilson said the patch is
> queued for adding this id set and the patch is accepted in mainline kernel[2].
> 
> This patch is made against Karmic current checkout and only for adding new ids.
> 
> BugLink: http://launchpad.net/bugs/640214
> 
> [1] https://bugs.freedesktop.org/show_bug.cgi?id=30221
> [2] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=41a51428916ab04587bacee2dda61c4a0c4fc02f
> 
> Signed-off-by: Ike Panhc <ike.pan@canonical.com>

If this commit is in mainline we should be just cherry-picking this as
an upstream patch.  Though I see this upstream version is different.  Is
this therefore effectivly a backport to karmic ?

> ---
>  drivers/char/agp/intel-agp.c    |    8 ++++++++
>  drivers/gpu/drm/i915/i915_drv.h |    2 ++
>  include/drm/drm_pciids.h        |    1 +
>  3 files changed, 11 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
> index f150be9..2c09d4c 100644
> --- a/drivers/char/agp/intel-agp.c
> +++ b/drivers/char/agp/intel-agp.c
> @@ -38,6 +38,8 @@
>  #define PCI_DEVICE_ID_INTEL_Q33_IG          0x29D2
>  #define PCI_DEVICE_ID_INTEL_B43_HB          0x2E40
>  #define PCI_DEVICE_ID_INTEL_B43_IG          0x2E42
> +#define PCI_DEVICE_ID_INTEL_B43_1_HB        0x2E90
> +#define PCI_DEVICE_ID_INTEL_B43_1_IG        0x2E92
>  #define PCI_DEVICE_ID_INTEL_GM45_HB         0x2A40
>  #define PCI_DEVICE_ID_INTEL_GM45_IG         0x2A42
>  #define PCI_DEVICE_ID_INTEL_IGD_E_HB        0x2E00
> @@ -85,6 +87,8 @@
>  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_GM45_HB || \
>  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G41_HB || \
>  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_B43_HB || \
> +		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_B43_1_HB || \
> +		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_B43_1_HB || \

Does this not add the new ID twice?  I cannot see any difference between
these two lines, and to my eye the second is redundant?

>  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_D_HB || \
>  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_M_HB || \
>  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_MA_HB || \
> @@ -1238,6 +1242,7 @@ static void intel_i965_get_gtt_range(int *gtt_offset, int *gtt_size)
>  	case PCI_DEVICE_ID_INTEL_G45_HB:
>  	case PCI_DEVICE_ID_INTEL_G41_HB:
>  	case PCI_DEVICE_ID_INTEL_B43_HB:
> +	case PCI_DEVICE_ID_INTEL_B43_1_HB:
>  	case PCI_DEVICE_ID_INTEL_IGDNG_D_HB:
>  	case PCI_DEVICE_ID_INTEL_IGDNG_M_HB:
>  	case PCI_DEVICE_ID_INTEL_IGDNG_MA_HB:
> @@ -2217,6 +2222,8 @@ static const struct intel_driver_description {
>  	    "G45/G43", NULL, &intel_i965_driver },
>  	{ PCI_DEVICE_ID_INTEL_B43_HB, PCI_DEVICE_ID_INTEL_B43_IG, 0,
>  	    "B43", NULL, &intel_i965_driver },
> +	{ PCI_DEVICE_ID_INTEL_B43_1_HB, PCI_DEVICE_ID_INTEL_B43_1_IG, 0,
> +	    "B43", NULL, &intel_i965_driver },
>  	{ PCI_DEVICE_ID_INTEL_G41_HB, PCI_DEVICE_ID_INTEL_G41_IG, 0,
>  	    "G41", NULL, &intel_i965_driver },
>  	{ PCI_DEVICE_ID_INTEL_IGDNG_D_HB, PCI_DEVICE_ID_INTEL_IGDNG_D_IG, 0,
> @@ -2420,6 +2427,7 @@ static struct pci_device_id agp_intel_pci_table[] = {
>  	ID(PCI_DEVICE_ID_INTEL_G45_HB),
>  	ID(PCI_DEVICE_ID_INTEL_G41_HB),
>  	ID(PCI_DEVICE_ID_INTEL_B43_HB),
> +	ID(PCI_DEVICE_ID_INTEL_B43_1_HB),
>  	ID(PCI_DEVICE_ID_INTEL_IGDNG_D_HB),
>  	ID(PCI_DEVICE_ID_INTEL_IGDNG_M_HB),
>  	ID(PCI_DEVICE_ID_INTEL_IGDNG_MA_HB),
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 9919f9f..a62afae 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -907,6 +907,7 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
>  		       (dev)->pci_device == 0x2E22 || \
>  		       (dev)->pci_device == 0x2E32 || \
>  		       (dev)->pci_device == 0x2E42 || \
> +		       (dev)->pci_device == 0x2E92 || \
>  		       (dev)->pci_device == 0x0042 || \
>  		       (dev)->pci_device == 0x0046)
>  
> @@ -920,6 +921,7 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
>  		     (dev)->pci_device == 0x2E22 || \
>  		     (dev)->pci_device == 0x2E32 || \
>  		     (dev)->pci_device == 0x2E42 || \
> +		     (dev)->pci_device == 0x2E92 || \
>  		     IS_GM45(dev))
>  
>  #define IS_IGDG(dev) ((dev)->pci_device == 0xa001)
> diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h
> index 3f6e545..eddcf57 100644
> --- a/include/drm/drm_pciids.h
> +++ b/include/drm/drm_pciids.h
> @@ -553,6 +553,7 @@
>  	{0x8086, 0x2e22, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
>  	{0x8086, 0x2e32, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
>  	{0x8086, 0x2e42, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
> +	{0x8086, 0x2e92, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
>  	{0x8086, 0xa001, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
>  	{0x8086, 0xa011, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
>  	{0x8086, 0x35e8, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
> -- 
> 1.7.1
> 
> 
> -- 
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
Ike Panhc Sept. 28, 2010, 10:11 a.m. UTC | #3
On 09/28/2010 05:15 PM, Stefan Bader wrote:
>> +		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_B43_1_HB || \
>> +		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_B43_1_HB || \
> 
> Why does that add the same line twice? I assume IG is the internal graphics part
> and HB the host bridge? The rest seems to add the ids to the correct places (as
> far as one can tell).
> 

Sorry, this is my fault. The second line is redundant. Will resend.

>>  		       (dev)->pci_device == 0x2E22 || \
>>  		       (dev)->pci_device == 0x2E32 || \
>>  		       (dev)->pci_device == 0x2E42 || \
>> +		       (dev)->pci_device == 0x2E92 || \
>>  		       (dev)->pci_device == 0x0042 || \
>>  		       (dev)->pci_device == 0x0046)
>>  
> It would be simpler to read if upstream had decided to stick with the defines
> rather than falling back to raw numbers, but that is like it is upstream. Just a
> thought.
> 

I have this patch remade against karmic not cherry-picked because the drm/i915 has
been modified a lot from .31 to .36. I choose to follow .31 way so that the patch
can be smaller as it can.

On 09/28/2010 05:17 PM, Andy Whitcroft wrote:
> 
> If this commit is in mainline we should be just cherry-picking this as
> an upstream patch.  Though I see this upstream version is different.  Is
> this therefore effectivly a backport to karmic ?
> 

Since cherry-pick from upstream brings lots of conflicts, I think this is a backport
patch.
diff mbox

Patch

diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index f150be9..2c09d4c 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -38,6 +38,8 @@ 
 #define PCI_DEVICE_ID_INTEL_Q33_IG          0x29D2
 #define PCI_DEVICE_ID_INTEL_B43_HB          0x2E40
 #define PCI_DEVICE_ID_INTEL_B43_IG          0x2E42
+#define PCI_DEVICE_ID_INTEL_B43_1_HB        0x2E90
+#define PCI_DEVICE_ID_INTEL_B43_1_IG        0x2E92
 #define PCI_DEVICE_ID_INTEL_GM45_HB         0x2A40
 #define PCI_DEVICE_ID_INTEL_GM45_IG         0x2A42
 #define PCI_DEVICE_ID_INTEL_IGD_E_HB        0x2E00
@@ -85,6 +87,8 @@ 
 		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_GM45_HB || \
 		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G41_HB || \
 		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_B43_HB || \
+		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_B43_1_HB || \
+		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_B43_1_HB || \
 		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_D_HB || \
 		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_M_HB || \
 		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_MA_HB || \
@@ -1238,6 +1242,7 @@  static void intel_i965_get_gtt_range(int *gtt_offset, int *gtt_size)
 	case PCI_DEVICE_ID_INTEL_G45_HB:
 	case PCI_DEVICE_ID_INTEL_G41_HB:
 	case PCI_DEVICE_ID_INTEL_B43_HB:
+	case PCI_DEVICE_ID_INTEL_B43_1_HB:
 	case PCI_DEVICE_ID_INTEL_IGDNG_D_HB:
 	case PCI_DEVICE_ID_INTEL_IGDNG_M_HB:
 	case PCI_DEVICE_ID_INTEL_IGDNG_MA_HB:
@@ -2217,6 +2222,8 @@  static const struct intel_driver_description {
 	    "G45/G43", NULL, &intel_i965_driver },
 	{ PCI_DEVICE_ID_INTEL_B43_HB, PCI_DEVICE_ID_INTEL_B43_IG, 0,
 	    "B43", NULL, &intel_i965_driver },
+	{ PCI_DEVICE_ID_INTEL_B43_1_HB, PCI_DEVICE_ID_INTEL_B43_1_IG, 0,
+	    "B43", NULL, &intel_i965_driver },
 	{ PCI_DEVICE_ID_INTEL_G41_HB, PCI_DEVICE_ID_INTEL_G41_IG, 0,
 	    "G41", NULL, &intel_i965_driver },
 	{ PCI_DEVICE_ID_INTEL_IGDNG_D_HB, PCI_DEVICE_ID_INTEL_IGDNG_D_IG, 0,
@@ -2420,6 +2427,7 @@  static struct pci_device_id agp_intel_pci_table[] = {
 	ID(PCI_DEVICE_ID_INTEL_G45_HB),
 	ID(PCI_DEVICE_ID_INTEL_G41_HB),
 	ID(PCI_DEVICE_ID_INTEL_B43_HB),
+	ID(PCI_DEVICE_ID_INTEL_B43_1_HB),
 	ID(PCI_DEVICE_ID_INTEL_IGDNG_D_HB),
 	ID(PCI_DEVICE_ID_INTEL_IGDNG_M_HB),
 	ID(PCI_DEVICE_ID_INTEL_IGDNG_MA_HB),
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 9919f9f..a62afae 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -907,6 +907,7 @@  extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
 		       (dev)->pci_device == 0x2E22 || \
 		       (dev)->pci_device == 0x2E32 || \
 		       (dev)->pci_device == 0x2E42 || \
+		       (dev)->pci_device == 0x2E92 || \
 		       (dev)->pci_device == 0x0042 || \
 		       (dev)->pci_device == 0x0046)
 
@@ -920,6 +921,7 @@  extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
 		     (dev)->pci_device == 0x2E22 || \
 		     (dev)->pci_device == 0x2E32 || \
 		     (dev)->pci_device == 0x2E42 || \
+		     (dev)->pci_device == 0x2E92 || \
 		     IS_GM45(dev))
 
 #define IS_IGDG(dev) ((dev)->pci_device == 0xa001)
diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h
index 3f6e545..eddcf57 100644
--- a/include/drm/drm_pciids.h
+++ b/include/drm/drm_pciids.h
@@ -553,6 +553,7 @@ 
 	{0x8086, 0x2e22, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
 	{0x8086, 0x2e32, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
 	{0x8086, 0x2e42, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
+	{0x8086, 0x2e92, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
 	{0x8086, 0xa001, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
 	{0x8086, 0xa011, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
 	{0x8086, 0x35e8, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \