summaryrefslogtreecommitdiffstats
path: root/sys/dev/cardbus
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2005-10-28 06:03:53 +0000
committerimp <imp@FreeBSD.org>2005-10-28 06:03:53 +0000
commit48d394e4d7b7f832d688e44dbc89db85a044feef (patch)
tree7cf27dee024c3255d3f2b0107c031e4700ba5f7f /sys/dev/cardbus
parenteea6bf62c7ade1e1a3148ba985059cfb481d8e23 (diff)
downloadFreeBSD-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.c76
-rw-r--r--sys/dev/cardbus/cardbusreg.h5
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
OpenPOWER on IntegriCloud