There is another device id for Intel B43 chip. Since there is already an id sets for B43 in intel-agp and i915. We tried to modify the kernel and xserver-xorg-video-intel and they work fine on 8086:2E90/2E92 chipsets. I believe this id sets is valid[1], and another patches has been sent to bug tracking system of freedesktop[2].
Since this is a blind try, please review the patches and if there is no more modification needed, please consider apply them.
[1] https://upgrades.intel.com/Public/PublicLandingPage.aspx [2] https://bugs.freedesktop.org/show_bug.cgi?id=30221
Ike Panhc (2): apg/intel: Support for another B43 device id drm/i915: Support for another B43 device id
drivers/char/agp/intel-agp.c | 7 +++++-- drivers/char/agp/intel-agp.h | 9 ++++++--- drivers/char/agp/intel-gtt.c | 3 ++- drivers/gpu/drm/i915/i915_drv.c | 1 + 4 files changed, 14 insertions(+), 6 deletions(-)
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.
Signed-off-by: Ike Panhc ike.pan@canonical.com --- drivers/char/agp/intel-agp.c | 7 +++++-- drivers/char/agp/intel-agp.h | 9 ++++++--- drivers/char/agp/intel-gtt.c | 3 ++- 3 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c index eab58db..b7eef63 100644 --- a/drivers/char/agp/intel-agp.c +++ b/drivers/char/agp/intel-agp.c @@ -804,7 +804,9 @@ static const struct intel_driver_description { "Q45/Q43", NULL, &intel_i965_driver }, { PCI_DEVICE_ID_INTEL_G45_HB, PCI_DEVICE_ID_INTEL_G45_IG, "G45/G43", NULL, &intel_i965_driver }, - { PCI_DEVICE_ID_INTEL_B43_HB, PCI_DEVICE_ID_INTEL_B43_IG, + { PCI_DEVICE_ID_INTEL_B43_1_HB, PCI_DEVICE_ID_INTEL_B43_1_IG, + "B43", NULL, &intel_i965_driver }, + { PCI_DEVICE_ID_INTEL_B43_2_HB, PCI_DEVICE_ID_INTEL_B43_2_IG, "B43", NULL, &intel_i965_driver }, { PCI_DEVICE_ID_INTEL_G41_HB, PCI_DEVICE_ID_INTEL_G41_IG, "G41", NULL, &intel_i965_driver }, @@ -1046,7 +1048,8 @@ static struct pci_device_id agp_intel_pci_table[] = { ID(PCI_DEVICE_ID_INTEL_Q45_HB), 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_B43_2_HB), ID(PCI_DEVICE_ID_INTEL_IRONLAKE_D_HB), ID(PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB), ID(PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB), diff --git a/drivers/char/agp/intel-agp.h b/drivers/char/agp/intel-agp.h index ee189c7..5d9c17c 100644 --- a/drivers/char/agp/intel-agp.h +++ b/drivers/char/agp/intel-agp.h @@ -184,8 +184,10 @@ #define PCI_DEVICE_ID_INTEL_Q35_IG 0x29B2 #define PCI_DEVICE_ID_INTEL_Q33_HB 0x29D0 #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 0x2E40 +#define PCI_DEVICE_ID_INTEL_B43_1_IG 0x2E42 +#define PCI_DEVICE_ID_INTEL_B43_2_HB 0x2E90 +#define PCI_DEVICE_ID_INTEL_B43_2_IG 0x2E92 #define PCI_DEVICE_ID_INTEL_GM45_HB 0x2A40 #define PCI_DEVICE_ID_INTEL_GM45_IG 0x2A42 #define PCI_DEVICE_ID_INTEL_EAGLELAKE_HB 0x2E00 @@ -246,7 +248,8 @@ agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G45_HB || \ 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_2_HB || \ agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IRONLAKE_D_HB || \ agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB || \ agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB || \ diff --git a/drivers/char/agp/intel-gtt.c b/drivers/char/agp/intel-gtt.c index 75e0a34..3c71568 100644 --- a/drivers/char/agp/intel-gtt.c +++ b/drivers/char/agp/intel-gtt.c @@ -1379,7 +1379,8 @@ static void intel_i965_get_gtt_range(int *gtt_offset, int *gtt_size) case PCI_DEVICE_ID_INTEL_Q45_HB: 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_B43_2_HB: case PCI_DEVICE_ID_INTEL_IRONLAKE_D_HB: case PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB: case PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB:
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.
Signed-off-by: Ike Panhc ike.pan@canonical.com --- drivers/gpu/drm/i915/i915_drv.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 216deb5..a9876ac 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -170,6 +170,7 @@ static const struct pci_device_id pciidlist[] = { /* aka */ INTEL_VGA_DEVICE(0x2e22, &intel_g45_info), /* G45_G */ INTEL_VGA_DEVICE(0x2e32, &intel_g45_info), /* G41_G */ INTEL_VGA_DEVICE(0x2e42, &intel_g45_info), /* B43_G */ + INTEL_VGA_DEVICE(0x2e92, &intel_g45_info), /* B43_G */ INTEL_VGA_DEVICE(0xa001, &intel_pineview_info), INTEL_VGA_DEVICE(0xa011, &intel_pineview_info), INTEL_VGA_DEVICE(0x0042, &intel_ironlake_d_info),
dri-devel@lists.freedesktop.org