If we have found pci devices via pci_cfgopen(), but don't find a

host->pci bridge specifically, then add a pcib0 device on the motherboard
for the pci bus to hang off.

Requested by:  Anders Andersson <anders@sanyusan.se>
Obtained from: dfr
This commit is contained in:
peter 1999-11-18 08:58:37 +00:00
parent be3a1757c0
commit 5a49af516f
6 changed files with 84 additions and 0 deletions

View File

@ -420,6 +420,7 @@ static void
nexus_pcib_identify(driver_t *driver, device_t parent)
{
pcicfgregs probe;
int found = 0;
if (pci_cfgopen() == 0)
return;
@ -455,9 +456,22 @@ nexus_pcib_identify(driver_t *driver, device_t parent)
child = BUS_ADD_CHILD(parent, 100,
"pcib", busnum);
device_set_desc(child, s);
found = 1;
}
}
}
/*
* Make sure we add at least one bridge since some old
* hardware doesn't actually have a host-pci bridge device.
* Note that pci_cfgopen() thinks we have PCI devices..
*/
if (!found) {
if (bootverbose)
printf(
"nexus_pcib_identify: no bridge found, adding pcib0 anyway\n");
BUS_ADD_CHILD(parent, 100, "pcib", 0);
}
}
static int

View File

@ -420,6 +420,7 @@ static void
nexus_pcib_identify(driver_t *driver, device_t parent)
{
pcicfgregs probe;
int found = 0;
if (pci_cfgopen() == 0)
return;
@ -455,9 +456,22 @@ nexus_pcib_identify(driver_t *driver, device_t parent)
child = BUS_ADD_CHILD(parent, 100,
"pcib", busnum);
device_set_desc(child, s);
found = 1;
}
}
}
/*
* Make sure we add at least one bridge since some old
* hardware doesn't actually have a host-pci bridge device.
* Note that pci_cfgopen() thinks we have PCI devices..
*/
if (!found) {
if (bootverbose)
printf(
"nexus_pcib_identify: no bridge found, adding pcib0 anyway\n");
BUS_ADD_CHILD(parent, 100, "pcib", 0);
}
}
static int

View File

@ -420,6 +420,7 @@ static void
nexus_pcib_identify(driver_t *driver, device_t parent)
{
pcicfgregs probe;
int found = 0;
if (pci_cfgopen() == 0)
return;
@ -455,9 +456,22 @@ nexus_pcib_identify(driver_t *driver, device_t parent)
child = BUS_ADD_CHILD(parent, 100,
"pcib", busnum);
device_set_desc(child, s);
found = 1;
}
}
}
/*
* Make sure we add at least one bridge since some old
* hardware doesn't actually have a host-pci bridge device.
* Note that pci_cfgopen() thinks we have PCI devices..
*/
if (!found) {
if (bootverbose)
printf(
"nexus_pcib_identify: no bridge found, adding pcib0 anyway\n");
BUS_ADD_CHILD(parent, 100, "pcib", 0);
}
}
static int

View File

@ -420,6 +420,7 @@ static void
nexus_pcib_identify(driver_t *driver, device_t parent)
{
pcicfgregs probe;
int found = 0;
if (pci_cfgopen() == 0)
return;
@ -455,9 +456,22 @@ nexus_pcib_identify(driver_t *driver, device_t parent)
child = BUS_ADD_CHILD(parent, 100,
"pcib", busnum);
device_set_desc(child, s);
found = 1;
}
}
}
/*
* Make sure we add at least one bridge since some old
* hardware doesn't actually have a host-pci bridge device.
* Note that pci_cfgopen() thinks we have PCI devices..
*/
if (!found) {
if (bootverbose)
printf(
"nexus_pcib_identify: no bridge found, adding pcib0 anyway\n");
BUS_ADD_CHILD(parent, 100, "pcib", 0);
}
}
static int

View File

@ -420,6 +420,7 @@ static void
nexus_pcib_identify(driver_t *driver, device_t parent)
{
pcicfgregs probe;
int found = 0;
if (pci_cfgopen() == 0)
return;
@ -455,9 +456,22 @@ nexus_pcib_identify(driver_t *driver, device_t parent)
child = BUS_ADD_CHILD(parent, 100,
"pcib", busnum);
device_set_desc(child, s);
found = 1;
}
}
}
/*
* Make sure we add at least one bridge since some old
* hardware doesn't actually have a host-pci bridge device.
* Note that pci_cfgopen() thinks we have PCI devices..
*/
if (!found) {
if (bootverbose)
printf(
"nexus_pcib_identify: no bridge found, adding pcib0 anyway\n");
BUS_ADD_CHILD(parent, 100, "pcib", 0);
}
}
static int

View File

@ -420,6 +420,7 @@ static void
nexus_pcib_identify(driver_t *driver, device_t parent)
{
pcicfgregs probe;
int found = 0;
if (pci_cfgopen() == 0)
return;
@ -455,9 +456,22 @@ nexus_pcib_identify(driver_t *driver, device_t parent)
child = BUS_ADD_CHILD(parent, 100,
"pcib", busnum);
device_set_desc(child, s);
found = 1;
}
}
}
/*
* Make sure we add at least one bridge since some old
* hardware doesn't actually have a host-pci bridge device.
* Note that pci_cfgopen() thinks we have PCI devices..
*/
if (!found) {
if (bootverbose)
printf(
"nexus_pcib_identify: no bridge found, adding pcib0 anyway\n");
BUS_ADD_CHILD(parent, 100, "pcib", 0);
}
}
static int