aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWang Zhenyu <zhenyu.z.wang@intel.com>2007-06-21 01:43:18 -0400
committerDave Jones <davej@redhat.com>2007-06-21 12:49:11 -0400
commit47d46379eb66278107947729e34a833c76dca252 (patch)
treedcaaa9297188e15436b678167f33576c67974762
parentf1518a088bde6aea49e7c472ed6ab96178fcba3e (diff)
[AGPGART] intel_agp: don't load if no IGD and AGP port
After i915 chip, GMCH has no AGP port. Origin bridge driver in device table will try to access illegal regs like APBASE, APSIZE, etc. This may cause problem. So mark them as NULL in the table, we won't load if no IGD got detect and bridge has no AGP port. Signed-off-by: Wang Zhenyu <zhenyu.z.wang@intel.com> Signed-off-by: Dave Jones <davej@redhat.com>
-rw-r--r--drivers/char/agp/intel-agp.c35
1 files changed, 19 insertions, 16 deletions
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index 0439ee951a11..a1240603912c 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -1843,35 +1843,35 @@ static const struct intel_driver_description {
1843 &intel_845_driver, &intel_830_driver }, 1843 &intel_845_driver, &intel_830_driver },
1844 { PCI_DEVICE_ID_INTEL_82875_HB, 0, 0, "i875", &intel_845_driver, NULL }, 1844 { PCI_DEVICE_ID_INTEL_82875_HB, 0, 0, "i875", &intel_845_driver, NULL },
1845 { PCI_DEVICE_ID_INTEL_82915G_HB, PCI_DEVICE_ID_INTEL_82915G_IG, 0, "915G", 1845 { PCI_DEVICE_ID_INTEL_82915G_HB, PCI_DEVICE_ID_INTEL_82915G_IG, 0, "915G",
1846 &intel_845_driver, &intel_915_driver }, 1846 NULL, &intel_915_driver },
1847 { PCI_DEVICE_ID_INTEL_82915GM_HB, PCI_DEVICE_ID_INTEL_82915GM_IG, 0, "915GM", 1847 { PCI_DEVICE_ID_INTEL_82915GM_HB, PCI_DEVICE_ID_INTEL_82915GM_IG, 0, "915GM",
1848 &intel_845_driver, &intel_915_driver }, 1848 NULL, &intel_915_driver },
1849 { PCI_DEVICE_ID_INTEL_82945G_HB, PCI_DEVICE_ID_INTEL_82945G_IG, 0, "945G", 1849 { PCI_DEVICE_ID_INTEL_82945G_HB, PCI_DEVICE_ID_INTEL_82945G_IG, 0, "945G",
1850 &intel_845_driver, &intel_915_driver }, 1850 NULL, &intel_915_driver },
1851 { PCI_DEVICE_ID_INTEL_82945GM_HB, PCI_DEVICE_ID_INTEL_82945GM_IG, 1, "945GM", 1851 { PCI_DEVICE_ID_INTEL_82945GM_HB, PCI_DEVICE_ID_INTEL_82945GM_IG, 1, "945GM",
1852 &intel_845_driver, &intel_915_driver }, 1852 NULL, &intel_915_driver },
1853 { PCI_DEVICE_ID_INTEL_82945GM_HB, PCI_DEVICE_ID_INTEL_82945GME_IG, 0, "945GME", 1853 { PCI_DEVICE_ID_INTEL_82945GM_HB, PCI_DEVICE_ID_INTEL_82945GME_IG, 0, "945GME",
1854 &intel_845_driver, &intel_915_driver }, 1854 NULL, &intel_915_driver },
1855 { PCI_DEVICE_ID_INTEL_82946GZ_HB, PCI_DEVICE_ID_INTEL_82946GZ_IG, 0, "946GZ", 1855 { PCI_DEVICE_ID_INTEL_82946GZ_HB, PCI_DEVICE_ID_INTEL_82946GZ_IG, 0, "946GZ",
1856 &intel_845_driver, &intel_i965_driver }, 1856 NULL, &intel_i965_driver },
1857 { PCI_DEVICE_ID_INTEL_82965G_1_HB, PCI_DEVICE_ID_INTEL_82965G_1_IG, 0, "965G", 1857 { PCI_DEVICE_ID_INTEL_82965G_1_HB, PCI_DEVICE_ID_INTEL_82965G_1_IG, 0, "965G",
1858 &intel_845_driver, &intel_i965_driver }, 1858 NULL, &intel_i965_driver },
1859 { PCI_DEVICE_ID_INTEL_82965Q_HB, PCI_DEVICE_ID_INTEL_82965Q_IG, 0, "965Q", 1859 { PCI_DEVICE_ID_INTEL_82965Q_HB, PCI_DEVICE_ID_INTEL_82965Q_IG, 0, "965Q",
1860 &intel_845_driver, &intel_i965_driver }, 1860 NULL, &intel_i965_driver },
1861 { PCI_DEVICE_ID_INTEL_82965G_HB, PCI_DEVICE_ID_INTEL_82965G_IG, 0, "965G", 1861 { PCI_DEVICE_ID_INTEL_82965G_HB, PCI_DEVICE_ID_INTEL_82965G_IG, 0, "965G",
1862 &intel_845_driver, &intel_i965_driver }, 1862 NULL, &intel_i965_driver },
1863 { PCI_DEVICE_ID_INTEL_82965GM_HB, PCI_DEVICE_ID_INTEL_82965GM_IG, 1, "965GM", 1863 { PCI_DEVICE_ID_INTEL_82965GM_HB, PCI_DEVICE_ID_INTEL_82965GM_IG, 1, "965GM",
1864 &intel_845_driver, &intel_i965_driver }, 1864 NULL, &intel_i965_driver },
1865 { PCI_DEVICE_ID_INTEL_82965GM_HB, PCI_DEVICE_ID_INTEL_82965GME_IG, 0, "965GME/GLE", 1865 { PCI_DEVICE_ID_INTEL_82965GM_HB, PCI_DEVICE_ID_INTEL_82965GME_IG, 0, "965GME/GLE",
1866 &intel_845_driver, &intel_i965_driver }, 1866 NULL, &intel_i965_driver },
1867 { PCI_DEVICE_ID_INTEL_7505_0, 0, 0, "E7505", &intel_7505_driver, NULL }, 1867 { PCI_DEVICE_ID_INTEL_7505_0, 0, 0, "E7505", &intel_7505_driver, NULL },
1868 { PCI_DEVICE_ID_INTEL_7205_0, 0, 0, "E7205", &intel_7505_driver, NULL }, 1868 { PCI_DEVICE_ID_INTEL_7205_0, 0, 0, "E7205", &intel_7505_driver, NULL },
1869 { PCI_DEVICE_ID_INTEL_G33_HB, PCI_DEVICE_ID_INTEL_G33_IG, 0, "G33", 1869 { PCI_DEVICE_ID_INTEL_G33_HB, PCI_DEVICE_ID_INTEL_G33_IG, 0, "G33",
1870 &intel_845_driver, &intel_g33_driver }, 1870 NULL, &intel_g33_driver },
1871 { PCI_DEVICE_ID_INTEL_Q35_HB, PCI_DEVICE_ID_INTEL_Q35_IG, 0, "Q35", 1871 { PCI_DEVICE_ID_INTEL_Q35_HB, PCI_DEVICE_ID_INTEL_Q35_IG, 0, "Q35",
1872 &intel_845_driver, &intel_g33_driver }, 1872 NULL, &intel_g33_driver },
1873 { PCI_DEVICE_ID_INTEL_Q33_HB, PCI_DEVICE_ID_INTEL_Q33_IG, 0, "Q33", 1873 { PCI_DEVICE_ID_INTEL_Q33_HB, PCI_DEVICE_ID_INTEL_Q33_IG, 0, "Q33",
1874 &intel_845_driver, &intel_g33_driver }, 1874 NULL, &intel_g33_driver },
1875 { 0, 0, 0, NULL, NULL, NULL } 1875 { 0, 0, 0, NULL, NULL, NULL }
1876}; 1876};
1877 1877
@@ -1917,8 +1917,11 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev,
1917 } 1917 }
1918 1918
1919 if (bridge->driver == NULL) { 1919 if (bridge->driver == NULL) {
1920 printk(KERN_WARNING PFX "Failed to find bridge device " 1920 /* bridge has no AGP and no IGD detected */
1921 "(chip_id: %04x)\n", intel_agp_chipsets[i].gmch_chip_id); 1921 if (cap_ptr)
1922 printk(KERN_WARNING PFX "Failed to find bridge device "
1923 "(chip_id: %04x)\n",
1924 intel_agp_chipsets[i].gmch_chip_id);
1922 agp_put_bridge(bridge); 1925 agp_put_bridge(bridge);
1923 return -ENODEV; 1926 return -ENODEV;
1924 } 1927 }