diff options
author | imp <imp@FreeBSD.org> | 2005-10-28 06:03:53 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2005-10-28 06:03:53 +0000 |
commit | 48d394e4d7b7f832d688e44dbc89db85a044feef (patch) | |
tree | 7cf27dee024c3255d3f2b0107c031e4700ba5f7f /sys/dev/cardbus | |
parent | eea6bf62c7ade1e1a3148ba985059cfb481d8e23 (diff) | |
download | FreeBSD-src-48d394e4d7b7f832d688e44dbc89db85a044feef.zip FreeBSD-src-48d394e4d7b7f832d688e44dbc89db85a044feef.tar.gz |
Cardbus has only 1 slot, so simplify a little.
Diffstat (limited to 'sys/dev/cardbus')
-rw-r--r-- | sys/dev/cardbus/cardbus.c | 76 | ||||
-rw-r--r-- | sys/dev/cardbus/cardbusreg.h | 5 |
2 files changed, 37 insertions, 44 deletions
diff --git a/sys/dev/cardbus/cardbus.c b/sys/dev/cardbus/cardbus.c index da5605f..81c9bf7 100644 --- a/sys/dev/cardbus/cardbus.c +++ b/sys/dev/cardbus/cardbus.c @@ -112,8 +112,8 @@ cardbus_add_map(device_t cbdev, device_t child, int reg) return; } - if (reg == CARDBUS_ROM_REG) - testval = CARDBUS_ROM_ADDRMASK; + if (reg == PCIR_BIOS) + testval = PCIM_BIOS_ADDR_MASK; else testval = ~0; @@ -435,50 +435,48 @@ cardbus_attach_card(device_t cbdev) device_t child; int cardattached = 0; int bus, slot, func; + int cardbusfunchigh = 0; cardbus_detach_card(cbdev); /* detach existing cards */ POWER_ENABLE_SOCKET(brdev, cbdev); bus = pcib_get_bus(cbdev); + slot = 0; /* For each function, set it up and try to attach a driver to it */ - for (slot = 0; slot <= CARDBUS_SLOTMAX; slot++) { - int cardbusfunchigh = 0; - for (func = 0; func <= cardbusfunchigh; func++) { - struct cardbus_devinfo *dinfo; - - dinfo = (struct cardbus_devinfo *) - pci_read_device(brdev, bus, slot, func, - sizeof(struct cardbus_devinfo)); - if (dinfo == NULL) - continue; - if (dinfo->pci.cfg.mfdev) - cardbusfunchigh = CARDBUS_FUNCMAX; - - cardbus_device_setup_regs(brdev, bus, slot, func, - &dinfo->pci.cfg); - child = device_add_child(cbdev, NULL, -1); - if (child == NULL) { - DEVPRINTF((cbdev, "Cannot add child!\n")); - pci_freecfg((struct pci_devinfo *)dinfo); - continue; - } - dinfo->pci.cfg.dev = child; - resource_list_init(&dinfo->pci.resources); - device_set_ivars(child, dinfo); - if (cardbus_do_cis(cbdev, child) != 0) { - DEVPRINTF((cbdev, "Can't parse cis\n")); - pci_freecfg((struct pci_devinfo *)dinfo); - continue; - } - cardbus_pickup_maps(cbdev, child); - cardbus_alloc_resources(cbdev, child); - pci_print_verbose(&dinfo->pci); - if (device_probe_and_attach(child) != 0) - cardbus_release_all_resources(cbdev, dinfo); - else - cardattached++; + for (func = 0; func <= cardbusfunchigh; func++) { + struct cardbus_devinfo *dinfo; + + dinfo = (struct cardbus_devinfo *) + pci_read_device(brdev, bus, slot, func, + sizeof(struct cardbus_devinfo)); + if (dinfo == NULL) + continue; + if (dinfo->pci.cfg.mfdev) + cardbusfunchigh = PCI_FUNCMAX; + + cardbus_device_setup_regs(brdev, bus, slot, func, + &dinfo->pci.cfg); + child = device_add_child(cbdev, NULL, -1); + if (child == NULL) { + DEVPRINTF((cbdev, "Cannot add child!\n")); + pci_freecfg((struct pci_devinfo *)dinfo); + continue; } + dinfo->pci.cfg.dev = child; + resource_list_init(&dinfo->pci.resources); + device_set_ivars(child, dinfo); + if (cardbus_do_cis(cbdev, child) != 0) { + DEVPRINTF((cbdev, "Can't parse cis\n")); + pci_freecfg((struct pci_devinfo *)dinfo); + continue; + } + cardbus_pickup_maps(cbdev, child); + cardbus_alloc_resources(cbdev, child); + pci_print_verbose(&dinfo->pci); + if (device_probe_and_attach(child) != 0) + cardbus_release_all_resources(cbdev, dinfo); + else + cardattached++; } - if (cardattached > 0) return (0); POWER_DISABLE_SOCKET(brdev, cbdev); diff --git a/sys/dev/cardbus/cardbusreg.h b/sys/dev/cardbus/cardbusreg.h index 741ee7f..0b4621f 100644 --- a/sys/dev/cardbus/cardbusreg.h +++ b/sys/dev/cardbus/cardbusreg.h @@ -30,11 +30,6 @@ * Register definitions for the Cardbus Bus */ - -/* Cardbus bus constants */ -#define CARDBUS_SLOTMAX 0 -#define CARDBUS_FUNCMAX 7 - /* EXROM offsets for reading CIS */ #define CARDBUS_EXROM_SIGNATURE 0x00 #define CARDBUS_EXROM_DATA_PTR 0x18 |