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
This commit is contained in:
gallatin 2000-02-09 20:05:30 +00:00
parent 16bfae1d4d
commit 6c2f5c29af
6 changed files with 132 additions and 42 deletions

View File

@ -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++) {

View File

@ -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++) {

View File

@ -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++) {

View File

@ -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++) {

View File

@ -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++) {

View File

@ -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++) {