summaryrefslogtreecommitdiffstats
path: root/sys/pccard/pcic_pci.c
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2001-05-24 04:24:22 +0000
committerimp <imp@FreeBSD.org>2001-05-24 04:24:22 +0000
commitab4dae83b57827a6e0c1ce7cda528c2d80d2e956 (patch)
tree4c4552405e1b04e98bc9d7ee987af1fc7638757e /sys/pccard/pcic_pci.c
parent85de757366f537a26a6400585ffe3f4e4218d608 (diff)
downloadFreeBSD-src-ab4dae83b57827a6e0c1ce7cda528c2d80d2e956.zip
FreeBSD-src-ab4dae83b57827a6e0c1ce7cda528c2d80d2e956.tar.gz
Do what we should have done a long time ago:
o If the class is PCIC_BRIDGE, subclass is PCIS_BRIDGE_PCMCIA and programming interface is 0, assume that it is a generic PCMCIA PCI chip we can program. I don't think there are any of these that we don't know about, but you never know. o If the class is PCIC_BRIDGE, subclass is PCIS_BRIDGE_CARDBUS and programming interface is 0, assume that it is a YENTA cardbus bridge that we know how to cope with. There are likely some cardbus bridges that haven't it made it in here yet.
Diffstat (limited to 'sys/pccard/pcic_pci.c')
-rw-r--r--sys/pccard/pcic_pci.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/pccard/pcic_pci.c b/sys/pccard/pcic_pci.c
index 9c8afb7..3b74304 100644
--- a/sys/pccard/pcic_pci.c
+++ b/sys/pccard/pcic_pci.c
@@ -219,6 +219,8 @@ static int
pcic_pci_probe(device_t dev)
{
u_int32_t device_id;
+ u_int8_t subclass;
+ u_int8_t progif;
char *desc;
device_id = pci_get_devid(dev);
@@ -307,6 +309,14 @@ pcic_pci_probe(device_t dev)
break;
default:
+ if (pci_get_class(dev) == PCIC_BRIDGE) {
+ subclass = pci_get_subclass(dev);
+ progif = pci_get_progif(dev);
+ if (subclass == PCIS_BRIDGE_PCMCIA && progif == 0)
+ desc = "Generic PCI-PCMCIA Bridge";
+ if (subclass == PCIS_BRIDGE_CARDBUS && progif == 0)
+ desc = "YENTA PCI-CARDBUS Bridge";
+ }
break;
}
OpenPOWER on IntegriCloud