summaryrefslogtreecommitdiffstats
path: root/sys/dev/cardbus/cardbus.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/cardbus/cardbus.c')
-rw-r--r--sys/dev/cardbus/cardbus.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/sys/dev/cardbus/cardbus.c b/sys/dev/cardbus/cardbus.c
index 608c1fe..00d4a19 100644
--- a/sys/dev/cardbus/cardbus.c
+++ b/sys/dev/cardbus/cardbus.c
@@ -96,17 +96,36 @@ static int
cardbus_attach(device_t cbdev)
{
struct cardbus_softc *sc;
+#ifdef PCI_RES_BUS
+ int rid;
+#endif
sc = device_get_softc(cbdev);
sc->sc_dev = cbdev;
+#ifdef PCI_RES_BUS
+ rid = 0;
+ sc->sc_bus = bus_alloc_resource(cbdev, PCI_RES_BUS, &rid,
+ pcib_get_bus(cbdev), pcib_get_bus(cbdev), 1, 0);
+ if (sc->sc_bus == NULL) {
+ device_printf(cbdev, "failed to allocate bus number\n");
+ return (ENXIO);
+ }
+#endif
return (0);
}
static int
cardbus_detach(device_t cbdev)
{
+#ifdef PCI_RES_BUS
+ struct cardbus_softc *sc;
+#endif
cardbus_detach_card(cbdev);
+#ifdef PCI_RES_BUS
+ sc = device_get_softc(cbdev);
+ (void)bus_release_resource(cbdev, PCI_RES_BUS, 0, sc->sc_bus);
+#endif
return (0);
}
OpenPOWER on IntegriCloud