public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] PCI mmconfig support for Intel 915 bridges
@ 2007-01-11  2:53 Jesse Barnes
  2007-01-11 14:38 ` Olivier Galibert
  2007-04-25 22:35 ` Jesse Barnes
  0 siblings, 2 replies; 5+ messages in thread
From: Jesse Barnes @ 2007-01-11  2:53 UTC (permalink / raw)
  To: Olivier Galibert, Andrew Morton, linux-kernel

This is a resend of the patch I sent earlier to Oliver.  It adds support
for Intel 915 bridge chips to the new PCI MMConfig detection code.  Tested
and works on my sole 915 based platform (a Toshiba laptop).  I added
register masking per Oliver's suggestion, and moved the __init qualifier to
after the 'static const char' to match Ogawa-san's recent cleanup patches.

Over time we can probably associate more PCI IDs with this routine, since
i915 family contains a few other chips.  But since I didn't have platforms
to test such additions on, they're left out for now.

Signed-off-by:  Jesse Barnes <jbarnes@virtuousgeek.org>

Thanks,
Jesse

diff -Napur -X /home/jbarnes/dontdiff linux-2.6.19-mmconfig.orig/arch/i386/pci/mmconfig-shared.c linux-2.6.19-mmconfig/arch/i386/pci/mmconfig-shared.c
--- linux-2.6.19-mmconfig.orig/arch/i386/pci/mmconfig-shared.c	2007-01-07 10:10:29.000000000 -0800
+++ linux-2.6.19-mmconfig/arch/i386/pci/mmconfig-shared.c	2007-01-10 18:46:46.000000000 -0800
@@ -71,6 +71,26 @@ static __init const char *pci_mmcfg_e752
 	return "Intel Corporation E7520 Memory Controller Hub";
 }
 
+static const char __init *pci_mmcfg_intel_915(void)
+{
+	u32 pciexbar, len = 0;
+
+	pci_conf1_read(0, 0, PCI_DEVFN(0,0), 0x48, 4, &pciexbar);
+
+	/* No enable bit or size field, so assume 256M range is enabled. */
+	len = 0x10000000U;
+	pci_mmcfg_config_num = 1;
+	pciexbar &= 0xe0000000; /* mask out potentially bogus bits */
+
+	pci_mmcfg_config = kzalloc(sizeof(pci_mmcfg_config[0]), GFP_KERNEL);
+	pci_mmcfg_config[0].base_address = pciexbar;
+	pci_mmcfg_config[0].pci_segment_group_number = 0;
+	pci_mmcfg_config[0].start_bus_number = 0;
+	pci_mmcfg_config[0].end_bus_number = (len >> 20) - 1;
+
+	return "Intel Corporation 915PM/GM/GMS Express Memory Controller Hub";
+}
+
 static __init const char *pci_mmcfg_intel_945(void)
 {
 	u32 pciexbar, mask = 0, len = 0;
@@ -126,6 +146,7 @@ struct pci_mmcfg_hostbridge_probe {
 
 static __initdata struct pci_mmcfg_hostbridge_probe pci_mmcfg_probes[] = {
 	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7520_MCH, pci_mmcfg_e7520 },
+	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82915GM_HB, pci_mmcfg_intel_915 },
 	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82945G_HB, pci_mmcfg_intel_945 },
 };
 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2007-04-25 23:16 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-01-11  2:53 [PATCH] PCI mmconfig support for Intel 915 bridges Jesse Barnes
2007-01-11 14:38 ` Olivier Galibert
2007-04-25 22:35 ` Jesse Barnes
2007-04-25 23:07   ` Andrew Morton
2007-04-25 23:16     ` Jesse Barnes

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox