From 6c2f5c29afb0a37ab74ad6b1b84a635e03faf295 Mon Sep 17 00:00:00 2001 From: gallatin Date: Wed, 9 Feb 2000 20:05:30 +0000 Subject: Allow allows peer pci buses which are directly connected to the RCC host pci chipset to be probed & attached on newer Dell PowerEdge servers, such as the 2400 and 4400. Reviewed by: dfr, msmith, jlemon Tested by: hnokubi@yyy.or.jp (in a previous incantation) Approved by: jkh --- sys/i386/isa/pcibus.c | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'sys/i386/isa/pcibus.c') diff --git a/sys/i386/isa/pcibus.c b/sys/i386/isa/pcibus.c index 838ef22..eaad794 100644 --- a/sys/i386/isa/pcibus.c +++ b/sys/i386/isa/pcibus.c @@ -394,13 +394,22 @@ nexus_pcib_is_host_bridge(pcicfgregs *cfg, s = "OPTi 82C822 host to PCI Bridge"; break; - /* Ross (?) -- vendor 0x1166 */ + /* RCC -- vendor 0x1166 */ case 0x00051166: - s = "Ross (?) host to PCI bridge"; - /* just guessing the secondary bus register number ... */ -#if 0 - *busnum = pci_cfgread(cfg, 0x45, 1); -#endif + s = "RCC HE host to PCI bridge"; + *busnum = pci_cfgread(cfg, 0x44, 1); + break; + + case 0x00061166: + /* FALLTHROUGH */ + case 0x00081166: + s = "RCC host to PCI bridge"; + *busnum = pci_cfgread(cfg, 0x44, 1); + break; + + case 0x00091166: + s = "RCC LE host to PCI bridge"; + *busnum = pci_cfgread(cfg, 0x44, 1); break; /* Integrated Micro Solutions -- vendor 0x10e0 */ @@ -425,14 +434,20 @@ static void nexus_pcib_identify(driver_t *driver, device_t parent) { pcicfgregs probe; + u_int8_t hdrtype; int found = 0; + int pcifunchigh; if (pci_cfgopen() == 0) return; probe.hose = 0; probe.bus = 0; for (probe.slot = 0; probe.slot <= PCI_SLOTMAX; probe.slot++) { - int pcifunchigh = 0; + hdrtype = pci_cfgread(&probe, PCIR_HEADERTYPE, 1); + if (hdrtype & PCIM_MFDEV) + pcifunchigh = 7; + else + pcifunchigh = 0; for (probe.func = 0; probe.func <= pcifunchigh; probe.func++) { -- cgit v1.1