aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorAndrew Gallatin <gallatin@FreeBSD.org>2000-02-09 20:05:30 +0000
committerAndrew Gallatin <gallatin@FreeBSD.org>2000-02-09 20:05:30 +0000
commitda4009202aeb3a0b4045d48b7bb794bfab9ad7e9 (patch)
treef846dc26d05087551d563b24a4ae87eb71f1059b /sys
parentd92ce96b1c81e0587f3478bcd14ee1ece1f17fc8 (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/pci/pci_bus.c29
-rw-r--r--sys/amd64/pci/pci_cfgreg.c29
-rw-r--r--sys/i386/isa/pcibus.c29
-rw-r--r--sys/i386/pci/pci_bus.c29
-rw-r--r--sys/i386/pci/pci_cfgreg.c29
-rw-r--r--sys/i386/pci/pci_pir.c29
6 files changed, 132 insertions, 42 deletions
diff --git a/sys/amd64/pci/pci_bus.c b/sys/amd64/pci/pci_bus.c
index 838ef22ad406..eaad79482e63 100644
--- a/sys/amd64/pci/pci_bus.c
+++ b/sys/amd64/pci/pci_bus.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++) {
diff --git a/sys/amd64/pci/pci_cfgreg.c b/sys/amd64/pci/pci_cfgreg.c
index 838ef22ad406..eaad79482e63 100644
--- a/sys/amd64/pci/pci_cfgreg.c
+++ b/sys/amd64/pci/pci_cfgreg.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++) {
diff --git a/sys/i386/isa/pcibus.c b/sys/i386/isa/pcibus.c
index 838ef22ad406..eaad79482e63 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++) {
diff --git a/sys/i386/pci/pci_bus.c b/sys/i386/pci/pci_bus.c
index 838ef22ad406..eaad79482e63 100644
--- a/sys/i386/pci/pci_bus.c
+++ b/sys/i386/pci/pci_bus.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++) {
diff --git a/sys/i386/pci/pci_cfgreg.c b/sys/i386/pci/pci_cfgreg.c
index 838ef22ad406..eaad79482e63 100644
--- a/sys/i386/pci/pci_cfgreg.c
+++ b/sys/i386/pci/pci_cfgreg.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++) {
diff --git a/sys/i386/pci/pci_pir.c b/sys/i386/pci/pci_pir.c
index 838ef22ad406..eaad79482e63 100644
--- a/sys/i386/pci/pci_pir.c
+++ b/sys/i386/pci/pci_pir.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++) {