diff options
-rw-r--r-- | sys/dev/cardbus/cardbus.c | 374 | ||||
-rw-r--r-- | sys/dev/cardbus/cardbus_cis.c | 261 | ||||
-rw-r--r-- | sys/dev/cardbus/cardbus_cis.h | 120 | ||||
-rw-r--r-- | sys/dev/cardbus/cardbusreg.h | 82 | ||||
-rw-r--r-- | sys/dev/cardbus/cardbusvar.h | 6 | ||||
-rw-r--r-- | sys/dev/pccbb/pccbb.c | 930 | ||||
-rw-r--r-- | sys/dev/pccbb/pccbbdevid.h | 2 | ||||
-rw-r--r-- | sys/dev/pccbb/pccbbreg.h | 216 | ||||
-rw-r--r-- | sys/dev/pccbb/pccbbvar.h | 102 |
9 files changed, 1053 insertions, 1040 deletions
diff --git a/sys/dev/cardbus/cardbus.c b/sys/dev/cardbus/cardbus.c index f9527b9..02150b6 100644 --- a/sys/dev/cardbus/cardbus.c +++ b/sys/dev/cardbus/cardbus.c @@ -37,7 +37,7 @@ * Written by Jonathan Chen <jon@freebsd.org> */ -#define CARDBUS_DEBUG +#define CARDBUS_DEBUG #include <sys/param.h> #include <sys/systm.h> @@ -62,24 +62,22 @@ #include "pcib_if.h" #if defined CARDBUS_DEBUG -#define STATIC -#define DPRINTF(a) printf a -#define DEVPRINTF(x) device_printf x +#define DPRINTF(a) printf a +#define DEVPRINTF(x) device_printf x #else -#define STATIC static -#define DPRINTF(a) -#define DEVPRINTF(x) +#define DPRINTF(a) +#define DEVPRINTF(x) #endif #if !defined(lint) static const char rcsid[] = - "$FreeBSD$"; + "$FreeBSD$"; #endif struct cardbus_quirk { u_int32_t devid; /* Vendor/device of the card */ int type; -#define CARDBUS_QUIRK_MAP_REG 1 /* PCI map register in weird place */ +#define CARDBUS_QUIRK_MAP_REG 1 /* PCI map register in weird place */ int arg1; int arg2; }; @@ -88,73 +86,76 @@ struct cardbus_quirk cardbus_quirks[] = { { 0 } }; -static int cardbus_probe(device_t dev); -static int cardbus_attach(device_t dev); -static void device_setup_regs(device_t cbdev, int b, int s, int f, - pcicfgregs *cfg); -static int cardbus_attach_card(device_t dev); -static int cardbus_detach_card(device_t dev, int flags); -static struct cardbus_devinfo *cardbus_read_device(device_t pcib, - int b, int s, int f); -static void cardbus_hdrtypedata(device_t pcib, int b, int s, int f, - pcicfgregs *cfg); -static int cardbus_freecfg(struct cardbus_devinfo *dinfo); -static void cardbus_print_verbose(struct cardbus_devinfo *dinfo); -static int cardbus_set_resource(device_t dev, device_t child, int type, - int rid, u_long start, u_long count); -static int cardbus_get_resource(device_t dev, device_t child, int type, - int rid, u_long *startp, u_long *countp); -static void cardbus_delete_resource(device_t dev, device_t child, int type, - int rid); -static int cardbus_set_resource_method(device_t dev, device_t child, int type, - int rid, u_long start, u_long count); -static int cardbus_get_resource_method(device_t dev, device_t child, int type, - int rid, u_long *startp, u_long *countp); -static int cardbus_add_map(device_t bdev, device_t dev, pcicfgregs *cfg, - int reg); -static void cardbus_add_resources(device_t dev, pcicfgregs* cfg); -static void cardbus_release_all_resources(device_t dev, - struct resource_list *rl); -static struct resource* cardbus_alloc_resource(device_t self, device_t child, - int type, int* rid,u_long start, - u_long end, u_long count, - u_int flags); -static int cardbus_release_resource(device_t dev, device_t child, int type, - int rid, struct resource *r); -static int cardbus_print_resources(struct resource_list *rl, const char *name, - int type, const char *format); -static int cardbus_print_child(device_t dev, device_t child); -static void cardbus_probe_nomatch(device_t dev, device_t child); -static int cardbus_read_ivar(device_t dev, device_t child, int which, - u_long *result); -static int cardbus_write_ivar(device_t dev, device_t child, int which, - uintptr_t value); -static u_int32_t cardbus_read_config_method(device_t dev, device_t child, - int reg, int width); -static void cardbus_write_config_method(device_t dev, device_t child, int reg, - u_int32_t val, int width); +static int cardbus_probe(device_t cbdev); +static int cardbus_attach(device_t cbdev); +static int cardbus_detach(device_t cbdev); +static void device_setup_regs(device_t brdev, int b, int s, int f, + pcicfgregs *cfg); +static int cardbus_attach_card(device_t cbdev); +static int cardbus_detach_card(device_t cbdev, int flags); +static void cardbus_driver_added(device_t cbdev, driver_t *driver); +static struct cardbus_devinfo * cardbus_read_device(device_t brdev, int b, + int s, int f); +static void cardbus_hdrtypedata(device_t brdev, int b, int s, int f, + pcicfgregs *cfg); +static int cardbus_freecfg(struct cardbus_devinfo *dinfo); +static void cardbus_print_verbose(struct cardbus_devinfo *dinfo); +static int cardbus_set_resource(device_t cbdev, device_t child, int type, + int rid, u_long start, u_long count); +static int cardbus_get_resource(device_t cbdev, device_t child, int type, + int rid, u_long *startp, u_long *countp); +static void cardbus_delete_resource(device_t cbdev, device_t child, + int type, int rid); +static int cardbus_set_resource_method(device_t cbdev, device_t child, + int type, int rid, u_long start, u_long count); +static int cardbus_get_resource_method(device_t cbdev, device_t child, + int type, int rid, u_long *startp, u_long *countp); +static void cardbus_delete_resource_method(device_t cbdev, device_t child, + int type, int rid); +static int cardbus_add_map(device_t cbdev, device_t dev, pcicfgregs *cfg, + int reg); +static void cardbus_add_resources(device_t dev, pcicfgregs* cfg); +static void cardbus_release_all_resources(device_t cbdev, + struct resource_list *rl); +static struct resource* cardbus_alloc_resource(device_t cbdev, device_t child, + int type, int* rid, u_long start, u_long end, u_long count, + u_int flags); +static int cardbus_release_resource(device_t cbdev, device_t child, + int type, int rid, struct resource *r); +static int cardbus_print_resources(struct resource_list *rl, + const char *name, int type, const char *format); +static int cardbus_print_child(device_t cbdev, device_t child); +static void cardbus_probe_nomatch(device_t cbdev, device_t child); +static int cardbus_read_ivar(device_t cbdev, device_t child, int which, + u_long *result); +static int cardbus_write_ivar(device_t cbdev, device_t child, int which, + uintptr_t value); +static u_int32_t cardbus_read_config_method(device_t cbdev, + device_t child, int reg, int width); +static void cardbus_write_config_method(device_t cbdev, device_t child, + int reg, u_int32_t val, int width); /************************************************************************/ /* Probe/Attach */ /************************************************************************/ static int -cardbus_probe(device_t dev) +cardbus_probe(device_t cbdev) { - device_set_desc(dev, "Cardbus bus (newcard)"); + device_set_desc(cbdev, "Cardbus bus (newcard)"); return 0; } static int -cardbus_attach(device_t dev) +cardbus_attach(device_t cbdev) { return 0; } static int -cardbus_detach(device_t dev) +cardbus_detach(device_t cbdev) { - cardbus_detach_card(dev, DETACH_FORCE); + cardbus_detach_card(cbdev, DETACH_FORCE); return 0; } @@ -163,37 +164,37 @@ cardbus_detach(device_t dev) /************************************************************************/ static void -device_setup_regs(device_t bdev, int b, int s, int f, pcicfgregs *cfg) +device_setup_regs(device_t brdev, int b, int s, int f, pcicfgregs *cfg) { - PCIB_WRITE_CONFIG(bdev, b, s, f, PCIR_INTLINE, - pci_get_irq(device_get_parent(bdev)), 1); - cfg->intline = PCIB_READ_CONFIG(bdev, b, s, f, PCIR_INTLINE, 1); + PCIB_WRITE_CONFIG(brdev, b, s, f, PCIR_INTLINE, + pci_get_irq(device_get_parent(brdev)), 1); + cfg->intline = PCIB_READ_CONFIG(brdev, b, s, f, PCIR_INTLINE, 1); - PCIB_WRITE_CONFIG(bdev, b, s, f, PCIR_CACHELNSZ, 0x08, 1); - cfg->cachelnsz = PCIB_READ_CONFIG(bdev, b, s, f, PCIR_CACHELNSZ, 1); + PCIB_WRITE_CONFIG(brdev, b, s, f, PCIR_CACHELNSZ, 0x08, 1); + cfg->cachelnsz = PCIB_READ_CONFIG(brdev, b, s, f, PCIR_CACHELNSZ, 1); - PCIB_WRITE_CONFIG(bdev, b, s, f, PCIR_LATTIMER, 0xa8, 1); - cfg->lattimer = PCIB_READ_CONFIG(bdev, b, s, f, PCIR_LATTIMER, 1); + PCIB_WRITE_CONFIG(brdev, b, s, f, PCIR_LATTIMER, 0xa8, 1); + cfg->lattimer = PCIB_READ_CONFIG(brdev, b, s, f, PCIR_LATTIMER, 1); - PCIB_WRITE_CONFIG(bdev, b, s, f, PCIR_MINGNT, 0x14, 1); - cfg->mingnt = PCIB_READ_CONFIG(bdev, b, s, f, PCIR_MINGNT, 1); + PCIB_WRITE_CONFIG(brdev, b, s, f, PCIR_MINGNT, 0x14, 1); + cfg->mingnt = PCIB_READ_CONFIG(brdev, b, s, f, PCIR_MINGNT, 1); - PCIB_WRITE_CONFIG(bdev, b, s, f, PCIR_MAXLAT, 0x14, 1); - cfg->maxlat = PCIB_READ_CONFIG(bdev, b, s, f, PCIR_MAXLAT, 1); + PCIB_WRITE_CONFIG(brdev, b, s, f, PCIR_MAXLAT, 0x14, 1); + cfg->maxlat = PCIB_READ_CONFIG(brdev, b, s, f, PCIR_MAXLAT, 1); } static int -cardbus_attach_card(device_t dev) +cardbus_attach_card(device_t cbdev) { - device_t bdev = device_get_parent(dev); + device_t brdev = device_get_parent(cbdev); int cardattached = 0; static int curr_bus_number = 2; /* XXX EVILE BAD (see below) */ int bus, slot, func; - cardbus_detach_card(dev, DETACH_NOWARN); /* detach existing cards */ + cardbus_detach_card(cbdev, DETACH_NOWARN); /* detach existing cards */ - POWER_ENABLE_SOCKET(bdev, dev); - bus = pcib_get_bus(dev); + POWER_ENABLE_SOCKET(brdev, cbdev); + bus = pcib_get_bus(cbdev); if (bus == 0) { /* * XXX EVILE BAD XXX @@ -202,58 +203,62 @@ cardbus_attach_card(device_t dev) * works. */ bus = curr_bus_number; - pci_write_config (bdev, PCIR_SECBUS_2, curr_bus_number, 1); - pci_write_config (bdev, PCIR_SUBBUS_2, curr_bus_number+2, 1); + pci_write_config(brdev, PCIR_SECBUS_2, curr_bus_number, 1); + pci_write_config(brdev, PCIR_SUBBUS_2, curr_bus_number + 2, 1); curr_bus_number += 3; } + /* 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 = - cardbus_read_device(bdev, bus, slot, func); + cardbus_read_device(brdev, bus, slot, func); - if (dinfo == NULL) continue; + if (dinfo == NULL) + continue; if (dinfo->cfg.mfdev) cardbusfunchigh = CARDBUS_FUNCMAX; - device_setup_regs(bdev, bus, slot, func, &dinfo->cfg); + device_setup_regs(brdev, bus, slot, func, &dinfo->cfg); cardbus_print_verbose(dinfo); - dinfo->cfg.dev = device_add_child(dev, NULL, -1); + dinfo->cfg.dev = device_add_child(cbdev, NULL, -1); if (!dinfo->cfg.dev) { - DEVPRINTF((dev, "Cannot add child!\n")); + DEVPRINTF((cbdev, "Cannot add child!\n")); cardbus_freecfg(dinfo); continue; } resource_list_init(&dinfo->resources); device_set_ivars(dinfo->cfg.dev, dinfo); cardbus_add_resources(dinfo->cfg.dev, &dinfo->cfg); - cardbus_do_cis(dev, dinfo->cfg.dev); + cardbus_do_cis(cbdev, dinfo->cfg.dev); if (device_probe_and_attach(dinfo->cfg.dev) != 0) { + /* when fail, release all resources */ cardbus_release_all_resources(dinfo->cfg.dev, - &dinfo->resources); + &dinfo->resources); } else cardattached++; } } - if (cardattached > 0) return 0; - POWER_DISABLE_SOCKET(bdev, dev); + if (cardattached > 0) + return 0; + POWER_DISABLE_SOCKET(brdev, cbdev); return ENOENT; } static int -cardbus_detach_card(device_t dev, int flags) +cardbus_detach_card(device_t cbdev, int flags) { int numdevs; device_t *devlist; int tmp; - int err=0; + int err = 0; - device_get_children(dev, &devlist, &numdevs); + device_get_children(cbdev, &devlist, &numdevs); if (numdevs == 0) { if (!(flags & DETACH_NOWARN)) { - DEVPRINTF((dev, "Detaching card: no cards to detach!\n")); - POWER_DISABLE_SOCKET(device_get_parent(dev), dev); + DEVPRINTF((cbdev, "detach_card: no card to detach!\n")); + POWER_DISABLE_SOCKET(device_get_parent(cbdev), cbdev); } free(devlist, M_TEMP); return ENOENT; @@ -265,33 +270,33 @@ cardbus_detach_card(device_t dev, int flags) if (status == DS_ATTACHED || status == DS_BUSY) { if (device_detach(dinfo->cfg.dev) == 0 || - flags & DETACH_FORCE){ + flags & DETACH_FORCE) { cardbus_release_all_resources(dinfo->cfg.dev, - &dinfo->resources); - device_delete_child(dev, devlist[tmp]); + &dinfo->resources); + device_delete_child(cbdev, devlist[tmp]); } else { err++; } cardbus_freecfg(dinfo); } else { - device_delete_child(dev, devlist[tmp]); + device_delete_child(cbdev, devlist[tmp]); } } if (err == 0) - POWER_DISABLE_SOCKET(device_get_parent(dev), dev); + POWER_DISABLE_SOCKET(device_get_parent(cbdev), cbdev); free(devlist, M_TEMP); return err; } static void -cardbus_driver_added(device_t dev, driver_t *driver) +cardbus_driver_added(device_t cbdev, driver_t *driver) { int numdevs; device_t *devlist; - device_t bdev = device_get_parent(dev); + device_t brdev = device_get_parent(cbdev); int tmp, cardattached; - device_get_children(dev, &devlist, &numdevs); + device_get_children(cbdev, &devlist, &numdevs); cardattached = 0; for (tmp = 0; tmp < numdevs; tmp++) { @@ -300,25 +305,25 @@ cardbus_driver_added(device_t dev, driver_t *driver) } if (cardattached == 0) - POWER_ENABLE_SOCKET(bdev, dev); - DEVICE_IDENTIFY(driver, dev); + POWER_ENABLE_SOCKET(brdev, cbdev); + DEVICE_IDENTIFY(driver, cbdev); for (tmp = 0; tmp < numdevs; tmp++) { - if (device_get_state(devlist[tmp]) == DS_NOTPRESENT){ + if (device_get_state(devlist[tmp]) == DS_NOTPRESENT) { struct cardbus_devinfo *dinfo; dinfo = device_get_ivars(devlist[tmp]); resource_list_init(&dinfo->resources); cardbus_add_resources(dinfo->cfg.dev, &dinfo->cfg); - cardbus_do_cis(dev, dinfo->cfg.dev); + cardbus_do_cis(cbdev, dinfo->cfg.dev); if (device_probe_and_attach(dinfo->cfg.dev) != 0) { cardbus_release_all_resources(dinfo->cfg.dev, - &dinfo->resources); + &dinfo->resources); } else cardattached++; } } if (cardattached == 0) - POWER_DISABLE_SOCKET(bdev, dev); + POWER_DISABLE_SOCKET(brdev, cbdev); free(devlist, M_TEMP); } @@ -329,15 +334,15 @@ cardbus_driver_added(device_t dev, driver_t *driver) /* read configuration header into pcicfgrect structure */ static struct cardbus_devinfo * -cardbus_read_device(device_t pcib, int b, int s, int f) +cardbus_read_device(device_t brdev, int b, int s, int f) { -#define REG(n, w) PCIB_READ_CONFIG(pcib, b, s, f, n, w) +#define REG(n, w) PCIB_READ_CONFIG(brdev, b, s, f, n, w) pcicfgregs *cfg = NULL; struct cardbus_devinfo *devlist_entry = NULL; - if (PCIB_READ_CONFIG(pcib, b, s, f, PCIR_DEVVENDOR, 4) != -1) { + if (PCIB_READ_CONFIG(brdev, b, s, f, PCIR_DEVVENDOR, 4) != -1) { devlist_entry = malloc(sizeof(struct cardbus_devinfo), - M_DEVBUF, M_WAITOK | M_ZERO); + M_DEVBUF, M_WAITOK | M_ZERO); if (devlist_entry == NULL) return (NULL); @@ -397,7 +402,7 @@ cardbus_read_device(device_t pcib, int b, int s, int f) cfg->mfdev = (cfg->hdrtype & PCIM_MFDEV) != 0; cfg->hdrtype &= ~PCIM_MFDEV; - cardbus_hdrtypedata(pcib, b, s, f, cfg); + cardbus_hdrtypedata(brdev, b, s, f, cfg); devlist_entry->conf.pc_sel.pc_bus = cfg->bus; devlist_entry->conf.pc_sel.pc_dev = cfg->slot; @@ -415,15 +420,15 @@ cardbus_read_device(device_t pcib, int b, int s, int f) devlist_entry->conf.pc_revid = cfg->revid; } return (devlist_entry); -#undef REG +#undef REG } /* extract header type specific config data */ static void -cardbus_hdrtypedata(device_t pcib, int b, int s, int f, pcicfgregs *cfg) +cardbus_hdrtypedata(device_t brdev, int b, int s, int f, pcicfgregs *cfg) { -#define REG(n, w) PCIB_READ_CONFIG(pcib, b, s, f, n, w) +#define REG(n, w) PCIB_READ_CONFIG(brdev, b, s, f, n, w) switch (cfg->hdrtype) { case 0: cfg->subvendor = REG(PCIR_SUBVEND_0, 2); @@ -441,7 +446,7 @@ cardbus_hdrtypedata(device_t pcib, int b, int s, int f, pcicfgregs *cfg) cfg->nummaps = PCI_MAXMAPS_2; break; } -#undef REG +#undef REG } /* free pcicfgregs structure and all depending data structures */ @@ -461,19 +466,23 @@ cardbus_print_verbose(struct cardbus_devinfo *dinfo) pcicfgregs *cfg = &dinfo->cfg; printf("found->\tvendor=0x%04x, dev=0x%04x, revid=0x%02x\n", - cfg->vendor, cfg->device, cfg->revid); + cfg->vendor, cfg->device, cfg->revid); printf("\tclass=%02x-%02x-%02x, hdrtype=0x%02x, mfdev=%d\n", - cfg->baseclass, cfg->subclass, cfg->progif, - cfg->hdrtype, cfg->mfdev); + cfg->baseclass, cfg->subclass, cfg->progif, + cfg->hdrtype, cfg->mfdev); #ifdef CARDBUS_DEBUG - printf("\tcmdreg=0x%04x, statreg=0x%04x, cachelnsz=%d (dwords)\n", - cfg->cmdreg, cfg->statreg, cfg->cachelnsz); - printf("\tlattimer=0x%02x (%d ns), mingnt=0x%02x (%d ns), maxlat=0x%02x (%d ns)\n", - cfg->lattimer, cfg->lattimer * 30, - cfg->mingnt, cfg->mingnt * 250, cfg->maxlat, cfg->maxlat * 250); + printf("\tcmdreg=0x%04x, statreg=0x%04x, " + "cachelnsz=%d (dwords)\n", + cfg->cmdreg, cfg->statreg, cfg->cachelnsz); + printf("\tlattimer=0x%02x (%d ns), mingnt=0x%02x (%d ns), " + "maxlat=0x%02x (%d ns)\n", + cfg->lattimer, cfg->lattimer * 30, + cfg->mingnt, cfg->mingnt * 250, cfg->maxlat, + cfg->maxlat * 250); #endif /* CARDBUS_DEBUG */ if (cfg->intpin > 0) - printf("\tintpin=%c, irq=%d\n", cfg->intpin +'a' -1, cfg->intline); + printf("\tintpin=%c, irq=%d\n", + cfg->intpin + 'a' - 1, cfg->intline); } } @@ -482,20 +491,20 @@ cardbus_print_verbose(struct cardbus_devinfo *dinfo) /************************************************************************/ static int -cardbus_set_resource(device_t dev, device_t child, int type, int rid, - u_long start, u_long count) +cardbus_set_resource(device_t cbdev, device_t child, int type, int rid, + u_long start, u_long count) { struct cardbus_devinfo *dinfo = device_get_ivars(child); struct resource_list *rl = &dinfo->resources; resource_list_add(rl, type, rid, start, start + count - 1, count); - if (device_get_parent(child) == dev) + if (device_get_parent(child) == cbdev) pci_write_config(child, rid, start, 4); return 0; } static int -cardbus_get_resource(device_t dev, device_t child, int type, int rid, - u_long *startp, u_long *countp) +cardbus_get_resource(device_t cbdev, device_t child, int type, int rid, + u_long *startp, u_long *countp) { struct cardbus_devinfo *dinfo = device_get_ivars(child); struct resource_list *rl = &dinfo->resources; @@ -511,7 +520,7 @@ cardbus_get_resource(device_t dev, device_t child, int type, int rid, } static void -cardbus_delete_resource(device_t dev, device_t child, int type, int rid) +cardbus_delete_resource(device_t cbdev, device_t child, int type, int rid) { struct cardbus_devinfo *dinfo = device_get_ivars(child); struct resource_list *rl = &dinfo->resources; @@ -519,42 +528,44 @@ cardbus_delete_resource(device_t dev, device_t child, int type, int rid) rle = resource_list_find(rl, type, rid); if (rle) { if (rle->res) - bus_generic_release_resource(dev, child, type, rid, - rle->res); + bus_generic_release_resource(cbdev, child, type, rid, + rle->res); resource_list_delete(rl, type, rid); } - if (device_get_parent(child) == dev) + if (device_get_parent(child) == cbdev) pci_write_config(child, rid, 0, 4); } static int -cardbus_set_resource_method(device_t dev, device_t child, int type, int rid, - u_long start, u_long count) +cardbus_set_resource_method(device_t cbdev, device_t child, int type, int rid, + u_long start, u_long count) { int ret; - ret = cardbus_set_resource(dev, child, type, rid, start, count); - if (ret != 0) return ret; - return BUS_SET_RESOURCE(device_get_parent(dev), child, type, rid, - start, count); + ret = cardbus_set_resource(cbdev, child, type, rid, start, count); + if (ret != 0) + return ret; + return BUS_SET_RESOURCE(device_get_parent(cbdev), child, type, rid, + start, count); } static int -cardbus_get_resource_method(device_t dev, device_t child, int type, int rid, - u_long *startp, u_long *countp) +cardbus_get_resource_method(device_t cbdev, device_t child, int type, int rid, + u_long *startp, u_long *countp) { int ret; - ret = cardbus_get_resource(dev, child, type, rid, startp, countp); - if (ret != 0) return ret; - return BUS_GET_RESOURCE(device_get_parent(dev), child, type, rid, - startp, countp); + ret = cardbus_get_resource(cbdev, child, type, rid, startp, countp); + if (ret != 0) + return ret; + return BUS_GET_RESOURCE(device_get_parent(cbdev), child, type, rid, + startp, countp); } static void -cardbus_delete_resource_method(device_t dev, device_t child, - int type, int rid) +cardbus_delete_resource_method(device_t cbdev, device_t child, + int type, int rid) { - cardbus_delete_resource(dev, child, type, rid); - BUS_DELETE_RESOURCE(device_get_parent(dev), child, type, rid); + cardbus_delete_resource(cbdev, child, type, rid); + BUS_DELETE_RESOURCE(device_get_parent(cbdev), child, type, rid); } static int @@ -659,30 +670,29 @@ cardbus_add_resources(device_t dev, pcicfgregs* cfg) } static void -cardbus_release_all_resources(device_t dev, struct resource_list *rl) +cardbus_release_all_resources(device_t cbdev, struct resource_list *rl) { struct resource_list_entry *rle; SLIST_FOREACH(rle, rl, link) { if (rle->res) { - bus_generic_release_resource(device_get_parent(dev), - dev, rle->type, rle->rid, + bus_generic_release_resource(device_get_parent(cbdev), + cbdev, rle->type, rle->rid, rle->res); } } } static struct resource* -cardbus_alloc_resource(device_t self, device_t child, int type, - int* rid, u_long start, u_long end, - u_long count, u_int flags) +cardbus_alloc_resource(device_t cbdev, device_t child, int type, + int* rid, u_long start, u_long end, u_long count, u_int flags) { struct cardbus_devinfo *dinfo = device_get_ivars(child); struct resource_list *rl = &dinfo->resources; struct resource_list_entry *rle = NULL; struct resource *res; - if (device_get_parent(child) == self || child == self) + if (device_get_parent(child) == cbdev || child == cbdev) rle = resource_list_find(rl, type, *rid); if (rle) { if (flags & RF_ACTIVE) { @@ -700,26 +710,26 @@ cardbus_alloc_resource(device_t self, device_t child, int type, } return rle->res; /* XXX: check if range within start/end */ } else { - res = bus_generic_alloc_resource(self, child, type, rid, + res = bus_generic_alloc_resource(cbdev, child, type, rid, start, end, count, flags); if (res) { start = rman_get_start(res); end = rman_get_end(res); - cardbus_set_resource(self, child, type, *rid, start, + cardbus_set_resource(cbdev, child, type, *rid, start, end-start+1); rle = resource_list_find(rl, type, *rid); rle->res = res; return res; } else { - device_printf(self, "Resource Allocation Failed!\n"); + device_printf(cbdev, "Resource Allocation Failed!\n"); return NULL; } } } static int -cardbus_release_resource(device_t dev, device_t child, int type, int rid, - struct resource *r) +cardbus_release_resource(device_t cbdev, device_t child, int type, int rid, + struct resource *r) { /* * According to the PCI 2.2 spec, devices may share an address @@ -744,7 +754,7 @@ cardbus_release_resource(device_t dev, device_t child, int type, int rid, static int cardbus_print_resources(struct resource_list *rl, const char *name, - int type, const char *format) + int type, const char *format) { struct resource_list_entry *rle; int printed, retval; @@ -763,7 +773,7 @@ cardbus_print_resources(struct resource_list *rl, const char *name, if (rle->count > 1) { retval += printf("-"); retval += printf(format, rle->start + - rle->count - 1); + rle->count - 1); } } } @@ -771,7 +781,7 @@ cardbus_print_resources(struct resource_list *rl, const char *name, } static int -cardbus_print_child(device_t dev, device_t child) +cardbus_print_child(device_t cbdev, device_t child) { struct cardbus_devinfo *dinfo; struct resource_list *rl; @@ -782,29 +792,31 @@ cardbus_print_child(device_t dev, device_t child) cfg = &dinfo->cfg; rl = &dinfo->resources; - retval += bus_print_child_header(dev, child); + retval += bus_print_child_header(cbdev, child); retval += cardbus_print_resources(rl, "port", SYS_RES_IOPORT, "%#lx"); retval += cardbus_print_resources(rl, "mem", SYS_RES_MEMORY, "%#lx"); retval += cardbus_print_resources(rl, "irq", SYS_RES_IRQ, "%ld"); - if (device_get_flags(dev)) - retval += printf(" flags %#x", device_get_flags(dev)); + if (device_get_flags(cbdev)) + retval += printf(" flags %#x", device_get_flags(cbdev)); retval += printf(" at device %d.%d", pci_get_slot(child), - pci_get_function(child)); + pci_get_function(child)); - retval += bus_print_child_footer(dev, child); + retval += bus_print_child_footer(cbdev, child); return (retval); } -static void cardbus_probe_nomatch(device_t dev, device_t child) { +static void +cardbus_probe_nomatch(device_t cbdev, device_t child) +{ struct cardbus_devinfo *dinfo; pcicfgregs *cfg; dinfo = device_get_ivars(child); cfg = &dinfo->cfg; - device_printf(dev, "<unknown card>"); + device_printf(cbdev, "<unknown card>"); printf(" (vendor=0x%04x, dev=0x%04x)", cfg->vendor, cfg->device); printf(" at %d.%d", pci_get_slot(child), pci_get_function(child)); if (cfg->intpin > 0 && cfg->intline != 255) { @@ -816,7 +828,7 @@ static void cardbus_probe_nomatch(device_t dev, device_t child) { } static int -cardbus_read_ivar(device_t dev, device_t child, int which, u_long *result) +cardbus_read_ivar(device_t cbdev, device_t child, int which, u_long *result) { struct cardbus_devinfo *dinfo; pcicfgregs *cfg; @@ -874,7 +886,7 @@ cardbus_read_ivar(device_t dev, device_t child, int which, u_long *result) } static int -cardbus_write_ivar(device_t dev, device_t child, int which, uintptr_t value) +cardbus_write_ivar(device_t cbdev, device_t child, int which, uintptr_t value) { struct cardbus_devinfo *dinfo; pcicfgregs *cfg; @@ -909,26 +921,24 @@ cardbus_write_ivar(device_t dev, device_t child, int which, uintptr_t value) /************************************************************************/ static u_int32_t -cardbus_read_config_method(device_t dev, device_t child, int reg, int width) +cardbus_read_config_method(device_t cbdev, device_t child, int reg, int width) { struct cardbus_devinfo *dinfo = device_get_ivars(child); pcicfgregs *cfg = &dinfo->cfg; - return PCIB_READ_CONFIG(device_get_parent(dev), - cfg->bus, cfg->slot, cfg->func, - reg, width); + return PCIB_READ_CONFIG(device_get_parent(cbdev), + cfg->bus, cfg->slot, cfg->func, reg, width); } static void -cardbus_write_config_method(device_t dev, device_t child, int reg, - u_int32_t val, int width) +cardbus_write_config_method(device_t cbdev, device_t child, int reg, + u_int32_t val, int width) { struct cardbus_devinfo *dinfo = device_get_ivars(child); pcicfgregs *cfg = &dinfo->cfg; - PCIB_WRITE_CONFIG(device_get_parent(dev), - cfg->bus, cfg->slot, cfg->func, - reg, val, width); + PCIB_WRITE_CONFIG(device_get_parent(cbdev), + cfg->bus, cfg->slot, cfg->func, reg, val, width); } static device_method_t cardbus_methods[] = { diff --git a/sys/dev/cardbus/cardbus_cis.c b/sys/dev/cardbus/cardbus_cis.c index 492b5ce..883beb8 100644 --- a/sys/dev/cardbus/cardbus_cis.c +++ b/sys/dev/cardbus/cardbus_cis.c @@ -32,7 +32,7 @@ * CIS Handling for the Cardbus Bus */ -#define CARDBUS_DEBUG +#define CARDBUS_DEBUG #include <sys/param.h> #include <sys/systm.h> @@ -52,65 +52,62 @@ #include "card_if.h" #if defined CARDBUS_DEBUG -#define STATIC -#define DPRINTF(a) printf a -#define DEVPRINTF(x) device_printf x +#define DPRINTF(a) printf a +#define DEVPRINTF(x) device_printf x #else -#define STATIC static -#define DPRINTF(a) -#define DEVPRINTF(x) +#define DPRINTF(a) +#define DEVPRINTF(x) #endif #if !defined(lint) static const char rcsid[] = - "$FreeBSD$"; + "$FreeBSD$"; #endif -struct tuple_callbacks; - -static int cardbus_read_tuple_conf(device_t dev, device_t child, - u_int32_t *start, u_int32_t *off, - int *tupleid, int *len, u_int8_t *tupledata); -static int cardbus_read_tuple_exrom(device_t dev, struct resource *mem, - u_int32_t *start, u_int32_t *off, - int *tupleid, int *len, u_int8_t *tupledata); -static int cardbus_read_tuple_mem(device_t dev, device_t child, u_int32_t *start, - u_int32_t *off, int *tupleid, int *len, - u_int8_t *tupledata); -static int cardbus_read_tuple(device_t dev, device_t child, u_int32_t *start, - u_int32_t *off, int *tupleid, int *len, - u_int8_t *tupledata); -static int decode_tuple(device_t dev, device_t child, int tupleid, int len, - u_int8_t *tupledata, u_int32_t *start, u_int32_t *off, - struct tuple_callbacks *callbacks); -static int cardbus_parse_cis(device_t dev, device_t child, - struct tuple_callbacks *callbacks); - -#define DECODE_PARAMS \ - (device_t dev, device_t child, int id, int len, \ +#define DECODE_PARAMS \ + (device_t cbdev, device_t child, int id, int len, \ u_int8_t *tupledata, u_int32_t *start, u_int32_t *off, \ struct tuple_callbacks *info) -#define DECODE_PROTOTYPE(NAME) static int decode_tuple_ ## NAME DECODE_PARAMS + +struct tuple_callbacks { + int id; + char *name; + int (*func) DECODE_PARAMS; +}; + +#define DECODE_PROTOTYPE(NAME) static int decode_tuple_ ## NAME DECODE_PARAMS DECODE_PROTOTYPE(generic); DECODE_PROTOTYPE(nothing); DECODE_PROTOTYPE(copy); -DECODE_PROTOTYPE(bar); DECODE_PROTOTYPE(linktarget); DECODE_PROTOTYPE(vers_1); -DECODE_PROTOTYPE(manfid); DECODE_PROTOTYPE(funcid); +DECODE_PROTOTYPE(manfid); DECODE_PROTOTYPE(funce); -DECODE_PROTOTYPE(end); +DECODE_PROTOTYPE(bar); DECODE_PROTOTYPE(unhandled); - -struct tuple_callbacks { - int id; - char* name; - int (*func) DECODE_PARAMS; -}; -#define MAKETUPLE(NAME,FUNC) { CISTPL_ ## NAME, #NAME, decode_tuple_ ## FUNC } - -static char* funcnames[] = { +DECODE_PROTOTYPE(end); +static int cardbus_read_tuple_conf(device_t cbdev, device_t child, + u_int32_t *start, u_int32_t *off, int *tupleid, int *len, + u_int8_t *tupledata); +static int cardbus_read_tuple_exrom(device_t cbdev, struct resource *mem, + u_int32_t *start, u_int32_t *off, int *tupleid, int *len, + u_int8_t *tupledata); +static int cardbus_read_tuple_mem(device_t cbdev, device_t child, + u_int32_t *start, u_int32_t *off, int *tupleid, int *len, + u_int8_t *tupledata); +static int cardbus_read_tuple(device_t cbdev, device_t child, + u_int32_t *start, u_int32_t *off, int *tupleid, int *len, + u_int8_t *tupledata); +static int decode_tuple(device_t cbdev, device_t child, int tupleid, + int len, u_int8_t *tupledata, u_int32_t *start, + u_int32_t *off, struct tuple_callbacks *callbacks); +static int cardbus_parse_cis(device_t cbdev, device_t child, + struct tuple_callbacks *callbacks); + +#define MAKETUPLE(NAME,FUNC) { CISTPL_ ## NAME, #NAME, decode_tuple_ ## FUNC } + +static char *funcnames[] = { "Multi-Functioned", "Memory", "Serial Port", @@ -123,25 +120,29 @@ static char* funcnames[] = { "Security" }; -static struct cis_tupleinfo* cisread_buf; +static struct cis_tupleinfo *cisread_buf; static int ncisread_buf; +/* + * Handler functions for various CIS tuples + */ + DECODE_PROTOTYPE(generic) { #ifdef CARDBUS_DEBUG int i; if (info) - printf ("TUPLE: %s [%d]:", info->name, len); + printf("TUPLE: %s [%d]:", info->name, len); else - printf ("TUPLE: Unknown(0x%02x) [%d]:", id, len); + printf("TUPLE: Unknown(0x%02x) [%d]:", id, len); for (i = 0; i < len; i++) { if (i % 0x10 == 0 && len > 0x10) - printf ("\n 0x%02x:", i); - printf (" %02x", tupledata[i]); + printf("\n 0x%02x:", i); + printf(" %02x", tupledata[i]); } - printf ("\n"); + printf("\n"); #endif return 0; } @@ -153,13 +154,13 @@ DECODE_PROTOTYPE(nothing) DECODE_PROTOTYPE(copy) { - struct cis_tupleinfo* tmpbuf; + struct cis_tupleinfo *tmpbuf; - tmpbuf = malloc(sizeof(struct cis_tupleinfo)*(ncisread_buf+1), - M_DEVBUF, M_WAITOK); + tmpbuf = malloc(sizeof(struct cis_tupleinfo) * (ncisread_buf+1), + M_DEVBUF, M_WAITOK); if (ncisread_buf > 0) { memcpy(tmpbuf, cisread_buf, - sizeof(struct cis_tupleinfo)*ncisread_buf); + sizeof(struct cis_tupleinfo) * ncisread_buf); free(cisread_buf, M_DEVBUF); } cisread_buf = tmpbuf; @@ -167,7 +168,7 @@ DECODE_PROTOTYPE(copy) cisread_buf[ncisread_buf].id = id; cisread_buf[ncisread_buf].len = len; cisread_buf[ncisread_buf].data = malloc(len, M_DEVBUF, M_WAITOK); - memcpy (cisread_buf[ncisread_buf].data, tupledata, len); + memcpy(cisread_buf[ncisread_buf].data, tupledata, len); ncisread_buf++; return 0; } @@ -177,20 +178,20 @@ DECODE_PROTOTYPE(linktarget) #ifdef CARDBUS_DEBUG int i; - printf ("TUPLE: %s [%d]:", info->name, len); + printf("TUPLE: %s [%d]:", info->name, len); for (i = 0; i < len; i++) { if (i % 0x10 == 0 && len > 0x10) - printf ("\n 0x%02x:", i); - printf (" %02x", tupledata[i]); + printf("\n 0x%02x:", i); + printf(" %02x", tupledata[i]); } - printf ("\n"); + printf("\n"); #endif if (len != 3 || tupledata[0] != 'C' || tupledata[1] != 'I' || tupledata[2] != 'S') { printf("Invalid data for CIS Link Target!\n"); - decode_tuple_generic(dev, child, id, len, tupledata, - start, off, info); + decode_tuple_generic(cbdev, child, id, len, tupledata, + start, off, info); return EINVAL; } return 0; @@ -203,7 +204,7 @@ DECODE_PROTOTYPE(vers_1) printf("Product name: "); for (i = 2; i < len; i++) { if (tupledata[i] == '\0') - printf (" | "); + printf(" | "); else if (tupledata[i] == 0xff) break; else @@ -216,24 +217,25 @@ DECODE_PROTOTYPE(vers_1) DECODE_PROTOTYPE(funcid) { int i; - int numnames = sizeof(funcnames)/sizeof(funcnames[0]); + int numnames = sizeof(funcnames) / sizeof(funcnames[0]); printf("Functions: "); - for(i = 0; i < len; i++) { + for (i = 0; i < len; i++) { if (tupledata[i] < numnames) - printf ("%s", funcnames[tupledata[i]]); + printf("%s", funcnames[tupledata[i]]); else - printf ("Unknown(%d)", tupledata[i]); - if (i < len-1) printf(", "); + printf("Unknown(%d)", tupledata[i]); + if (i < len-1) + printf(", "); } - printf ("\n"); + printf("\n"); return 0; } DECODE_PROTOTYPE(manfid) { int i; - printf ("Manufacturer ID: "); + printf("Manufacturer ID: "); for (i = 0; i < len; i++) printf("%02x", tupledata[i]); printf("\n"); @@ -243,7 +245,7 @@ DECODE_PROTOTYPE(manfid) DECODE_PROTOTYPE(funce) { int i; - printf ("Function Extension: "); + printf("Function Extension: "); for (i = 0; i < len; i++) printf("%02x", tupledata[i]); printf("\n"); @@ -253,7 +255,7 @@ DECODE_PROTOTYPE(funce) DECODE_PROTOTYPE(bar) { if (len != 6) { - printf ("*** ERROR *** BAR length not 6 (%d)\n", len); + printf("*** ERROR *** BAR length not 6 (%d)\n", len); return EINVAL; } else { int type; @@ -263,25 +265,26 @@ DECODE_PROTOTYPE(bar) struct resource *res; reg = *(u_int16_t*)tupledata; - len = *(u_int32_t*)(tupledata+2); + len = *(u_int32_t*)(tupledata + 2); if (reg & TPL_BAR_REG_AS) { type = SYS_RES_IOPORT; } else { type = SYS_RES_MEMORY; } bar = (reg & TPL_BAR_REG_ASI_MASK) - 1; - if (bar < 0 || bar > 5 || (type == SYS_RES_IOPORT && bar == 5)) { - device_printf(dev, "Invalid BAR number: %02x(%02x)\n", - reg, bar); + if (bar < 0 || bar > 5 || + (type == SYS_RES_IOPORT && bar == 5)) { + device_printf(cbdev, "Invalid BAR number: %02x(%02x)\n", + reg, bar); return 0; } bar = CARDBUS_BASE0_REG + bar * 4; - DEVPRINTF((dev, "Opening BAR: type=%s, bar=%02x, len=%04x\n", - (type==SYS_RES_MEMORY)?"MEM":"IO", bar, len)); + DEVPRINTF((cbdev, "Opening BAR: type=%s, bar=%02x, len=%04x\n", + (type==SYS_RES_MEMORY)?"MEM":"IO", bar, len)); res = bus_generic_alloc_resource(child, child, type, &bar, 0, - ~0, len, rman_make_alignment_flags(len) | RF_ACTIVE); + ~0, len, rman_make_alignment_flags(len) | RF_ACTIVE); if (res == NULL) { - device_printf(dev, "Cannot allocate BAR %02x\n", bar); + device_printf(cbdev, "Cannot allocate BAR %02x\n", bar); } } return 0; @@ -289,7 +292,7 @@ DECODE_PROTOTYPE(bar) DECODE_PROTOTYPE(unhandled) { - printf ("TUPLE: %s [%d] is unhandled! Bailing...", info->name, len); + printf("TUPLE: %s [%d] is unhandled! Bailing...", info->name, len); return -1; } @@ -299,10 +302,13 @@ DECODE_PROTOTYPE(end) return 0; } +/* + * Functions to read the a tuple from the card + */ + static int -cardbus_read_tuple_conf(device_t dev, device_t child, u_int32_t *start, - u_int32_t *off, int *tupleid, int *len, - u_int8_t *tupledata) +cardbus_read_tuple_conf(device_t cbdev, device_t child, u_int32_t *start, + u_int32_t *off, int *tupleid, int *len, u_int8_t *tupledata) { int i, j; u_int32_t e; @@ -310,8 +316,8 @@ cardbus_read_tuple_conf(device_t dev, device_t child, u_int32_t *start, loc = CARDBUS_CIS_ADDR(*start) + *off; - e = pci_read_config(child, loc - loc%4, 4); - for (j = loc % 4; j>0; j--) + e = pci_read_config(child, loc - loc % 4, 4); + for (j = loc % 4; j > 0; j--) e >>= 8; *len = 0; for (i = loc, j = -2; j < *len; j++, i++) { @@ -325,17 +331,15 @@ cardbus_read_tuple_conf(device_t dev, device_t child, u_int32_t *start, tupledata[j] = 0xff & e; e >>= 8; } - *off += *len+2; + *off += *len + 2; return 0; } - static int -cardbus_read_tuple_exrom(device_t dev, struct resource *mem, u_int32_t *start, - u_int32_t *off, int *tupleid, int *len, - u_int8_t *tupledata) +cardbus_read_tuple_exrom(device_t cbdev, struct resource *mem, u_int32_t *start, + u_int32_t *off, int *tupleid, int *len, u_int8_t *tupledata) { -#define READROM(rom, type, offset) \ +#define READROM(rom, type, offset) \ (*((u_int ## type ##_t *)(((unsigned char*)rom) + offset))) int romnum = 0; @@ -348,7 +352,7 @@ cardbus_read_tuple_exrom(device_t dev, struct resource *mem, u_int32_t *start, imagenum = CARDBUS_CIS_ASI_ROM_IMAGE(*start); do { if (READROM(image, 16, CARDBUS_EXROM_SIGNATURE) != 0xaa55) { - device_printf (dev, "Bad header in rom %d: %04x\n", + device_printf(cbdev, "Bad header in rom %d: %04x\n", romnum, *(u_int16_t*)(image + CARDBUS_EXROM_SIGNATURE)); return ENXIO; @@ -376,15 +380,14 @@ cardbus_read_tuple_exrom(device_t dev, struct resource *mem, u_int32_t *start, image += imagesize; romnum++; } while ((READROM(data, 8, CARDBUS_EXROM_DATA_INDICATOR) & 0x80) == 0); - device_printf(dev, "Cannot read CIS: Not enough images of rom\n"); + device_printf(cbdev, "Cannot read CIS: Not enough images of rom\n"); return ENOENT; #undef READROM } static int -cardbus_read_tuple_mem(device_t dev, device_t child, u_int32_t *start, - u_int32_t *off, int *tupleid, int *len, - u_int8_t *tupledata) +cardbus_read_tuple_mem(device_t cbdev, device_t child, u_int32_t *start, + u_int32_t *off, int *tupleid, int *len, u_int8_t *tupledata) { struct resource *mem; bus_space_tag_t bt; @@ -403,12 +406,12 @@ cardbus_read_tuple_mem(device_t dev, device_t child, u_int32_t *start, bt = rman_get_bustag(mem); bh = rman_get_bushandle(mem); if (mem == NULL) { - device_printf(dev, "Failed to get memory for CIS reading\n"); + device_printf(cbdev, "Failed to get memory for CIS reading\n"); return ENOMEM; } if(CARDBUS_CIS_SPACE(*start) == CARDBUS_CIS_ASI_ROM) { - ret = cardbus_read_tuple_exrom(dev, mem, start, off, tupleid, + ret = cardbus_read_tuple_exrom(cbdev, mem, start, off, tupleid, len, tupledata); } else { *tupleid = bus_space_read_1(bt, bh, @@ -426,14 +429,13 @@ cardbus_read_tuple_mem(device_t dev, device_t child, u_int32_t *start, } static int -cardbus_read_tuple(device_t dev, device_t child, u_int32_t *start, - u_int32_t *off, int *tupleid, int *len, - u_int8_t *tupledata) +cardbus_read_tuple(device_t cbdev, device_t child, u_int32_t *start, + u_int32_t *off, int *tupleid, int *len, u_int8_t *tupledata) { switch(CARDBUS_CIS_SPACE(*start)) { case CARDBUS_CIS_ASI_TUPLE: - return cardbus_read_tuple_conf(dev, child, start, off, - tupleid, len, tupledata); + return cardbus_read_tuple_conf(cbdev, child, start, off, + tupleid, len, tupledata); case CARDBUS_CIS_ASI_BAR0: case CARDBUS_CIS_ASI_BAR1: case CARDBUS_CIS_ASI_BAR2: @@ -441,40 +443,43 @@ cardbus_read_tuple(device_t dev, device_t child, u_int32_t *start, case CARDBUS_CIS_ASI_BAR4: case CARDBUS_CIS_ASI_BAR5: case CARDBUS_CIS_ASI_ROM: - return cardbus_read_tuple_mem(dev, child, start, off, - tupleid, len, tupledata); + return cardbus_read_tuple_mem(cbdev, child, start, off, + tupleid, len, tupledata); default: - device_printf(dev, "Unable to read CIS: Unknown space: %d\n", - CARDBUS_CIS_SPACE(*start)); + device_printf(cbdev, "Unable to read CIS: Unknown space: %d\n", + CARDBUS_CIS_SPACE(*start)); return EINVAL; } } +/* + * Dispatch the right handler function per tuple + */ + static int -decode_tuple(device_t dev, device_t child, int tupleid, int len, - u_int8_t *tupledata, u_int32_t *start, u_int32_t *off, - struct tuple_callbacks *callbacks) +decode_tuple(device_t cbdev, device_t child, int tupleid, int len, + u_int8_t *tupledata, u_int32_t *start, u_int32_t *off, + struct tuple_callbacks *callbacks) { int i; for (i = 0; callbacks[i].id != CISTPL_GENERIC; i++) { if (tupleid == callbacks[i].id) - return callbacks[i].func(dev, child, tupleid, len, - tupledata, start, off, - &callbacks[i]); + return callbacks[i].func(cbdev, child, tupleid, len, + tupledata, start, off, &callbacks[i]); } if (tupleid < CISTPL_CUSTOMSTART) { - device_printf(dev, "Undefined tuple encountered, CIS parsing terminated\n"); + device_printf(cbdev, "Undefined tuple encountered, " + "CIS parsing terminated\n"); return EINVAL; } - return callbacks[i].func(dev, child, tupleid, len, - tupledata, start, off, - NULL); + return callbacks[i].func(cbdev, child, tupleid, len, + tupledata, start, off, NULL); } static int -cardbus_parse_cis(device_t dev, device_t child, - struct tuple_callbacks *callbacks) +cardbus_parse_cis(device_t cbdev, device_t child, + struct tuple_callbacks *callbacks) { u_int8_t tupledata[MAXTUPLESIZE]; int tupleid; @@ -487,15 +492,15 @@ cardbus_parse_cis(device_t dev, device_t child, start = pci_read_config(child, CARDBUS_CIS_REG, 4); off = 0; do { - cardbus_read_tuple(dev, child, &start, &off, &tupleid, &len, + cardbus_read_tuple(cbdev, child, &start, &off, &tupleid, &len, tupledata); if (expect_linktarget && tupleid != CISTPL_LINKTARGET) { - device_printf(dev, "Expecting link target, got 0x%x\n", - tupleid); + device_printf(cbdev, "Expecting link target, got 0x%x\n", + tupleid); return EINVAL; } - expect_linktarget = decode_tuple(dev, child, tupleid, len, + expect_linktarget = decode_tuple(cbdev, child, tupleid, len, tupledata, &start, &off, callbacks); if (expect_linktarget != 0) @@ -505,8 +510,8 @@ cardbus_parse_cis(device_t dev, device_t child, } int -cardbus_cis_read(device_t dev, device_t child, u_int8_t id, - struct cis_tupleinfo** buff, int* nret) +cardbus_cis_read(device_t cbdev, device_t child, u_int8_t id, + struct cis_tupleinfo **buff, int *nret) { struct tuple_callbacks cisread_callbacks[] = { MAKETUPLE(NULL, nothing), @@ -558,7 +563,7 @@ cardbus_cis_read(device_t dev, device_t child, u_int8_t id, cisread_callbacks[0].func = decode_tuple_copy; ncisread_buf = 0; cisread_buf = NULL; - ret = cardbus_parse_cis(dev, child, cisread_callbacks); + ret = cardbus_parse_cis(cbdev, child, cisread_callbacks); *buff = cisread_buf; *nret = ncisread_buf; @@ -566,7 +571,7 @@ cardbus_cis_read(device_t dev, device_t child, u_int8_t id, } void -cardbus_cis_free(device_t dev, struct cis_tupleinfo *buff, int* nret) +cardbus_cis_free(device_t cbdev, struct cis_tupleinfo *buff, int* nret) { int i; for (i = 0; i < *nret; i++) @@ -576,7 +581,7 @@ cardbus_cis_free(device_t dev, struct cis_tupleinfo *buff, int* nret) } int -cardbus_do_cis(device_t dev, device_t child) +cardbus_do_cis(device_t cbdev, device_t child) { struct tuple_callbacks init_callbacks[] = { MAKETUPLE(NULL, generic), @@ -619,5 +624,5 @@ cardbus_do_cis(device_t dev, device_t child) MAKETUPLE(END, end), MAKETUPLE(GENERIC, generic), }; - return cardbus_parse_cis(dev, child, init_callbacks); + return cardbus_parse_cis(cbdev, child, init_callbacks); } diff --git a/sys/dev/cardbus/cardbus_cis.h b/sys/dev/cardbus/cardbus_cis.h index f884eef..ca21090 100644 --- a/sys/dev/cardbus/cardbus_cis.h +++ b/sys/dev/cardbus/cardbus_cis.h @@ -34,74 +34,74 @@ struct cis_tupleinfo; -int cardbus_do_cis(device_t dev, device_t child); -int cardbus_cis_read(device_t dev, device_t child, u_int8_t id, - struct cis_tupleinfo** buff, int* nret); -void cardbus_cis_free(device_t dev, struct cis_tupleinfo *buff, int* nret); +int cardbus_do_cis(device_t, device_t); +int cardbus_cis_read(device_t, device_t, u_int8_t, struct cis_tupleinfo**, + int*); +void cardbus_cis_free(device_t, struct cis_tupleinfo*, int*); -#define MAXTUPLESIZE 0x400 +#define MAXTUPLESIZE 0x400 /* CIS TUPLES */ -#define CISTPL_NULL 0x00 -#define CISTPL_DEVICE 0x01 -#define CISTPL_LONG_LINK_CB 0x02 -#define CISTPL_INDIRECT 0x03 -#define CISTPL_CONFIG_CB 0x04 -#define CISTPL_CFTABLE_ENTRY_CB 0x05 -#define CISTPL_LONGLINK_MFC 0x06 -#define CISTPL_BAR 0x07 -#define CISTPL_PWR_MGMNT 0x08 -#define CISTPL_EXTDEVICE 0x09 -#define CISTPL_CHECKSUM 0x10 -#define CISTPL_LONGLINK_A 0x11 -#define CISTPL_LONGLINK_C 0x12 -#define CISTPL_LINKTARGET 0x13 -#define CISTPL_NO_LINK 0x14 -#define CISTPL_VERS_1 0x15 -#define CISTPL_ALTSTR 0x16 -#define CISTPL_DEVICE_A 0x17 -#define CISTPL_JEDEC_C 0x18 -#define CISTPL_JEDEC_A 0x19 -#define CISTPL_CONFIG 0x1A -#define CISTPL_CFTABLE_ENTRY 0x1B -#define CISTPL_DEVICE_OC 0x1C -#define CISTPL_DEVICE_OA 0x1D -#define CISTPL_DEVICE_GEO 0x1E -#define CISTPL_DEVICE_GEO_A 0x1F -#define CISTPL_MANFID 0x20 -#define CISTPL_FUNCID 0x21 -#define CISTPL_FUNCE 0x22 -#define CISTPL_SWIL 0x23 -#define CISTPL_VERS_2 0x40 -#define CISTPL_FORMAT 0x41 -#define CISTPL_GEOMETRY 0x42 -#define CISTPL_BYTEORDER 0x43 -#define CISTPL_DATE 0x44 -#define CISTPL_BATTERY 0x45 -#define CISTPL_ORG 0x46 -#define CISTPL_CUSTOMSTART 0x80 -#define CISTPL_END 0xFF +#define CISTPL_NULL 0x00 +#define CISTPL_DEVICE 0x01 +#define CISTPL_LONG_LINK_CB 0x02 +#define CISTPL_INDIRECT 0x03 +#define CISTPL_CONFIG_CB 0x04 +#define CISTPL_CFTABLE_ENTRY_CB 0x05 +#define CISTPL_LONGLINK_MFC 0x06 +#define CISTPL_BAR 0x07 +#define CISTPL_PWR_MGMNT 0x08 +#define CISTPL_EXTDEVICE 0x09 +#define CISTPL_CHECKSUM 0x10 +#define CISTPL_LONGLINK_A 0x11 +#define CISTPL_LONGLINK_C 0x12 +#define CISTPL_LINKTARGET 0x13 +#define CISTPL_NO_LINK 0x14 +#define CISTPL_VERS_1 0x15 +#define CISTPL_ALTSTR 0x16 +#define CISTPL_DEVICE_A 0x17 +#define CISTPL_JEDEC_C 0x18 +#define CISTPL_JEDEC_A 0x19 +#define CISTPL_CONFIG 0x1A +#define CISTPL_CFTABLE_ENTRY 0x1B +#define CISTPL_DEVICE_OC 0x1C +#define CISTPL_DEVICE_OA 0x1D +#define CISTPL_DEVICE_GEO 0x1E +#define CISTPL_DEVICE_GEO_A 0x1F +#define CISTPL_MANFID 0x20 +#define CISTPL_FUNCID 0x21 +#define CISTPL_FUNCE 0x22 +#define CISTPL_SWIL 0x23 +#define CISTPL_VERS_2 0x40 +#define CISTPL_FORMAT 0x41 +#define CISTPL_GEOMETRY 0x42 +#define CISTPL_BYTEORDER 0x43 +#define CISTPL_DATE 0x44 +#define CISTPL_BATTERY 0x45 +#define CISTPL_ORG 0x46 +#define CISTPL_CUSTOMSTART 0x80 +#define CISTPL_END 0xFF -#define CISTPL_GENERIC -1 /* catchall */ +#define CISTPL_GENERIC -1 /* catchall */ /* BAR */ -#define TPL_BAR_REG_ASI_MASK 0x07 -#define TPL_BAR_REG_AS 0x10 +#define TPL_BAR_REG_ASI_MASK 0x07 +#define TPL_BAR_REG_AS 0x10 /* CISTPL_FUNC */ -#define TPL_FUNC_MF 0 /* multi function tuple */ -#define TPL_FUNC_MEM 1 /* memory */ -#define TPL_FUNC_SERIAL 2 /* serial, including modem and fax */ -#define TPL_FUNC_PARALLEL 3 /* parallel, including printer and SCSI */ -#define TPL_FUNC_DISK 4 /* Disk */ -#define TPL_FUNC_VIDEO 5 /* Video Adaptor */ -#define TPL_FUNC_LAN 6 /* LAN Adaptor */ -#define TPL_FUNC_AIMS 7 /* Auto Inclement Mass Strages */ +#define TPL_FUNC_MF 0 /* multi function tuple */ +#define TPL_FUNC_MEM 1 /* memory */ +#define TPL_FUNC_SERIAL 2 /* serial, including modem and fax */ +#define TPL_FUNC_PARALLEL 3 /* parallel, including printer and SCSI */ +#define TPL_FUNC_DISK 4 /* Disk */ +#define TPL_FUNC_VIDEO 5 /* Video Adaptor */ +#define TPL_FUNC_LAN 6 /* LAN Adaptor */ +#define TPL_FUNC_AIMS 7 /* Auto Inclement Mass Strages */ /* TPL_FUNC_LAN */ -#define TPL_FUNCE_LAN_TECH 1 /* technology */ -#define TPL_FUNCE_LAN_SPEED 2 /* speed */ -#define TPL_FUNCE_LAN_MEDIA 2 /* which media do you use? */ -#define TPL_FUNCE_LAN_NID 4 /* node id (address) */ -#define TPL_FUNCE_LAN_CONN 5 /* connector type (shape) */ +#define TPL_FUNCE_LAN_TECH 1 /* technology */ +#define TPL_FUNCE_LAN_SPEED 2 /* speed */ +#define TPL_FUNCE_LAN_MEDIA 2 /* which media do you use? */ +#define TPL_FUNCE_LAN_NID 4 /* node id (address) */ +#define TPL_FUNCE_LAN_CONN 5 /* connector type (shape) */ diff --git a/sys/dev/cardbus/cardbusreg.h b/sys/dev/cardbus/cardbusreg.h index 95e7302..ec3157e 100644 --- a/sys/dev/cardbus/cardbusreg.h +++ b/sys/dev/cardbus/cardbusreg.h @@ -34,58 +34,58 @@ /* Cardbus bus constants */ -#define CARDBUS_SLOTMAX 0 -#define CARDBUS_FUNCMAX 7 +#define CARDBUS_SLOTMAX 0 +#define CARDBUS_FUNCMAX 7 /* Cardbus configuration header registers */ -#define CARDBUS_BASE0_REG 0x10 -#define CARDBUS_BASE1_REG 0x14 -#define CARDBUS_BASE2_REG 0x18 -#define CARDBUS_BASE3_REG 0x1C -#define CARDBUS_BASE4_REG 0x20 -#define CARDBUS_BASE5_REG 0x24 -#define CARDBUS_CIS_REG 0x28 -# define CARDBUS_CIS_ASIMASK 0x07 -# define CARDBUS_CIS_ADDRMASK 0x0ffffff8 -# define CARDBUS_CIS_ASI_TUPLE 0x00 -# define CARDBUS_CIS_ASI_BAR0 0x01 -# define CARDBUS_CIS_ASI_BAR1 0x02 -# define CARDBUS_CIS_ASI_BAR2 0x03 -# define CARDBUS_CIS_ASI_BAR3 0x04 -# define CARDBUS_CIS_ASI_BAR4 0x05 -# define CARDBUS_CIS_ASI_BAR5 0x06 -# define CARDBUS_CIS_ASI_ROM 0x07 -#define CARDBUS_ROM_REG 0x30 -# define CARDBUS_ROM_ENABLE 0x00000001 -# define CARDBUS_ROM_ADDRMASK 0xfffff800 +#define CARDBUS_BASE0_REG 0x10 +#define CARDBUS_BASE1_REG 0x14 +#define CARDBUS_BASE2_REG 0x18 +#define CARDBUS_BASE3_REG 0x1C +#define CARDBUS_BASE4_REG 0x20 +#define CARDBUS_BASE5_REG 0x24 +#define CARDBUS_CIS_REG 0x28 +# define CARDBUS_CIS_ASIMASK 0x07 +# define CARDBUS_CIS_ADDRMASK 0x0ffffff8 +# define CARDBUS_CIS_ASI_TUPLE 0x00 +# define CARDBUS_CIS_ASI_BAR0 0x01 +# define CARDBUS_CIS_ASI_BAR1 0x02 +# define CARDBUS_CIS_ASI_BAR2 0x03 +# define CARDBUS_CIS_ASI_BAR3 0x04 +# define CARDBUS_CIS_ASI_BAR4 0x05 +# define CARDBUS_CIS_ASI_BAR5 0x06 +# define CARDBUS_CIS_ASI_ROM 0x07 +#define CARDBUS_ROM_REG 0x30 +# define CARDBUS_ROM_ENABLE 0x00000001 +# define CARDBUS_ROM_ADDRMASK 0xfffff800 /* EXROM offsets for reading CIS */ -#define CARDBUS_EXROM_SIGNATURE 0x00 -#define CARDBUS_EXROM_DATA_PTR 0x18 +#define CARDBUS_EXROM_SIGNATURE 0x00 +#define CARDBUS_EXROM_DATA_PTR 0x18 -#define CARDBUS_EXROM_DATA_SIGNATURE 0x00 /* Signature ("PCIR") */ -#define CARDBUS_EXROM_DATA_VENDOR_ID 0x04 /* Vendor Identification */ -#define CARDBUS_EXROM_DATA_DEVICE_ID 0x06 /* Device Identification */ -#define CARDBUS_EXROM_DATA_LENGTH 0x0a /* PCI Data Structure Length */ -#define CARDBUS_EXROM_DATA_REV 0x0c /* PCI Data Structure Revision */ -#define CARDBUS_EXROM_DATA_CLASS_CODE 0x0d /* Class Code */ -#define CARDBUS_EXROM_DATA_IMAGE_LENGTH 0x10 /* Image Length */ -#define CARDBUS_EXROM_DATA_DATA_REV 0x12 /* Revision Level of Code/Data */ -#define CARDBUS_EXROM_DATA_CODE_TYPE 0x14 /* Code Type */ -#define CARDBUS_EXROM_DATA_INDICATOR 0x15 /* Indicator */ +#define CARDBUS_EXROM_DATA_SIGNATURE 0x00 /* Signature ("PCIR") */ +#define CARDBUS_EXROM_DATA_VENDOR_ID 0x04 /* Vendor Identification */ +#define CARDBUS_EXROM_DATA_DEVICE_ID 0x06 /* Device Identification */ +#define CARDBUS_EXROM_DATA_LENGTH 0x0a /* PCI Data Structure Length */ +#define CARDBUS_EXROM_DATA_REV 0x0c /* PCI Data Structure Revision */ +#define CARDBUS_EXROM_DATA_CLASS_CODE 0x0d /* Class Code */ +#define CARDBUS_EXROM_DATA_IMAGE_LENGTH 0x10 /* Image Length */ +#define CARDBUS_EXROM_DATA_DATA_REV 0x12 /* Revision Level of Code/Data */ +#define CARDBUS_EXROM_DATA_CODE_TYPE 0x14 /* Code Type */ +#define CARDBUS_EXROM_DATA_INDICATOR 0x15 /* Indicator */ /* useful macros */ -#define CARDBUS_CIS_ADDR(x) \ +#define CARDBUS_CIS_ADDR(x) \ (CARDBUS_CIS_ADDRMASK & (x)) -#define CARDBUS_CIS_SPACE(x) \ +#define CARDBUS_CIS_SPACE(x) \ (CARDBUS_CIS_ASIMASK & (x)) -#define CARDBUS_CIS_ASI_BAR(x) \ +#define CARDBUS_CIS_ASI_BAR(x) \ (((CARDBUS_CIS_ASIMASK & (x))-1)*4+0x10) -#define CARDBUS_CIS_ASI_ROM_IMAGE(x) \ +#define CARDBUS_CIS_ASI_ROM_IMAGE(x) \ (((x) >> 28) & 0xf) -#define CARDBUS_MAPREG_MEM_ADDR_MASK 0x0ffffff0 -#define CARDBUS_MAPREG_MEM_ADDR(mr) \ +#define CARDBUS_MAPREG_MEM_ADDR_MASK 0x0ffffff0 +#define CARDBUS_MAPREG_MEM_ADDR(mr) \ ((mr) & CARDBUS_MAPREG_MEM_ADDR_MASK) -#define CARDBUS_MAPREG_MEM_SIZE(mr) \ +#define CARDBUS_MAPREG_MEM_SIZE(mr) \ (CARDBUS_MAPREG_MEM_ADDR(mr) & -CARDBUS_MAPREG_MEM_ADDR(mr)) diff --git a/sys/dev/cardbus/cardbusvar.h b/sys/dev/cardbus/cardbusvar.h index a94cd99..7e0e3c5 100644 --- a/sys/dev/cardbus/cardbusvar.h +++ b/sys/dev/cardbus/cardbusvar.h @@ -33,7 +33,7 @@ */ struct cardbus_devinfo { - struct resource_list resources; - pcicfgregs cfg; - struct pci_conf conf; + struct resource_list resources; + pcicfgregs cfg; + struct pci_conf conf; }; diff --git a/sys/dev/pccbb/pccbb.c b/sys/dev/pccbb/pccbb.c index e1afa74..e540145 100644 --- a/sys/dev/pccbb/pccbb.c +++ b/sys/dev/pccbb/pccbb.c @@ -45,7 +45,7 @@ * * David Cross: Author of the initial ugly hack for a specific cardbus card */ -#define CBB_DEBUG +#define CBB_DEBUG #include <sys/param.h> #include <sys/systm.h> @@ -104,7 +104,7 @@ PCIC_WRITE(SC,REG,(PCIC_READ(SC,REG) MASK) MASK2) struct pccbb_sclist { - struct pccbb_softc *sc; + struct pccbb_softc *sc; STAILQ_ENTRY(pccbb_sclist) entries; }; @@ -114,170 +114,167 @@ static int softcs_init = 0; struct yenta_chipinfo { u_int32_t yc_id; - const char *yc_name; - int yc_chiptype; - int yc_flags; + const char *yc_name; + int yc_chiptype; + int yc_flags; } yc_chipsets[] = { /* Texas Instruments chips */ {PCI_DEVICE_ID_PCIC_TI1130, "TI1130 PCI-CardBus Bridge", CB_TI113X, - PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, + PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_PCIC_TI1131, "TI1131 PCI-CardBus Bridge", CB_TI113X, - PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, + PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_PCIC_TI1211, "TI1211 PCI-CardBus Bridge", CB_TI12XX, - PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, + PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_PCIC_TI1220, "TI1220 PCI-CardBus Bridge", CB_TI12XX, - PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, + PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_PCIC_TI1221, "TI1221 PCI-CardBus Bridge", CB_TI12XX, - PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, + PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_PCIC_TI1225, "TI1225 PCI-CardBus Bridge", CB_TI12XX, - PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, + PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_PCIC_TI1250, "TI1250 PCI-CardBus Bridge", CB_TI12XX, - PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, + PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_PCIC_TI1251, "TI1251 PCI-CardBus Bridge", CB_TI12XX, - PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, + PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_PCIC_TI1251B,"TI1251B PCI-CardBus Bridge",CB_TI12XX, - PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, + PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_PCIC_TI1410, "TI1410 PCI-CardBus Bridge", CB_TI12XX, - PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, + PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_PCIC_TI1420, "TI1420 PCI-CardBus Bridge", CB_TI12XX, - PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, + PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_PCIC_TI1450, "TI1450 PCI-CardBus Bridge", CB_TI12XX, - PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, + PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_PCIC_TI1451, "TI1451 PCI-CardBus Bridge", CB_TI12XX, - PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, + PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_PCIC_TI4451, "TI4451 PCI-CardBus Bridge", CB_TI12XX, - PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, + PCCBB_PCIC_IO_RELOC | PCCBB_PCIC_MEM_32}, /* Ricoh chips */ {PCI_DEVICE_ID_RICOH_RL5C465, "RF5C465 PCI-CardBus Bridge", - CB_RF5C46X, PCCBB_PCIC_MEM_32}, + CB_RF5C46X, PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_RICOH_RL5C466, "RF5C466 PCI-CardBus Bridge", - CB_RF5C46X, PCCBB_PCIC_MEM_32}, + CB_RF5C46X, PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_RICOH_RL5C475, "RF5C475 PCI-CardBus Bridge", - CB_RF5C47X, PCCBB_PCIC_MEM_32}, + CB_RF5C47X, PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_RICOH_RL5C476, "RF5C476 PCI-CardBus Bridge", - CB_RF5C47X, PCCBB_PCIC_MEM_32}, + CB_RF5C47X, PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_RICOH_RL5C478, "RF5C478 PCI-CardBus Bridge", - CB_RF5C47X, PCCBB_PCIC_MEM_32}, + CB_RF5C47X, PCCBB_PCIC_MEM_32}, /* Toshiba products */ {PCI_DEVICE_ID_TOSHIBA_TOPIC95, "ToPIC95 PCI-CardBus Bridge", - CB_TOPIC95, PCCBB_PCIC_MEM_32}, + CB_TOPIC95, PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_TOSHIBA_TOPIC95B, "ToPIC95B PCI-CardBus Bridge", - CB_TOPIC95B, PCCBB_PCIC_MEM_32}, + CB_TOPIC95B, PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_TOSHIBA_TOPIC97, "ToPIC97 PCI-CardBus Bridge", - CB_TOPIC97, PCCBB_PCIC_MEM_32}, + CB_TOPIC97, PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_TOSHIBA_TOPIC100, "ToPIC100 PCI-CardBus Bridge", - CB_TOPIC97, PCCBB_PCIC_MEM_32}, + CB_TOPIC97, PCCBB_PCIC_MEM_32}, /* Cirrus Logic */ {PCI_DEVICE_ID_PCIC_CLPD6832, "CLPD6832 PCI-CardBus Bridge", - CB_CIRRUS, PCCBB_PCIC_MEM_32}, + CB_CIRRUS, PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_PCIC_CLPD6833, "CLPD6833 PCI-CardBus Bridge", - CB_CIRRUS, PCCBB_PCIC_MEM_32}, + CB_CIRRUS, PCCBB_PCIC_MEM_32}, /* 02Micro */ {PCI_DEVICE_ID_PCIC_OZ6832, "O2Mirco OZ6832/6833 PCI-CardBus Bridge", - CB_CIRRUS, PCCBB_PCIC_MEM_32}, + CB_CIRRUS, PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_PCIC_OZ6860, "O2Mirco OZ6836/6860 PCI-CardBus Bridge", - CB_CIRRUS, PCCBB_PCIC_MEM_32}, + CB_CIRRUS, PCCBB_PCIC_MEM_32}, {PCI_DEVICE_ID_PCIC_OZ6872, "O2Mirco OZ6812/6872 PCI-CardBus Bridge", - CB_CIRRUS, PCCBB_PCIC_MEM_32}, + CB_CIRRUS, PCCBB_PCIC_MEM_32}, /* sentinel */ {0 /* null id */, "unknown", - CB_UNKNOWN, 0}, + CB_UNKNOWN, 0}, }; - -static int cb_chipset(u_int32_t pci_id, const char** namep, int* flagp); -static int pccbb_probe(device_t dev); -static void pccbb_chipinit(struct pccbb_softc* sc); -static int pccbb_attach(device_t dev); -static int pccbb_detach(device_t dev); -static void pccbb_driver_added(device_t dev, driver_t *driver); -static void pccbb_child_detached(device_t dev, device_t child); -static void pccbb_event_thread (void *arg); -static void pccbb_create_event_thread (struct pccbb_softc *sc); -static void pccbb_start_threads(void *arg); -static void pccbb_insert (struct pccbb_softc *sc); -static void pccbb_removal (struct pccbb_softc *sc); -static void pccbb_intr(void* arg); -static int pccbb_detect_voltage(device_t dev); -static int pccbb_power(device_t dev, int volts); -static void pccbb_cardbus_reset(device_t dev); -static int pccbb_cardbus_power_enable_socket(device_t self, device_t child); -static void pccbb_cardbus_power_disable_socket(device_t self, device_t child); -static int pccbb_cardbus_io_open(device_t dev, int win, - u_int32_t start, u_int32_t end); -static int pccbb_cardbus_mem_open(device_t dev, int win, - u_int32_t start, u_int32_t end); -static void pccbb_cardbus_auto_open(struct pccbb_softc *sc, int type); -static int pccbb_cardbus_activate_resource(device_t self, device_t child, - int type, int rid, - struct resource *r); -static int pccbb_cardbus_deactivate_resource(device_t self, device_t child, - int type, int rid, - struct resource *r); -static struct resource* pccbb_cardbus_alloc_resource(device_t self, - device_t child, int type, int* rid, - u_long start, u_long end, u_long count, - u_int flags); -static int pccbb_cardbus_release_resource(device_t self, device_t child, - int type,int rid, - struct resource *r); -static int pccbb_pcic_power_enable_socket(device_t self, device_t child); -static void pccbb_pcic_power_disable_socket(device_t self, device_t child); -static void pccbb_pcic_wait_ready(struct pccbb_softc *sc); -static void pccbb_pcic_do_mem_map(struct pccbb_softc *sc, int win); -static int pccbb_pcic_mem_map(struct pccbb_softc *sc, int kind, - struct resource *r, bus_addr_t card_addr, - int *win); -static void pccbb_pcic_mem_unmap(struct pccbb_softc *sc, int window); -static void pccbb_pcic_do_io_map(struct pccbb_softc *sc, int win); -static int pccbb_pcic_io_map(struct pccbb_softc *sc, int width, - struct resource *r, bus_addr_t card_addr, - int *win); -static void pccbb_pcic_io_unmap(struct pccbb_softc *sc, int window); -static int pccbb_pcic_activate_resource(device_t self, device_t child, - int type, int rid, struct resource *r); -static int pccbb_pcic_deactivate_resource(device_t self, device_t child, - int type,int rid, struct resource *r); -static struct resource* pccbb_pcic_alloc_resource(device_t self,device_t child, - int type, int* rid, u_long start, - u_long end, u_long count, u_int flags); -static int pccbb_pcic_release_resource(device_t self, device_t child, int type, - int rid, struct resource *res); -static int pccbb_pcic_set_res_flags(device_t self, device_t child, int type, - int rid, u_int32_t flags); -static int pccbb_pcic_set_memory_offset(device_t self, device_t child, int rid, - u_int32_t offset, u_int32_t *deltap); -static int pccbb_power_enable_socket(device_t self, device_t child); -static void pccbb_power_disable_socket(device_t self, device_t child); -static int pccbb_activate_resource(device_t self, device_t child, int type, - int rid, struct resource *r); -static int pccbb_deactivate_resource(device_t self, device_t child, int type, - int rid, struct resource *r); -static struct resource* pccbb_alloc_resource(device_t self, device_t child, - int type, int* rid, u_long start, - u_long end, u_long count, - u_int flags); -static int pccbb_release_resource(device_t self, device_t child, - int type, int rid, struct resource *r); -static int pccbb_maxslots(device_t dev); -static u_int32_t pccbb_read_config(device_t dev, int b, int s, int f, - int reg, int width); -static void pccbb_write_config(device_t dev, int b, int s, int f, int reg, - u_int32_t val, int width); - +static int cb_chipset(u_int32_t pci_id, const char **namep, int *flagp); +static int pccbb_probe(device_t brdev); +static void pccbb_chipinit(struct pccbb_softc *sc); +static int pccbb_attach(device_t brdev); +static int pccbb_detach(device_t brdev); +static void pccbb_driver_added(device_t brdev, driver_t *driver); +static void pccbb_child_detached(device_t brdev, device_t child); +static void pccbb_event_thread(void *arg); +static void pccbb_create_event_thread (struct pccbb_softc *sc); +static void pccbb_start_threads(void *arg); +static void pccbb_insert(struct pccbb_softc *sc); +static void pccbb_removal(struct pccbb_softc *sc); +static void pccbb_intr(void *arg); +static int pccbb_detect_voltage(device_t brdev); +static int pccbb_power(device_t brdev, int volts); +static void pccbb_cardbus_reset(device_t brdev); +static int pccbb_cardbus_power_enable_socket(device_t brdev, + device_t child); +static void pccbb_cardbus_power_disable_socket(device_t brdev, + device_t child); +static int pccbb_cardbus_io_open(device_t brdev, int win, u_int32_t start, + u_int32_t end); +static int pccbb_cardbus_mem_open(device_t brdev, int win, + u_int32_t start, u_int32_t end); +static void pccbb_cardbus_auto_open(struct pccbb_softc *sc, int type); +static int pccbb_cardbus_activate_resource(device_t brdev, device_t child, + int type, int rid, struct resource *r); +static int pccbb_cardbus_deactivate_resource(device_t brdev, + device_t child, int type, int rid, struct resource *r); +static struct resource * pccbb_cardbus_alloc_resource(device_t brdev, + device_t child, int type, int *rid, u_long start, + u_long end, u_long count, u_int flags); +static int pccbb_cardbus_release_resource(device_t brdev, device_t child, + int type, int rid, struct resource *r); +static int pccbb_pcic_power_enable_socket(device_t brdev, device_t child); +static void pccbb_pcic_power_disable_socket(device_t brdev, device_t child); +static void pccbb_pcic_wait_ready(struct pccbb_softc *sc); +static void pccbb_pcic_do_mem_map(struct pccbb_softc *sc, int win); +static int pccbb_pcic_mem_map(struct pccbb_softc *sc, int kind, + struct resource *r, bus_addr_t card_addr, int *win); +static void pccbb_pcic_mem_unmap(struct pccbb_softc *sc, int window); +static void pccbb_pcic_do_io_map(struct pccbb_softc *sc, int win); +static int pccbb_pcic_io_map(struct pccbb_softc *sc, int width, + struct resource *r, bus_addr_t card_addr, int *win); +static void pccbb_pcic_io_unmap(struct pccbb_softc *sc, int window); +static int pccbb_pcic_activate_resource(device_t brdev, device_t child, + int type, int rid, struct resource *r); +static int pccbb_pcic_deactivate_resource(device_t brdev, device_t child, + int type, int rid, struct resource *r); +static struct resource * pccbb_pcic_alloc_resource(device_t brdev, + device_t child, int type, int *rid, u_long start, + u_long end, u_long count, u_int flags); +static int pccbb_pcic_release_resource(device_t brdev, device_t child, + int type, int rid, struct resource *res); +static int pccbb_pcic_set_res_flags(device_t brdev, device_t child, + int type, int rid, u_int32_t flags); +static int pccbb_pcic_set_memory_offset(device_t brdev, device_t child, + int rid, u_int32_t cardaddr, u_int32_t *deltap); +static int pccbb_power_enable_socket(device_t brdev, device_t child); +static void pccbb_power_disable_socket(device_t brdev, device_t child); +static int pccbb_activate_resource(device_t brdev, device_t child, + int type, int rid, struct resource *r); +static int pccbb_deactivate_resource(device_t brdev, device_t child, + int type, int rid, struct resource *r); +static struct resource * pccbb_alloc_resource(device_t brdev, + device_t child, int type, int *rid, u_long start, + u_long end, u_long count, u_int flags); +static int pccbb_release_resource(device_t brdev, device_t child, + int type, int rid, struct resource *r); +static int pccbb_read_ivar(device_t brdev, device_t child, int which, + uintptr_t *result); +static int pccbb_write_ivar(device_t brdev, device_t child, int which, + uintptr_t value); +static int pccbb_maxslots(device_t brdev); +static u_int32_t pccbb_read_config(device_t brdev, int b, int s, int f, + int reg, int width); +static void pccbb_write_config(device_t brdev, int b, int s, int f, + int reg, u_int32_t val, int width); /************************************************************************/ /* Probe/Attach */ /************************************************************************/ static int -cb_chipset(u_int32_t pci_id, const char** namep, int* flagp) +cb_chipset(u_int32_t pci_id, const char **namep, int *flagp) { int loopend = sizeof(yc_chipsets)/sizeof(yc_chipsets[0]); struct yenta_chipinfo *ycp, *ycend; @@ -298,18 +295,18 @@ cb_chipset(u_int32_t pci_id, const char** namep, int* flagp) } static int -pccbb_probe(device_t dev) +pccbb_probe(device_t brdev) { const char *name; - if (cb_chipset(pci_get_devid(dev), &name, NULL) == CB_UNKNOWN) + if (cb_chipset(pci_get_devid(brdev), &name, NULL) == CB_UNKNOWN) return ENXIO; - device_set_desc(dev, name); + device_set_desc(brdev, name); return 0; } static void -pccbb_chipinit(struct pccbb_softc* sc) +pccbb_chipinit(struct pccbb_softc *sc) { /* Set CardBus latency timer */ if (pci_read_config(sc->sc_dev, PCIR_SECLAT_1, 1) < 0x20) @@ -321,17 +318,17 @@ pccbb_chipinit(struct pccbb_softc* sc) /* Enable memory access */ PCI_MASK_CONFIG(sc->sc_dev, PCIR_COMMAND, - | PCIM_CMD_MEMEN - | PCIM_CMD_PORTEN - | PCIM_CMD_BUSMASTEREN, 2); + | PCIM_CMD_MEMEN + | PCIM_CMD_PORTEN + | PCIM_CMD_BUSMASTEREN, 2); /* disable Legacy IO */ switch (sc->sc_chipset) { case CB_RF5C46X: case CB_RF5C47X: PCI_MASK_CONFIG(sc->sc_dev, PCCBBR_BRIDGECTRL, - & ~(PCCBBM_BRIDGECTRL_RL_3E0_EN| - PCCBBM_BRIDGECTRL_RL_3E2_EN), 2); + & ~(PCCBBM_BRIDGECTRL_RL_3E0_EN | + PCCBBM_BRIDGECTRL_RL_3E2_EN), 2); break; default: pci_write_config(sc->sc_dev, PCCBBR_LEGACY, 0x0, 4); @@ -340,20 +337,20 @@ pccbb_chipinit(struct pccbb_softc* sc) /* Use PCI interrupt for interrupt routing */ PCI_MASK2_CONFIG(sc->sc_dev, PCCBBR_BRIDGECTRL, - & ~(PCCBBM_BRIDGECTRL_MASTER_ABORT | - PCCBBM_BRIDGECTRL_INTR_IREQ_EN), - | PCCBBM_BRIDGECTRL_WRITE_POST_EN, - 2); + & ~(PCCBBM_BRIDGECTRL_MASTER_ABORT | + PCCBBM_BRIDGECTRL_INTR_IREQ_EN), + | PCCBBM_BRIDGECTRL_WRITE_POST_EN, + 2); switch (sc->sc_chipset) { case CB_TI113X: PCI_MASK2_CONFIG(sc->sc_dev, PCCBBR_CBCTRL, - & ~PCCBBM_CBCTRL_113X_PCI_INTR, - | PCCBBM_CBCTRL_113X_PCI_CSC - | PCCBBM_CBCTRL_113X_PCI_IRQ_EN, 1); + & ~PCCBBM_CBCTRL_113X_PCI_INTR, + | PCCBBM_CBCTRL_113X_PCI_CSC | + PCCBBM_CBCTRL_113X_PCI_IRQ_EN, 1); PCI_MASK_CONFIG(sc->sc_dev, PCCBBR_DEVCTRL, - & ~(PCCBBM_DEVCTRL_INT_SERIAL| - PCCBBM_DEVCTRL_INT_PCI), 1); + & ~(PCCBBM_DEVCTRL_INT_SERIAL | + PCCBBM_DEVCTRL_INT_PCI), 1); PCIC_WRITE(sc, PCIC_INTR, PCIC_INTR_ENABLE); PCIC_WRITE(sc, PCIC_CSC_INTR, 0); break; @@ -363,13 +360,13 @@ pccbb_chipinit(struct pccbb_softc* sc) break; case CB_TOPIC95B: PCI_MASK_CONFIG(sc->sc_dev, PCCBBR_TOPIC_SOCKETCTRL, - | PCCBBM_TOPIC_SOCKETCTRL_SCR_IRQSEL, 4); + | PCCBBM_TOPIC_SOCKETCTRL_SCR_IRQSEL, 4); PCI_MASK2_CONFIG(sc->sc_dev, PCCBBR_TOPIC_SLOTCTRL, - | PCCBBM_TOPIC_SLOTCTRL_SLOTON - | PCCBBM_TOPIC_SLOTCTRL_SLOTEN - | PCCBBM_TOPIC_SLOTCTRL_ID_LOCK - | PCCBBM_TOPIC_SLOTCTRL_CARDBUS, - & ~PCCBBM_TOPIC_SLOTCTRL_SWDETECT, 4); + | PCCBBM_TOPIC_SLOTCTRL_SLOTON | + PCCBBM_TOPIC_SLOTCTRL_SLOTEN | + PCCBBM_TOPIC_SLOTCTRL_ID_LOCK | + PCCBBM_TOPIC_SLOTCTRL_CARDBUS, + & ~PCCBBM_TOPIC_SLOTCTRL_SWDETECT, 4); break; } @@ -385,9 +382,9 @@ pccbb_chipinit(struct pccbb_softc* sc) } static int -pccbb_attach(device_t dev) +pccbb_attach(device_t brdev) { - struct pccbb_softc *sc = (struct pccbb_softc *)device_get_softc(dev); + struct pccbb_softc *sc = (struct pccbb_softc *)device_get_softc(brdev); int rid; u_int32_t tmp; @@ -395,60 +392,60 @@ pccbb_attach(device_t dev) softcs_init = 1; STAILQ_INIT(&softcs); } - mtx_init(&sc->sc_mtx, device_get_nameunit(dev), MTX_DEF); - sc->sc_chipset = cb_chipset(pci_get_devid(dev), NULL, &sc->sc_flags); - sc->sc_dev = dev; + mtx_init(&sc->sc_mtx, device_get_nameunit(brdev), MTX_DEF); + sc->sc_chipset = cb_chipset(pci_get_devid(brdev), NULL, &sc->sc_flags); + sc->sc_dev = brdev; sc->sc_cbdev = NULL; sc->sc_pccarddev = NULL; - sc->sc_secbus = pci_read_config(dev, PCIR_SECBUS_2, 1); - sc->sc_subbus = pci_read_config(dev, PCIR_SUBBUS_2, 1); + sc->sc_secbus = pci_read_config(brdev, PCIR_SECBUS_2, 1); + sc->sc_subbus = pci_read_config(brdev, PCIR_SUBBUS_2, 1); sc->memalloc = 0; sc->ioalloc = 0; SLIST_INIT(&sc->rl); /* Ths PCI bus should have given me memory... right? */ rid=PCCBBR_SOCKBASE; - sc->sc_base_res=bus_alloc_resource(dev, SYS_RES_MEMORY, &rid, - 0,~0,1, RF_ACTIVE); + sc->sc_base_res=bus_alloc_resource(brdev, SYS_RES_MEMORY, &rid, + 0,~0,1, RF_ACTIVE); if (!sc->sc_base_res) { /* - * XXX eVILE HACK BAD THING! XXX + * XXX EVILE HACK BAD THING! XXX * The pci bus device should do this for us. * Some BIOSes doesn't assign a memory space properly. * So we try to manually put one in... */ u_int32_t sockbase; - sockbase = pci_read_config(dev, rid, 4); + sockbase = pci_read_config(brdev, rid, 4); if (sockbase < 0x100000 || sockbase >= 0xfffffff0) { - pci_write_config(dev, rid, 0xffffffff, 4); - sockbase = pci_read_config(dev, rid, 4); + pci_write_config(brdev, rid, 0xffffffff, 4); + sockbase = pci_read_config(brdev, rid, 4); sockbase = (sockbase & 0xfffffff0) & - -(sockbase & 0xfffffff0); + -(sockbase & 0xfffffff0); sc->sc_base_res = bus_generic_alloc_resource( - device_get_parent(dev), dev, SYS_RES_MEMORY, - &rid, CARDBUS_SYS_RES_MEMORY_START, - CARDBUS_SYS_RES_MEMORY_END, sockbase, - RF_ACTIVE|rman_make_alignment_flags(sockbase)); + device_get_parent(brdev), brdev, SYS_RES_MEMORY, + &rid, CARDBUS_SYS_RES_MEMORY_START, + CARDBUS_SYS_RES_MEMORY_END, sockbase, + RF_ACTIVE|rman_make_alignment_flags(sockbase)); if (!sc->sc_base_res){ - device_printf(dev, - "Could not grab register memory\n"); + device_printf(brdev, + "Could not grab register memory\n"); mtx_destroy(&sc->sc_mtx); return ENOMEM; } - pci_write_config(dev, PCCBBR_SOCKBASE, - rman_get_start(sc->sc_base_res), 4); - DEVPRINTF((dev, "PCI Memory allocated: %08lx\n", - rman_get_start(sc->sc_base_res))); + pci_write_config(brdev, PCCBBR_SOCKBASE, + rman_get_start(sc->sc_base_res), 4); + DEVPRINTF((brdev, "PCI Memory allocated: %08lx\n", + rman_get_start(sc->sc_base_res))); } else { - device_printf(dev, "Could not map register memory\n"); + device_printf(brdev, "Could not map register memory\n"); mtx_destroy(&sc->sc_mtx); return ENOMEM; } } sc->sc_socketreg = - (struct pccbb_socketreg *)rman_get_virtual(sc->sc_base_res); + (struct pccbb_socketreg *)rman_get_virtual(sc->sc_base_res); pccbb_chipinit(sc); /* CSC Interrupt: Card detect interrupt on */ @@ -460,50 +457,51 @@ pccbb_attach(device_t dev) /* Map and establish the interrupt. */ rid=0; - sc->sc_irq_res=bus_alloc_resource(dev, SYS_RES_IRQ, &rid, 0, ~0, 1, - RF_SHAREABLE | RF_ACTIVE); - if (sc->sc_irq_res == NULL) { + sc->sc_irq_res=bus_alloc_resource(brdev, SYS_RES_IRQ, &rid, 0, ~0, 1, + RF_SHAREABLE | RF_ACTIVE); + if (sc->sc_irq_res == NULL) { printf("pccbb: Unable to map IRQ...\n"); - bus_release_resource(dev, SYS_RES_MEMORY, PCCBBR_SOCKBASE, - sc->sc_base_res); + bus_release_resource(brdev, SYS_RES_MEMORY, PCCBBR_SOCKBASE, + sc->sc_base_res); mtx_destroy(&sc->sc_mtx); return ENOMEM; } - if (bus_setup_intr(dev, sc->sc_irq_res, INTR_TYPE_BIO, pccbb_intr, sc, - &(sc->sc_intrhand))) { - device_printf(dev, "couldn't establish interrupt"); - bus_release_resource(dev, SYS_RES_IRQ, 0, sc->sc_irq_res); - bus_release_resource(dev, SYS_RES_MEMORY, PCCBBR_SOCKBASE, - sc->sc_base_res); + if (bus_setup_intr(brdev, sc->sc_irq_res, INTR_TYPE_BIO, pccbb_intr, sc, + &(sc->sc_intrhand))) { + device_printf(brdev, "couldn't establish interrupt"); + bus_release_resource(brdev, SYS_RES_IRQ, 0, sc->sc_irq_res); + bus_release_resource(brdev, SYS_RES_MEMORY, PCCBBR_SOCKBASE, + sc->sc_base_res); mtx_destroy(&sc->sc_mtx); return ENOMEM; } /* attach children */ - sc->sc_cbdev = device_add_child(dev, "cardbus", -1); + sc->sc_cbdev = device_add_child(brdev, "cardbus", -1); if (sc->sc_cbdev == NULL) - DEVPRINTF((dev, "WARNING: cannot add cardbus bus.\n")); + DEVPRINTF((brdev, "WARNING: cannot add cardbus bus.\n")); else if (device_probe_and_attach(sc->sc_cbdev) != 0) { - DEVPRINTF((dev, "WARNING: cannot attach cardbus bus!\n")); + DEVPRINTF((brdev, "WARNING: cannot attach cardbus bus!\n")); sc->sc_cbdev = NULL; } - sc->sc_pccarddev = device_add_child(dev, "pccard", -1); + sc->sc_pccarddev = device_add_child(brdev, "pccard", -1); if (sc->sc_pccarddev == NULL) - DEVPRINTF((dev, "WARNING: cannot add pccard bus.\n")); + DEVPRINTF((brdev, "WARNING: cannot add pccard bus.\n")); else if (device_probe_and_attach(sc->sc_pccarddev) != 0) { - DEVPRINTF((dev, "WARNING: cannot attach pccard bus.\n")); + DEVPRINTF((brdev, "WARNING: cannot attach pccard bus.\n")); sc->sc_pccarddev = NULL; } #ifndef KLD_MODULE if (sc->sc_cbdev == NULL && sc->sc_pccarddev == NULL) { - device_printf(dev, "ERROR: Failed to attach cardbus/pccard bus!\n"); - bus_teardown_intr(dev, sc->sc_irq_res, sc->sc_intrhand); - bus_release_resource(dev, SYS_RES_IRQ, 0, sc->sc_irq_res); - bus_release_resource(dev, SYS_RES_MEMORY, PCCBBR_SOCKBASE, - sc->sc_base_res); + device_printf(brdev, + "ERROR: Failed to attach cardbus/pccard bus!\n"); + bus_teardown_intr(brdev, sc->sc_irq_res, sc->sc_intrhand); + bus_release_resource(brdev, SYS_RES_IRQ, 0, sc->sc_irq_res); + bus_release_resource(brdev, SYS_RES_MEMORY, PCCBBR_SOCKBASE, + sc->sc_base_res); mtx_destroy(&sc->sc_mtx); return ENOMEM; } @@ -512,7 +510,7 @@ pccbb_attach(device_t dev) { struct pccbb_sclist *sclist; sclist = malloc(sizeof(struct pccbb_sclist), M_DEVBUF, - M_WAITOK); + M_WAITOK); sclist->sc = sc; STAILQ_INSERT_TAIL(&softcs, sclist, entries); } @@ -520,20 +518,20 @@ pccbb_attach(device_t dev) } static int -pccbb_detach(device_t dev) +pccbb_detach(device_t brdev) { - struct pccbb_softc *sc = device_get_softc(dev); + struct pccbb_softc *sc = device_get_softc(brdev); int numdevs; device_t *devlist; int tmp; int error; - device_get_children(dev, &devlist, &numdevs); + device_get_children(brdev, &devlist, &numdevs); error = 0; for (tmp = 0; tmp < numdevs; tmp++) { if (device_detach(devlist[tmp]) == 0) - device_delete_child(dev, devlist[tmp]); + device_delete_child(brdev, devlist[tmp]); else error++; } @@ -542,13 +540,13 @@ pccbb_detach(device_t dev) return ENXIO; mtx_lock(&sc->sc_mtx); - bus_teardown_intr(dev, sc->sc_irq_res, sc->sc_intrhand); + bus_teardown_intr(brdev, sc->sc_irq_res, sc->sc_intrhand); sc->sc_flags |= PCCBB_KTHREAD_DONE; if (sc->sc_flags & PCCBB_KTHREAD_RUNNING) { wakeup(sc); mtx_unlock(&sc->sc_mtx); - DEVPRINTF((dev, "waiting for kthread exit...")); + DEVPRINTF((brdev, "waiting for kthread exit...")); error = tsleep(sc, PWAIT, "pccbb-detach-wait", 60 * hz); if (error) DPRINTF(("timeout\n")); @@ -557,23 +555,23 @@ pccbb_detach(device_t dev) } else mtx_unlock(&sc->sc_mtx); - bus_release_resource(dev, SYS_RES_IRQ, 0, sc->sc_irq_res); - bus_release_resource(dev, SYS_RES_MEMORY, PCCBBR_SOCKBASE, - sc->sc_base_res); + bus_release_resource(brdev, SYS_RES_IRQ, 0, sc->sc_irq_res); + bus_release_resource(brdev, SYS_RES_MEMORY, PCCBBR_SOCKBASE, + sc->sc_base_res); mtx_destroy(&sc->sc_mtx); return 0; } static void -pccbb_driver_added(device_t dev, driver_t *driver) +pccbb_driver_added(device_t brdev, driver_t *driver) { - struct pccbb_softc *sc = device_get_softc(dev); + struct pccbb_softc *sc = device_get_softc(brdev); device_t *devlist; int tmp; int numdevs; - DEVICE_IDENTIFY(driver, dev); - device_get_children(dev, &devlist, &numdevs); + DEVICE_IDENTIFY(driver, brdev); + device_get_children(brdev, &devlist, &numdevs); for (tmp = 0; tmp < numdevs; tmp++) { if (device_get_state(devlist[tmp]) == DS_NOTPRESENT && device_probe_and_attach(devlist[tmp]) == 0) { @@ -596,25 +594,25 @@ pccbb_driver_added(device_t dev, driver_t *driver) mtx_unlock(&sc->sc_mtx); } } else - device_printf(dev, - "Unsupported child bus: %s\n", - driver->name); + device_printf(brdev, + "Unsupported child bus: %s\n", + driver->name); } } free(devlist, M_TEMP); } static void -pccbb_child_detached(device_t dev, device_t child) +pccbb_child_detached(device_t brdev, device_t child) { - struct pccbb_softc *sc = device_get_softc(dev); + struct pccbb_softc *sc = device_get_softc(brdev); if (child == sc->sc_cbdev) sc->sc_cbdev = NULL; else if (child == sc->sc_pccarddev) sc->sc_pccarddev = NULL; else - device_printf(dev, "Unknown child detached: %s %p/%p\n", - device_get_nameunit(child), sc->sc_cbdev, sc->sc_pccarddev); + device_printf(brdev, "Unknown child detached: %s %p/%p\n", + device_get_nameunit(child), sc->sc_cbdev, sc->sc_pccarddev); } /************************************************************************/ @@ -622,7 +620,7 @@ pccbb_child_detached(device_t dev, device_t child) /************************************************************************/ static void -pccbb_event_thread (void *arg) +pccbb_event_thread(void *arg) { struct pccbb_softc *sc = arg; u_int32_t status; @@ -662,8 +660,8 @@ static void pccbb_create_event_thread (struct pccbb_softc *sc) { if (kthread_create(pccbb_event_thread, sc, &sc->event_thread, - 0, "%s%d", device_get_name(sc->sc_dev), - device_get_unit(sc->sc_dev))) { + 0, "%s%d", device_get_name(sc->sc_dev), + device_get_unit(sc->sc_dev))) { device_printf (sc->sc_dev, "unable to create event thread.\n"); panic ("pccbb_create_event_thread"); } @@ -684,7 +682,7 @@ pccbb_start_threads(void *arg) /************************************************************************/ static void -pccbb_insert (struct pccbb_softc *sc) +pccbb_insert(struct pccbb_softc *sc) { u_int32_t sockevent, sockstate; int timeout = 30; @@ -700,7 +698,7 @@ pccbb_insert (struct pccbb_softc *sc) } DEVPRINTF((sc->sc_dev, "card inserted: event=0x%08x, state=%08x\n", - sockevent, sockstate)); + sockevent, sockstate)); if (sockstate & PCCBB_SOCKET_STAT_16BIT && sc->sc_pccarddev != NULL) { sc->sc_flags |= PCCBB_16BIT_CARD; @@ -716,7 +714,7 @@ pccbb_insert (struct pccbb_softc *sc) } static void -pccbb_removal (struct pccbb_softc *sc) +pccbb_removal(struct pccbb_softc *sc) { u_int32_t sockstate; struct pccbb_reslist *rle; @@ -742,7 +740,7 @@ pccbb_removal (struct pccbb_softc *sc) /************************************************************************/ static void -pccbb_intr(void* arg) +pccbb_intr(void *arg) { struct pccbb_softc *sc = arg; u_int32_t sockevent; @@ -762,11 +760,11 @@ pccbb_intr(void* arg) } else { if (sockevent & PCCBB_SOCKET_EVENT_CSTS) { DPRINTF((" cstsevent occures, 0x%08x\n", - sc->sc_socketreg->socket_state)); + sc->sc_socketreg->socket_state)); } if (sockevent & PCCBB_SOCKET_EVENT_POWER) { DPRINTF((" pwrevent occures, 0x%08x\n", - sc->sc_socketreg->socket_state)); + sc->sc_socketreg->socket_state)); } } @@ -778,9 +776,9 @@ pccbb_intr(void* arg) /************************************************************************/ static int -pccbb_detect_voltage(device_t dev) +pccbb_detect_voltage(device_t brdev) { - struct pccbb_softc *sc = device_get_softc(dev); + struct pccbb_softc *sc = device_get_softc(brdev); u_int32_t psr; int vol = CARD_UKN_CARD; @@ -803,25 +801,25 @@ pccbb_detect_voltage(device_t dev) } static int -pccbb_power(device_t dev, int volts) +pccbb_power(device_t brdev, int volts) { u_int32_t status, sock_ctrl; - struct pccbb_softc *sc = device_get_softc(dev); + struct pccbb_softc *sc = device_get_softc(brdev); DEVPRINTF((sc->sc_dev, "pccbb_power: %s and %s [%x]\n", - (volts & CARD_VCCMASK) == CARD_VCC_UC ? "CARD_VCC_UC" : - (volts & CARD_VCCMASK) == CARD_VCC_5V ? "CARD_VCC_5V" : - (volts & CARD_VCCMASK) == CARD_VCC_3V ? "CARD_VCC_3V" : - (volts & CARD_VCCMASK) == CARD_VCC_XV ? "CARD_VCC_XV" : - (volts & CARD_VCCMASK) == CARD_VCC_YV ? "CARD_VCC_YV" : - (volts & CARD_VCCMASK) == CARD_VCC_0V ? "CARD_VCC_0V" : - "VCC-UNKNOWN", - (volts & CARD_VPPMASK) == CARD_VPP_UC ? "CARD_VPP_UC" : - (volts & CARD_VPPMASK) == CARD_VPP_12V ? "CARD_VPP_12V" : - (volts & CARD_VPPMASK) == CARD_VPP_VCC ? "CARD_VPP_VCC" : - (volts & CARD_VPPMASK) == CARD_VPP_0V ? "CARD_VPP_0V" : - "VPP-UNKNOWN", - volts)); + (volts & CARD_VCCMASK) == CARD_VCC_UC ? "CARD_VCC_UC" : + (volts & CARD_VCCMASK) == CARD_VCC_5V ? "CARD_VCC_5V" : + (volts & CARD_VCCMASK) == CARD_VCC_3V ? "CARD_VCC_3V" : + (volts & CARD_VCCMASK) == CARD_VCC_XV ? "CARD_VCC_XV" : + (volts & CARD_VCCMASK) == CARD_VCC_YV ? "CARD_VCC_YV" : + (volts & CARD_VCCMASK) == CARD_VCC_0V ? "CARD_VCC_0V" : + "VCC-UNKNOWN", + (volts & CARD_VPPMASK) == CARD_VPP_UC ? "CARD_VPP_UC" : + (volts & CARD_VPPMASK) == CARD_VPP_12V ? "CARD_VPP_12V" : + (volts & CARD_VPPMASK) == CARD_VPP_VCC ? "CARD_VPP_VCC" : + (volts & CARD_VPPMASK) == CARD_VPP_0V ? "CARD_VPP_0V" : + "VPP-UNKNOWN", + volts)); status = sc->sc_socketreg->socket_state; sock_ctrl = sc->sc_socketreg->socket_control; @@ -835,7 +833,7 @@ pccbb_power(device_t dev, int volts) sock_ctrl |= PCCBB_SOCKET_CTRL_VCC_5V; } else { device_printf(sc->sc_dev, - "BAD voltage request: no 5 V card\n"); + "BAD voltage request: no 5 V card\n"); } break; case CARD_VCC_3V: @@ -844,7 +842,7 @@ pccbb_power(device_t dev, int volts) sock_ctrl |= PCCBB_SOCKET_CTRL_VCC_3V; } else { device_printf(sc->sc_dev, - "BAD voltage request: no 3.3 V card\n"); + "BAD voltage request: no 3.3 V card\n"); } break; case CARD_VCC_0V: @@ -884,10 +882,10 @@ pccbb_power(device_t dev, int volts) DELAY(20*1000); sockevent = sc->sc_socketreg->socket_event; } while (!(sockevent & PCCBB_SOCKET_EVENT_POWER) && - --timeout > 0); + --timeout > 0); /* reset event status */ sc->sc_socketreg->socket_event = sockevent; - if ( timeout < 0 ) { + if (timeout < 0) { printf ("VCC supply failed.\n"); return 0; } @@ -900,22 +898,22 @@ pccbb_power(device_t dev, int volts) if (status & PCCBB_SOCKET_STAT_BADVCC) { device_printf(sc->sc_dev, - "bad Vcc request. ctrl=0x%x, status=0x%x\n", - sock_ctrl ,status); + "bad Vcc request. ctrl=0x%x, status=0x%x\n", + sock_ctrl ,status); printf("pccbb_power: %s and %s [%x]\n", - (volts & CARD_VCCMASK) == CARD_VCC_UC ? "CARD_VCC_UC" : - (volts & CARD_VCCMASK) == CARD_VCC_5V ? "CARD_VCC_5V" : - (volts & CARD_VCCMASK) == CARD_VCC_3V ? "CARD_VCC_3V" : - (volts & CARD_VCCMASK) == CARD_VCC_XV ? "CARD_VCC_XV" : - (volts & CARD_VCCMASK) == CARD_VCC_YV ? "CARD_VCC_YV" : - (volts & CARD_VCCMASK) == CARD_VCC_0V ? "CARD_VCC_0V" : - "VCC-UNKNOWN", - (volts & CARD_VPPMASK) == CARD_VPP_UC ? "CARD_VPP_UC" : - (volts & CARD_VPPMASK) == CARD_VPP_12V ? "CARD_VPP_12V": - (volts & CARD_VPPMASK) == CARD_VPP_VCC ? "CARD_VPP_VCC": - (volts & CARD_VPPMASK) == CARD_VPP_0V ? "CARD_VPP_0V" : - "VPP-UNKNOWN", - volts); + (volts & CARD_VCCMASK) == CARD_VCC_UC ? "CARD_VCC_UC" : + (volts & CARD_VCCMASK) == CARD_VCC_5V ? "CARD_VCC_5V" : + (volts & CARD_VCCMASK) == CARD_VCC_3V ? "CARD_VCC_3V" : + (volts & CARD_VCCMASK) == CARD_VCC_XV ? "CARD_VCC_XV" : + (volts & CARD_VCCMASK) == CARD_VCC_YV ? "CARD_VCC_YV" : + (volts & CARD_VCCMASK) == CARD_VCC_0V ? "CARD_VCC_0V" : + "VCC-UNKNOWN", + (volts & CARD_VPPMASK) == CARD_VPP_UC ? "CARD_VPP_UC" : + (volts & CARD_VPPMASK) == CARD_VPP_12V ? "CARD_VPP_12V": + (volts & CARD_VPPMASK) == CARD_VPP_VCC ? "CARD_VPP_VCC": + (volts & CARD_VPPMASK) == CARD_VPP_0V ? "CARD_VPP_0V" : + "VPP-UNKNOWN", + volts); return 0; } return 1; /* power changed correctly */ @@ -926,56 +924,56 @@ pccbb_power(device_t dev, int volts) /************************************************************************/ static void -pccbb_cardbus_reset(device_t dev) +pccbb_cardbus_reset(device_t brdev) { - struct pccbb_softc *sc = device_get_softc(dev); + struct pccbb_softc *sc = device_get_softc(brdev); int delay_us; delay_us = sc->sc_chipset == CB_RF5C47X ? 400*1000 : 20*1000; - PCI_MASK_CONFIG(dev, PCCBBR_BRIDGECTRL, |PCCBBM_BRIDGECTRL_RESET, 2); + PCI_MASK_CONFIG(brdev, PCCBBR_BRIDGECTRL, |PCCBBM_BRIDGECTRL_RESET, 2); DELAY(delay_us); /* If a card exists, unreset it! */ if ((sc->sc_socketreg->socket_state & PCCBB_SOCKET_STAT_CD) == 0) { - PCI_MASK_CONFIG(dev, PCCBBR_BRIDGECTRL, - &~PCCBBM_BRIDGECTRL_RESET, 2); + PCI_MASK_CONFIG(brdev, PCCBBR_BRIDGECTRL, + &~PCCBBM_BRIDGECTRL_RESET, 2); DELAY(delay_us); } } static int -pccbb_cardbus_power_enable_socket(device_t self, device_t child) +pccbb_cardbus_power_enable_socket(device_t brdev, device_t child) { - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); int voltage; - if ((sc->sc_socketreg->socket_state & PCCBB_SOCKET_STAT_CD) - == PCCBB_SOCKET_STAT_CD) + if ((sc->sc_socketreg->socket_state & PCCBB_SOCKET_STAT_CD) == + PCCBB_SOCKET_STAT_CD) return ENODEV; - voltage = pccbb_detect_voltage(self); + voltage = pccbb_detect_voltage(brdev); - pccbb_power(self, CARD_VCC_0V | CARD_VPP_0V); + pccbb_power(brdev, CARD_VCC_0V | CARD_VPP_0V); if (voltage & CARD_5V_CARD) - pccbb_power(self, CARD_VCC_5V | CARD_VPP_VCC); + pccbb_power(brdev, CARD_VCC_5V | CARD_VPP_VCC); else if (voltage & CARD_3V_CARD) - pccbb_power(self, CARD_VCC_3V | CARD_VPP_VCC); + pccbb_power(brdev, CARD_VCC_3V | CARD_VPP_VCC); else { - device_printf(self, "Unknown card voltage\n"); + device_printf(brdev, "Unknown card voltage\n"); return ENXIO; } - pccbb_cardbus_reset(self); + pccbb_cardbus_reset(brdev); return 0; } static void -pccbb_cardbus_power_disable_socket(device_t self, device_t child) +pccbb_cardbus_power_disable_socket(device_t brdev, device_t child) { - pccbb_power(self, CARD_VCC_0V | CARD_VPP_0V); - pccbb_cardbus_reset(self); + pccbb_power(brdev, CARD_VCC_0V | CARD_VPP_0V); + pccbb_cardbus_reset(brdev); } /************************************************************************/ @@ -983,44 +981,42 @@ pccbb_cardbus_power_disable_socket(device_t self, device_t child) /************************************************************************/ static int -pccbb_cardbus_io_open(device_t dev, int win, u_int32_t start, u_int32_t end) +pccbb_cardbus_io_open(device_t brdev, int win, u_int32_t start, u_int32_t end) { int basereg; int limitreg; if ((win < 0) || (win > 1)) { - DEVPRINTF((dev, - "pccbb_cardbus_io_open: window out of range %d\n", - win)); + DEVPRINTF((brdev, + "pccbb_cardbus_io_open: window out of range %d\n", win)); return EINVAL; } basereg = win*8 + PCCBBR_IOBASE0; limitreg = win*8 + PCCBBR_IOLIMIT0; - pci_write_config(dev, basereg, start, 4); - pci_write_config(dev, limitreg, end, 4); + pci_write_config(brdev, basereg, start, 4); + pci_write_config(brdev, limitreg, end, 4); return 0; } static int -pccbb_cardbus_mem_open(device_t dev, int win, u_int32_t start, u_int32_t end) +pccbb_cardbus_mem_open(device_t brdev, int win, u_int32_t start, u_int32_t end) { int basereg; int limitreg; if ((win < 0) || (win > 1)) { - DEVPRINTF((dev, - "pccbb_cardbus_mem_open: window out of range %d\n", - win)); + DEVPRINTF((brdev, + "pccbb_cardbus_mem_open: window out of range %d\n", win)); return EINVAL; } basereg = win*8 + PCCBBR_MEMBASE0; limitreg = win*8 + PCCBBR_MEMLIMIT0; - pci_write_config(dev, basereg, start, 4); - pci_write_config(dev, limitreg, end, 4); + pci_write_config(brdev, basereg, start, 4); + pci_write_config(brdev, limitreg, end, 4); return 0; } @@ -1108,10 +1104,10 @@ pccbb_cardbus_auto_open(struct pccbb_softc *sc, int type) } static int -pccbb_cardbus_activate_resource(device_t self, device_t child, int type, - int rid, struct resource *r) +pccbb_cardbus_activate_resource(device_t brdev, device_t child, int type, + int rid, struct resource *r) { - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); struct pccbb_reslist *rle; if (type == SYS_RES_MEMORY || type == SYS_RES_IOPORT) { @@ -1119,7 +1115,7 @@ pccbb_cardbus_activate_resource(device_t self, device_t child, int type, if (type == rle->type && rid == rle->rid && child == rle->odev) return bus_generic_activate_resource( - self, child, type, rid, r); + brdev, child, type, rid, r); } rle = malloc(sizeof(struct pccbb_reslist), M_DEVBUF, M_WAITOK); rle->type = type; @@ -1132,14 +1128,14 @@ pccbb_cardbus_activate_resource(device_t self, device_t child, int type, pccbb_cardbus_auto_open(sc, type); } - return bus_generic_activate_resource(self, child, type, rid, r); + return bus_generic_activate_resource(brdev, child, type, rid, r); } static int -pccbb_cardbus_deactivate_resource(device_t self, device_t child, int type, - int rid, struct resource *r) +pccbb_cardbus_deactivate_resource(device_t brdev, device_t child, int type, + int rid, struct resource *r) { - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); struct pccbb_reslist *rle; SLIST_FOREACH(rle, &sc->rl, entries) { @@ -1153,20 +1149,19 @@ pccbb_cardbus_deactivate_resource(device_t self, device_t child, int type, break; } } - return bus_generic_deactivate_resource(self, child, type, rid, r); + return bus_generic_deactivate_resource(brdev, child, type, rid, r); } -static struct resource* -pccbb_cardbus_alloc_resource(device_t self, device_t child, int type, int* rid, - u_long start, u_long end, u_long count, - u_int flags) +static struct resource * +pccbb_cardbus_alloc_resource(device_t brdev, device_t child, int type, int *rid, + u_long start, u_long end, u_long count, u_int flags) { if (type == SYS_RES_IRQ) { - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); if (start == 0) { start = end = rman_get_start(sc->sc_irq_res); } - return bus_generic_alloc_resource(self, child, type, rid, + return bus_generic_alloc_resource(brdev, child, type, rid, start, end, count, flags); } else { if (type == SYS_RES_MEMORY && start == 0 && end == ~0) { @@ -1176,16 +1171,16 @@ pccbb_cardbus_alloc_resource(device_t self, device_t child, int type, int* rid, start = CARDBUS_SYS_RES_IOPORT_START; end = CARDBUS_SYS_RES_IOPORT_END; } - return bus_generic_alloc_resource(self, child, type, rid, + return bus_generic_alloc_resource(brdev, child, type, rid, start, end, count, flags); } } static int -pccbb_cardbus_release_resource(device_t self, device_t child, int type, - int rid, struct resource *r) +pccbb_cardbus_release_resource(device_t brdev, device_t child, int type, + int rid, struct resource *r) { - return bus_generic_release_resource(self, child, type, rid, r); + return bus_generic_release_resource(brdev, child, type, rid, r); } /************************************************************************/ @@ -1193,23 +1188,23 @@ pccbb_cardbus_release_resource(device_t self, device_t child, int type, /************************************************************************/ static int -pccbb_pcic_power_enable_socket(device_t self, device_t child) +pccbb_pcic_power_enable_socket(device_t brdev, device_t child) { - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); DPRINTF(("pccbb_pcic_socket_enable:\n")); /* power down/up the socket to reset */ { - int voltage = pccbb_detect_voltage(self); + int voltage = pccbb_detect_voltage(brdev); - pccbb_power(self, CARD_VCC_0V | CARD_VPP_0V); + pccbb_power(brdev, CARD_VCC_0V | CARD_VPP_0V); if (voltage & CARD_5V_CARD) - pccbb_power(self, CARD_VCC_5V | CARD_VPP_VCC); + pccbb_power(brdev, CARD_VCC_5V | CARD_VPP_VCC); else if (voltage & CARD_3V_CARD) - pccbb_power(self, CARD_VCC_3V | CARD_VPP_VCC); + pccbb_power(brdev, CARD_VCC_3V | CARD_VPP_VCC); else { - device_printf(self, "Unknown card voltage\n"); + device_printf(brdev, "Unknown card voltage\n"); return ENXIO; } } @@ -1234,10 +1229,9 @@ pccbb_pcic_power_enable_socket(device_t self, device_t child) int cardtype; CARD_GET_TYPE(child, &cardtype); PCIC_MASK(sc, PCIC_INTR, | ((cardtype == PCCARD_IFTYPE_IO) ? - PCIC_INTR_CARDTYPE_IO : - PCIC_INTR_CARDTYPE_MEM)); + PCIC_INTR_CARDTYPE_IO : PCIC_INTR_CARDTYPE_MEM)); DEVPRINTF((sc->sc_dev, "card type is %s\n", - (cardtype == PCCARD_IFTYPE_IO) ? "io" : "mem")); + (cardtype == PCCARD_IFTYPE_IO) ? "io" : "mem")); } /* reinstall all the memory and io mappings */ @@ -1259,9 +1253,9 @@ pccbb_pcic_power_enable_socket(device_t self, device_t child) } static void -pccbb_pcic_power_disable_socket(device_t self, device_t child) +pccbb_pcic_power_disable_socket(device_t brdev, device_t child) { - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); DPRINTF(("pccbb_pcic_socket_disable\n")); @@ -1271,7 +1265,7 @@ pccbb_pcic_power_disable_socket(device_t self, device_t child) /* power down the socket */ PCIC_MASK(sc, PCIC_PWRCTL, &~PCIC_PWRCTL_OE); - pccbb_power(self, CARD_VCC_0V | CARD_VPP_0V); + pccbb_power(brdev, CARD_VCC_0V | CARD_VPP_0V); /* wait 300ms until power fails (Tpf). */ DELAY(300 * 1000); @@ -1286,7 +1280,7 @@ pccbb_pcic_wait_ready(struct pccbb_softc *sc) { int i; DEVPRINTF((sc->sc_dev, "pccbb_pcic_wait_ready: status 0x%02x\n", - PCIC_READ(sc, PCIC_IF_STATUS))); + PCIC_READ(sc, PCIC_IF_STATUS))); for (i = 0; i < 10000; i++) { if (PCIC_READ(sc, PCIC_IF_STATUS) & PCIC_IF_STATUS_READY) { return; @@ -1294,29 +1288,29 @@ pccbb_pcic_wait_ready(struct pccbb_softc *sc) DELAY(500); } device_printf(sc->sc_dev, "ready never happened, status = %02x\n", - PCIC_READ(sc, PCIC_IF_STATUS)); + PCIC_READ(sc, PCIC_IF_STATUS)); } -#define PCIC_MEMINFO(NUM) { \ - PCIC_SYSMEM_ADDR ## NUM ## _START_LSB, \ - PCIC_SYSMEM_ADDR ## NUM ## _START_MSB, \ - PCIC_SYSMEM_ADDR ## NUM ## _STOP_LSB, \ - PCIC_SYSMEM_ADDR ## NUM ## _STOP_MSB, \ - PCIC_SYSMEM_ADDR ## NUM ## _WIN, \ - PCIC_CARDMEM_ADDR ## NUM ## _LSB, \ - PCIC_CARDMEM_ADDR ## NUM ## _MSB, \ - PCIC_ADDRWIN_ENABLE_MEM ## NUM ## , \ +#define PCIC_MEMINFO(NUM) { \ + PCIC_SYSMEM_ADDR ## NUM ## _START_LSB, \ + PCIC_SYSMEM_ADDR ## NUM ## _START_MSB, \ + PCIC_SYSMEM_ADDR ## NUM ## _STOP_LSB, \ + PCIC_SYSMEM_ADDR ## NUM ## _STOP_MSB, \ + PCIC_SYSMEM_ADDR ## NUM ## _WIN, \ + PCIC_CARDMEM_ADDR ## NUM ## _LSB, \ + PCIC_CARDMEM_ADDR ## NUM ## _MSB, \ + PCIC_ADDRWIN_ENABLE_MEM ## NUM ##, \ } static struct mem_map_index_st { - int sysmem_start_lsb; - int sysmem_start_msb; - int sysmem_stop_lsb; - int sysmem_stop_msb; - int sysmem_win; - int cardmem_lsb; - int cardmem_msb; - int memenable; + int sysmem_start_lsb; + int sysmem_start_msb; + int sysmem_stop_lsb; + int sysmem_stop_msb; + int sysmem_win; + int cardmem_lsb; + int cardmem_msb; + int memenable; } mem_map_index[] = { PCIC_MEMINFO(0), PCIC_MEMINFO(1), @@ -1324,39 +1318,39 @@ static struct mem_map_index_st { PCIC_MEMINFO(3), PCIC_MEMINFO(4), }; -#undef PCIC_MEMINFO +#undef PCIC_MEMINFO static void pccbb_pcic_do_mem_map(struct pccbb_softc *sc, int win) { PCIC_WRITE(sc, mem_map_index[win].sysmem_start_lsb, - (sc->mem[win].addr >> PCIC_SYSMEM_ADDRX_SHIFT) & 0xff); + (sc->mem[win].addr >> PCIC_SYSMEM_ADDRX_SHIFT) & 0xff); PCIC_WRITE(sc, mem_map_index[win].sysmem_start_msb, - ((sc->mem[win].addr >> (PCIC_SYSMEM_ADDRX_SHIFT + 8)) & - PCIC_SYSMEM_ADDRX_START_MSB_ADDR_MASK) | 0x80); + ((sc->mem[win].addr >> (PCIC_SYSMEM_ADDRX_SHIFT + 8)) & + PCIC_SYSMEM_ADDRX_START_MSB_ADDR_MASK) | 0x80); PCIC_WRITE(sc, mem_map_index[win].sysmem_stop_lsb, - ((sc->mem[win].addr + sc->mem[win].realsize - 1) >> - PCIC_SYSMEM_ADDRX_SHIFT) & 0xff); + ((sc->mem[win].addr + sc->mem[win].realsize - 1) >> + PCIC_SYSMEM_ADDRX_SHIFT) & 0xff); PCIC_WRITE(sc, mem_map_index[win].sysmem_stop_msb, - (((sc->mem[win].addr + sc->mem[win].realsize - 1) >> - (PCIC_SYSMEM_ADDRX_SHIFT + 8)) & - PCIC_SYSMEM_ADDRX_STOP_MSB_ADDR_MASK) | - PCIC_SYSMEM_ADDRX_STOP_MSB_WAIT2); + (((sc->mem[win].addr + sc->mem[win].realsize - 1) >> + (PCIC_SYSMEM_ADDRX_SHIFT + 8)) & + PCIC_SYSMEM_ADDRX_STOP_MSB_ADDR_MASK) | + PCIC_SYSMEM_ADDRX_STOP_MSB_WAIT2); PCIC_WRITE(sc, mem_map_index[win].sysmem_win, - (sc->mem[win].addr >> PCIC_MEMREG_WIN_SHIFT) & 0xff); + (sc->mem[win].addr >> PCIC_MEMREG_WIN_SHIFT) & 0xff); PCIC_WRITE(sc, mem_map_index[win].cardmem_lsb, - (sc->mem[win].offset >> PCIC_CARDMEM_ADDRX_SHIFT) & 0xff); + (sc->mem[win].offset >> PCIC_CARDMEM_ADDRX_SHIFT) & 0xff); PCIC_WRITE(sc, mem_map_index[win].cardmem_msb, - ((sc->mem[win].offset >> (PCIC_CARDMEM_ADDRX_SHIFT + 8)) & - PCIC_CARDMEM_ADDRX_MSB_ADDR_MASK) | - ((sc->mem[win].kind == PCCARD_MEM_ATTR) ? - PCIC_CARDMEM_ADDRX_MSB_REGACTIVE_ATTR : 0)); + ((sc->mem[win].offset >> (PCIC_CARDMEM_ADDRX_SHIFT + 8)) & + PCIC_CARDMEM_ADDRX_MSB_ADDR_MASK) | + ((sc->mem[win].kind == PCCARD_MEM_ATTR) ? + PCIC_CARDMEM_ADDRX_MSB_REGACTIVE_ATTR : 0)); - PCIC_MASK(sc, PCIC_ADDRWIN_ENABLE, | PCIC_ADDRWIN_ENABLE_MEMCS16 - | mem_map_index[win].memenable); + PCIC_MASK(sc, PCIC_ADDRWIN_ENABLE, | PCIC_ADDRWIN_ENABLE_MEMCS16 | + mem_map_index[win].memenable); DELAY(100); @@ -1371,8 +1365,10 @@ pccbb_pcic_do_mem_map(struct pccbb_softc *sc, int win) r6 = PCIC_READ(sc, mem_map_index[win].cardmem_lsb); r7 = PCIC_READ(sc, mem_map_index[win].sysmem_win); DPRINTF(("pccbb_pcic_do_mem_map window %d: %02x%02x %02x%02x " - "%02x%02x %02x (%08x+%08x.%08x*%08lx)\n", win, r1, r2, r3, r4, r5, r6, r7, - sc->mem[win].addr, sc->mem[win].size, sc->mem[win].realsize, sc->mem[win].offset)); + "%02x%02x %02x (%08x+%08x.%08x*%08lx)\n", + win, r1, r2, r3, r4, r5, r6, r7, + sc->mem[win].addr, sc->mem[win].size, sc->mem[win].realsize, + sc->mem[win].offset)); } #endif } @@ -1407,8 +1403,8 @@ pccbb_pcic_mem_map(struct pccbb_softc *sc, int kind, sc->mem[*win].kind = kind; DPRINTF(("pccbb_pcic_mem_map window %d bus %x+%x+%lx card addr %x\n", - *win, sc->mem[*win].addr, sc->mem[*win].size, - sc->mem[*win].offset, card_addr)); + *win, sc->mem[*win].addr, sc->mem[*win].size, + sc->mem[*win].offset, card_addr)); pccbb_pcic_do_mem_map(sc, *win); @@ -1425,53 +1421,54 @@ pccbb_pcic_mem_unmap(struct pccbb_softc *sc, int window) sc->memalloc &= ~(1 << window); } -#define PCIC_IOINFO(NUM) { \ - PCIC_IOADDR ## NUM ## _START_LSB, \ - PCIC_IOADDR ## NUM ## _START_MSB, \ - PCIC_IOADDR ## NUM ## _STOP_LSB, \ - PCIC_IOADDR ## NUM ## _STOP_MSB, \ - PCIC_ADDRWIN_ENABLE_IO ## NUM ## , \ - PCIC_IOCTL_IO ## NUM ## _WAITSTATE \ - | PCIC_IOCTL_IO ## NUM ## _ZEROWAIT \ - | PCIC_IOCTL_IO ## NUM ## _IOCS16SRC_MASK \ - | PCIC_IOCTL_IO ## NUM ## _DATASIZE_MASK, \ - { \ - PCIC_IOCTL_IO ## NUM ## _IOCS16SRC_CARD, \ - PCIC_IOCTL_IO ## NUM ## _IOCS16SRC_DATASIZE \ - | PCIC_IOCTL_IO ## NUM ## _DATASIZE_8BIT, \ - PCIC_IOCTL_IO ## NUM ## _IOCS16SRC_DATASIZE \ - | PCIC_IOCTL_IO ## NUM ## _DATASIZE_16BIT, \ - } \ +#define PCIC_IOINFO(NUM) { \ + PCIC_IOADDR ## NUM ## _START_LSB, \ + PCIC_IOADDR ## NUM ## _START_MSB, \ + PCIC_IOADDR ## NUM ## _STOP_LSB, \ + PCIC_IOADDR ## NUM ## _STOP_MSB, \ + PCIC_ADDRWIN_ENABLE_IO ## NUM ##, \ + PCIC_IOCTL_IO ## NUM ## _WAITSTATE \ + | PCIC_IOCTL_IO ## NUM ## _ZEROWAIT \ + | PCIC_IOCTL_IO ## NUM ## _IOCS16SRC_MASK \ + | PCIC_IOCTL_IO ## NUM ## _DATASIZE_MASK, \ + { \ + PCIC_IOCTL_IO ## NUM ## _IOCS16SRC_CARD, \ + PCIC_IOCTL_IO ## NUM ## _IOCS16SRC_DATASIZE \ + | PCIC_IOCTL_IO ## NUM ## _DATASIZE_8BIT, \ + PCIC_IOCTL_IO ## NUM ## _IOCS16SRC_DATASIZE \ + | PCIC_IOCTL_IO ## NUM ## _DATASIZE_16BIT, \ + } \ } static struct io_map_index_st { - int start_lsb; - int start_msb; - int stop_lsb; - int stop_msb; - int ioenable; - int ioctlmask; - int ioctlbits[3]; /* indexed by PCCARD_WIDTH_* */ + int start_lsb; + int start_msb; + int stop_lsb; + int stop_msb; + int ioenable; + int ioctlmask; + int ioctlbits[3]; /* indexed by PCCARD_WIDTH_* */ } io_map_index[] = { PCIC_IOINFO(0), PCIC_IOINFO(1), }; -#undef PCIC_IOINFO +#undef PCIC_IOINFO -static void pccbb_pcic_do_io_map(struct pccbb_softc *sc, int win) +static void +pccbb_pcic_do_io_map(struct pccbb_softc *sc, int win) { PCIC_WRITE(sc, io_map_index[win].start_lsb, sc->io[win].addr & 0xff); PCIC_WRITE(sc, io_map_index[win].start_msb, - (sc->io[win].addr >> 8) & 0xff); + (sc->io[win].addr >> 8) & 0xff); PCIC_WRITE(sc, io_map_index[win].stop_lsb, - (sc->io[win].addr + sc->io[win].size - 1) & 0xff); + (sc->io[win].addr + sc->io[win].size - 1) & 0xff); PCIC_WRITE(sc, io_map_index[win].stop_msb, - ((sc->io[win].addr + sc->io[win].size - 1) >> 8) & 0xff); + ((sc->io[win].addr + sc->io[win].size - 1) >> 8) & 0xff); PCIC_MASK2(sc, PCIC_IOCTL, - & ~io_map_index[win].ioctlmask, - | io_map_index[win].ioctlbits[sc->io[win].width]); + & ~io_map_index[win].ioctlmask, + | io_map_index[win].ioctlbits[sc->io[win].width]); PCIC_MASK(sc, PCIC_ADDRWIN_ENABLE, | io_map_index[win].ioenable); #ifdef CBB_DEBUG @@ -1482,8 +1479,8 @@ static void pccbb_pcic_do_io_map(struct pccbb_softc *sc, int win) r3 = PCIC_READ(sc, io_map_index[win].stop_msb); r4 = PCIC_READ(sc, io_map_index[win].stop_lsb); DPRINTF(("pccbb_pcic_do_io_map window %d: %02x%02x %02x%02x " - "(%08x+%08x)\n", win, r1, r2, r3, r4, - sc->io[win].addr, sc->io[win].size)); + "(%08x+%08x)\n", win, r1, r2, r3, r4, + sc->io[win].addr, sc->io[win].size)); } #endif } @@ -1516,8 +1513,8 @@ pccbb_pcic_io_map(struct pccbb_softc *sc, int width, sc->io[*win].width = width; DPRINTF(("pccbb_pcic_io_map window %d %s port %x+%x\n", - *win, width_names[width], sc->io[*win].addr, - sc->io[*win].size)); + *win, width_names[width], sc->io[*win].addr, + sc->io[*win].size)); pccbb_pcic_do_io_map(sc, *win); @@ -1543,13 +1540,13 @@ pccbb_pcic_io_unmap(struct pccbb_softc *sc, int window) } static int -pccbb_pcic_activate_resource(device_t self, device_t child, int type, int rid, - struct resource *r) +pccbb_pcic_activate_resource(device_t brdev, device_t child, int type, int rid, + struct resource *r) { int err; int win; struct pccbb_reslist *rle; - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); if (rman_get_flags(r) & RF_ACTIVE) return 0; @@ -1575,15 +1572,15 @@ pccbb_pcic_activate_resource(device_t self, device_t child, int type, int rid, break; } } - err = bus_generic_activate_resource(self, child, type, rid, r); + err = bus_generic_activate_resource(brdev, child, type, rid, r); return (err); } static int -pccbb_pcic_deactivate_resource(device_t self, device_t child, int type, - int rid, struct resource *r) +pccbb_pcic_deactivate_resource(device_t brdev, device_t child, int type, + int rid, struct resource *r) { - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); int win; struct pccbb_reslist *rle; win = -1; @@ -1609,18 +1606,19 @@ pccbb_pcic_deactivate_resource(device_t self, device_t child, int type, default: break; } - return bus_generic_deactivate_resource(self, child, type, rid, r); + return bus_generic_deactivate_resource(brdev, child, type, rid, r); } -static struct resource* -pccbb_pcic_alloc_resource(device_t self, device_t child, int type, int* rid, - u_long start, u_long end, u_long count, u_int flags) +static struct resource * +pccbb_pcic_alloc_resource(device_t brdev, device_t child, int type, int *rid, + u_long start, u_long end, u_long count, u_int flags) { struct resource *r = NULL; - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); struct pccbb_reslist *rle; if ((sc->sc_flags & PCCBB_PCIC_MEM_32) == 0) { + /* XXX: how do we do this? */ panic("PCCBB bridge cannot handle non MEM_32 bridges\n"); } @@ -1631,8 +1629,8 @@ pccbb_pcic_alloc_resource(device_t self, device_t child, int type, int* rid, start = CARDBUS_SYS_RES_MEMORY_START; /* XXX -- should be tweakable*/ end = CARDBUS_SYS_RES_MEMORY_END; } - flags = (flags & ~RF_ALIGNMENT_MASK) - | rman_make_alignment_flags(PCCBB_MEMALIGN); + flags = (flags & ~RF_ALIGNMENT_MASK) | + rman_make_alignment_flags(PCCBB_MEMALIGN); break; case SYS_RES_IOPORT: if (start < 0x100) @@ -1645,7 +1643,7 @@ pccbb_pcic_alloc_resource(device_t self, device_t child, int type, int* rid, start = end = rman_get_start(sc->sc_irq_res); break; } - r = bus_generic_alloc_resource(self, child, type, rid, start, end, + r = bus_generic_alloc_resource(brdev, child, type, rid, start, end, count, flags & ~RF_ACTIVE); if (r == NULL) return NULL; @@ -1661,7 +1659,7 @@ pccbb_pcic_alloc_resource(device_t self, device_t child, int type, int* rid, if (flags & RF_ACTIVE) { if (bus_activate_resource(child, type, *rid, r) != 0) { - BUS_RELEASE_RESOURCE(self, child, type, *rid, r); + BUS_RELEASE_RESOURCE(brdev, child, type, *rid, r); return NULL; } } @@ -1670,10 +1668,10 @@ pccbb_pcic_alloc_resource(device_t self, device_t child, int type, int* rid, } static int -pccbb_pcic_release_resource(device_t self, device_t child, int type, - int rid, struct resource *res) +pccbb_pcic_release_resource(device_t brdev, device_t child, int type, + int rid, struct resource *res) { - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); struct pccbb_reslist *rle; int count = 0; @@ -1697,7 +1695,7 @@ pccbb_pcic_release_resource(device_t self, device_t child, int type, panic("pccbb_pcic: releasing bogus resource"); } - return bus_generic_release_resource(self, child, type, rid, res); + return bus_generic_release_resource(brdev, child, type, rid, res); } /************************************************************************/ @@ -1705,10 +1703,10 @@ pccbb_pcic_release_resource(device_t self, device_t child, int type, /************************************************************************/ static int -pccbb_pcic_set_res_flags(device_t self, device_t child, int type, int rid, - u_int32_t flags) +pccbb_pcic_set_res_flags(device_t brdev, device_t child, int type, int rid, + u_int32_t flags) { - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); if (type != SYS_RES_MEMORY) return (EINVAL); @@ -1718,10 +1716,10 @@ pccbb_pcic_set_res_flags(device_t self, device_t child, int type, int rid, } static int -pccbb_pcic_set_memory_offset(device_t self, device_t child, int rid, +pccbb_pcic_set_memory_offset(device_t brdev, device_t child, int rid, u_int32_t cardaddr, u_int32_t *deltap) { - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); int win; struct pccbb_reslist *rle; u_int32_t delta; @@ -1744,7 +1742,7 @@ pccbb_pcic_set_memory_offset(device_t self, device_t child, int rid, if (deltap) *deltap = delta; cardaddr -= delta; - sc->mem[win].realsize = sc->mem[win].size + delta + + sc->mem[win].realsize = sc->mem[win].size + delta + PCIC_MEM_PAGESIZE - 1; sc->mem[win].realsize = sc->mem[win].realsize - (sc->mem[win].realsize % PCIC_MEM_PAGESIZE); @@ -1759,24 +1757,24 @@ pccbb_pcic_set_memory_offset(device_t self, device_t child, int rid, /************************************************************************/ static int -pccbb_power_enable_socket(device_t self, device_t child) +pccbb_power_enable_socket(device_t brdev, device_t child) { - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); if (sc->sc_flags & PCCBB_16BIT_CARD) - return pccbb_pcic_power_enable_socket(self, child); + return pccbb_pcic_power_enable_socket(brdev, child); else - return pccbb_cardbus_power_enable_socket(self, child); + return pccbb_cardbus_power_enable_socket(brdev, child); } static void -pccbb_power_disable_socket(device_t self, device_t child) +pccbb_power_disable_socket(device_t brdev, device_t child) { - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); if (sc->sc_flags & PCCBB_16BIT_CARD) - pccbb_pcic_power_disable_socket(self, child); + pccbb_pcic_power_disable_socket(brdev, child); else - pccbb_cardbus_power_disable_socket(self, child); + pccbb_cardbus_power_disable_socket(brdev, child); } /************************************************************************/ /* BUS Methods */ @@ -1784,64 +1782,64 @@ pccbb_power_disable_socket(device_t self, device_t child) static int -pccbb_activate_resource(device_t self, device_t child, int type, int rid, - struct resource *r) +pccbb_activate_resource(device_t brdev, device_t child, int type, int rid, + struct resource *r) { - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); if (sc->sc_flags & PCCBB_16BIT_CARD) - return pccbb_pcic_activate_resource(self, child, type, rid, r); + return pccbb_pcic_activate_resource(brdev, child, type, rid, r); else - return pccbb_cardbus_activate_resource(self, child, type, rid, - r); + return pccbb_cardbus_activate_resource(brdev, child, type, rid, + r); } static int -pccbb_deactivate_resource(device_t self, device_t child, int type, - int rid, struct resource *r) +pccbb_deactivate_resource(device_t brdev, device_t child, int type, + int rid, struct resource *r) { - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); if (sc->sc_flags & PCCBB_16BIT_CARD) - return pccbb_pcic_deactivate_resource(self, child, type, - rid, r); + return pccbb_pcic_deactivate_resource(brdev, child, type, + rid, r); else - return pccbb_cardbus_deactivate_resource(self, child, type, - rid, r); + return pccbb_cardbus_deactivate_resource(brdev, child, type, + rid, r); } -static struct resource* -pccbb_alloc_resource(device_t self, device_t child, int type, int* rid, - u_long start, u_long end, u_long count, u_int flags) +static struct resource * +pccbb_alloc_resource(device_t brdev, device_t child, int type, int *rid, + u_long start, u_long end, u_long count, u_int flags) { - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); if (sc->sc_flags & PCCBB_16BIT_CARD) - return pccbb_pcic_alloc_resource(self, child, type, rid, - start, end, count, flags); + return pccbb_pcic_alloc_resource(brdev, child, type, rid, + start, end, count, flags); else - return pccbb_cardbus_alloc_resource(self, child, type, rid, - start, end, count, flags); + return pccbb_cardbus_alloc_resource(brdev, child, type, rid, + start, end, count, flags); } static int -pccbb_release_resource(device_t self, device_t child, int type, int rid, - struct resource *r) +pccbb_release_resource(device_t brdev, device_t child, int type, int rid, + struct resource *r) { - struct pccbb_softc *sc = device_get_softc(self); + struct pccbb_softc *sc = device_get_softc(brdev); if (sc->sc_flags & PCCBB_16BIT_CARD) - return pccbb_pcic_release_resource(self, child, type, - rid, r); + return pccbb_pcic_release_resource(brdev, child, type, + rid, r); else - return pccbb_cardbus_release_resource(self, child, type, - rid, r); + return pccbb_cardbus_release_resource(brdev, child, type, + rid, r); } static int -pccbb_read_ivar(device_t dev, device_t child, int which, uintptr_t *result) +pccbb_read_ivar(device_t brdev, device_t child, int which, uintptr_t *result) { - struct pccbb_softc *sc = device_get_softc(dev); + struct pccbb_softc *sc = device_get_softc(brdev); switch (which) { case PCIB_IVAR_BUS: @@ -1852,9 +1850,9 @@ pccbb_read_ivar(device_t dev, device_t child, int which, uintptr_t *result) } static int -pccbb_write_ivar(device_t dev, device_t child, int which, uintptr_t value) +pccbb_write_ivar(device_t brdev, device_t child, int which, uintptr_t value) { - struct pccbb_softc *sc = device_get_softc(dev); + struct pccbb_softc *sc = device_get_softc(brdev); switch (which) { case PCIB_IVAR_BUS: @@ -1869,30 +1867,30 @@ pccbb_write_ivar(device_t dev, device_t child, int which, uintptr_t value) /************************************************************************/ static int -pccbb_maxslots(device_t dev) +pccbb_maxslots(device_t brdev) { return 0; } static u_int32_t -pccbb_read_config(device_t dev, int b, int s, int f, int reg, int width) +pccbb_read_config(device_t brdev, int b, int s, int f, int reg, int width) { /* * Pass through to the next ppb up the chain (i.e. our grandparent). */ - return PCIB_READ_CONFIG(device_get_parent(device_get_parent(dev)), - b, s, f, reg, width); + return PCIB_READ_CONFIG(device_get_parent(device_get_parent(brdev)), + b, s, f, reg, width); } static void -pccbb_write_config(device_t dev, int b, int s, int f, int reg, u_int32_t val, - int width) +pccbb_write_config(device_t brdev, int b, int s, int f, int reg, u_int32_t val, + int width) { /* * Pass through to the next ppb up the chain (i.e. our grandparent). */ - PCIB_WRITE_CONFIG(device_get_parent(device_get_parent(dev)), - b, s, f, reg, val, width); + PCIB_WRITE_CONFIG(device_get_parent(device_get_parent(brdev)), + b, s, f, reg, val, width); } static device_method_t pccbb_methods[] = { diff --git a/sys/dev/pccbb/pccbbdevid.h b/sys/dev/pccbb/pccbbdevid.h index d0a488c..77ff487 100644 --- a/sys/dev/pccbb/pccbbdevid.h +++ b/sys/dev/pccbb/pccbbdevid.h @@ -44,7 +44,7 @@ #define PCI_DEVICE_ID_RICOH_RL5C476 0x04761180ul #define PCI_DEVICE_ID_RICOH_RL5C477 0x04771180ul #define PCI_DEVICE_ID_RICOH_RL5C478 0x04781180ul -#define PCI_DEVICE_ID_PCIC_TI1031 0xac13104cul +#define PCI_DEVICE_ID_PCIC_TI1031 0xac13104cul #define PCI_DEVICE_ID_PCIC_TI1130 0xac12104cul #define PCI_DEVICE_ID_PCIC_TI1131 0xac15104cul #define PCI_DEVICE_ID_PCIC_TI1210 0xac1a104cul diff --git a/sys/dev/pccbb/pccbbreg.h b/sys/dev/pccbb/pccbbreg.h index f207752..70c0815 100644 --- a/sys/dev/pccbb/pccbbreg.h +++ b/sys/dev/pccbb/pccbbreg.h @@ -34,126 +34,126 @@ /* PCI header registers */ -#define PCCBBR_SOCKBASE 0x10 /* len=4 */ - -#define PCCBBR_MEMBASE0 0x1c /* len=4 */ -#define PCCBBR_MEMLIMIT0 0x20 /* len=4 */ -#define PCCBBR_MEMBASE1 0x24 /* len=4 */ -#define PCCBBR_MEMLIMIT1 0x28 /* len=4 */ -#define PCCBBR_IOBASE0 0x2c /* len=4 */ -#define PCCBBR_IOLIMIT0 0x30 /* len=4 */ -#define PCCBBR_IOBASE1 0x34 /* len=4 */ -#define PCCBBR_IOLIMIT1 0x38 /* len=4 */ +#define PCCBBR_SOCKBASE 0x10 /* len=4 */ + +#define PCCBBR_MEMBASE0 0x1c /* len=4 */ +#define PCCBBR_MEMLIMIT0 0x20 /* len=4 */ +#define PCCBBR_MEMBASE1 0x24 /* len=4 */ +#define PCCBBR_MEMLIMIT1 0x28 /* len=4 */ +#define PCCBBR_IOBASE0 0x2c /* len=4 */ +#define PCCBBR_IOLIMIT0 0x30 /* len=4 */ +#define PCCBBR_IOBASE1 0x34 /* len=4 */ +#define PCCBBR_IOLIMIT1 0x38 /* len=4 */ #define PCCBB_MEMALIGN 4096 #define PCCBB_IOALIGN 4 #define PCCBBR_INTRLINE 0x3c /* len=1 */ #define PCCBBR_INTRPIN 0x3d /* len=1 */ #define PCCBBR_BRIDGECTRL 0x3e /* len=2 */ -# define PCCBBM_BRIDGECTRL_MASTER_ABORT 0x0020 -# define PCCBBM_BRIDGECTRL_RESET 0x0040 -# define PCCBBM_BRIDGECTRL_INTR_IREQ_EN 0x0080 -# define PCCBBM_BRIDGECTRL_PREFETCH_0 0x0100 -# define PCCBBM_BRIDGECTRL_PREFETCH_1 0x0200 -# define PCCBBM_BRIDGECTRL_WRITE_POST_EN 0x0400 +# define PCCBBM_BRIDGECTRL_MASTER_ABORT 0x0020 +# define PCCBBM_BRIDGECTRL_RESET 0x0040 +# define PCCBBM_BRIDGECTRL_INTR_IREQ_EN 0x0080 +# define PCCBBM_BRIDGECTRL_PREFETCH_0 0x0100 +# define PCCBBM_BRIDGECTRL_PREFETCH_1 0x0200 +# define PCCBBM_BRIDGECTRL_WRITE_POST_EN 0x0400 /* additional bit for RF5C46[567] */ -# define PCCBBM_BRIDGECTRL_RL_3E0_EN 0x0800 -# define PCCBBM_BRIDGECTRL_RL_3E2_EN 0x1000 +# define PCCBBM_BRIDGECTRL_RL_3E0_EN 0x0800 +# define PCCBBM_BRIDGECTRL_RL_3E2_EN 0x1000 -#define PCCBBR_LEGACY 0x44 /* len=4 */ +#define PCCBBR_LEGACY 0x44 /* len=4 */ -#define PCCBBR_CBCTRL 0x91 /* len=1 */ +#define PCCBBR_CBCTRL 0x91 /* len=1 */ /* bits for TI 113X */ -# define PCCBBM_CBCTRL_113X_RI_EN 0x80 -# define PCCBBM_CBCTRL_113X_ZV_EN 0x40 -# define PCCBBM_CBCTRL_113X_PCI_IRQ_EN 0x20 -# define PCCBBM_CBCTRL_113X_PCI_INTR 0x10 -# define PCCBBM_CBCTRL_113X_PCI_CSC 0x08 -# define PCCBBM_CBCTRL_113X_PCI_CSC_D 0x04 -# define PCCBBM_CBCTRL_113X_SPEAKER_EN 0x02 -# define PCCBBM_CBCTRL_113X_INTR_DET 0x01 +# define PCCBBM_CBCTRL_113X_RI_EN 0x80 +# define PCCBBM_CBCTRL_113X_ZV_EN 0x40 +# define PCCBBM_CBCTRL_113X_PCI_IRQ_EN 0x20 +# define PCCBBM_CBCTRL_113X_PCI_INTR 0x10 +# define PCCBBM_CBCTRL_113X_PCI_CSC 0x08 +# define PCCBBM_CBCTRL_113X_PCI_CSC_D 0x04 +# define PCCBBM_CBCTRL_113X_SPEAKER_EN 0x02 +# define PCCBBM_CBCTRL_113X_INTR_DET 0x01 /* bits for TI 12XX */ -# define PCCBBM_CBCTRL_12XX_RI_EN 0x80 -# define PCCBBM_CBCTRL_12XX_ZV_EN 0x40 -# define PCCBBM_CBCTRL_12XX_AUD2MUX 0x04 -# define PCCBBM_CBCTRL_12XX_SPEAKER_EN 0x02 -# define PCCBBM_CBCTRL_12XX_INTR_DET 0x01 -#define PCCBBR_DEVCTRL 0x92 /* len=1 */ -# define PCCBBM_DEVCTRL_INT_SERIAL 0x04 -# define PCCBBM_DEVCTRL_INT_PCI 0x02 - -#define PCCBBR_TOPIC_SOCKETCTRL 0x90 -# define PCCBBM_TOPIC_SOCKETCTRL_SCR_IRQSEL 0x00000001 /* PCI intr */ - -#define PCCBBR_TOPIC_SLOTCTRL 0xa0 -# define PCCBBM_TOPIC_SLOTCTRL_SLOTON 0x00000080 -# define PCCBBM_TOPIC_SLOTCTRL_SLOTEN 0x00000040 -# define PCCBBM_TOPIC_SLOTCTRL_ID_LOCK 0x00000020 -# define PCCBBM_TOPIC_SLOTCTRL_ID_WP 0x00000010 -# define PCCBBM_TOPIC_SLOTCTRL_PORT_MASK 0x0000000c -# define PCCBBM_TOPIC_SLOTCTRL_PORT_SHIFT 2 -# define PCCBBM_TOPIC_SLOTCTRL_OSF_MASK 0x00000003 -# define PCCBBM_TOPIC_SLOTCTRL_OSF_SHIFT 0 -# define PCCBBM_TOPIC_SLOTCTRL_INTB 0x00002000 -# define PCCBBM_TOPIC_SLOTCTRL_INTA 0x00001000 -# define PCCBBM_TOPIC_SLOTCTRL_INT_MASK 0x00003000 -# define PCCBBM_TOPIC_SLOTCTRL_CLOCK_MASK 0x00000c00 -# define PCCBBM_TOPIC_SLOTCTRL_CLOCK_2 0x00000800 /* PCI Clock/2 */ -# define PCCBBM_TOPIC_SLOTCTRL_CLOCK_1 0x00000400 /* PCI Clock */ -# define PCCBBM_TOPIC_SLOTCTRL_CLOCK_0 0x00000000 /* no clock */ -# define PCCBBM_TOPIC_SLOTCTRL_CARDBUS 0x80000000 -# define PCCBBM_TOPIC_SLOTCTRL_VS1 0x04000000 -# define PCCBBM_TOPIC_SLOTCTRL_VS2 0x02000000 -# define PCCBBM_TOPIC_SLOTCTRL_SWDETECT 0x01000000 +# define PCCBBM_CBCTRL_12XX_RI_EN 0x80 +# define PCCBBM_CBCTRL_12XX_ZV_EN 0x40 +# define PCCBBM_CBCTRL_12XX_AUD2MUX 0x04 +# define PCCBBM_CBCTRL_12XX_SPEAKER_EN 0x02 +# define PCCBBM_CBCTRL_12XX_INTR_DET 0x01 +#define PCCBBR_DEVCTRL 0x92 /* len=1 */ +# define PCCBBM_DEVCTRL_INT_SERIAL 0x04 +# define PCCBBM_DEVCTRL_INT_PCI 0x02 + +#define PCCBBR_TOPIC_SOCKETCTRL 0x90 +# define PCCBBM_TOPIC_SOCKETCTRL_SCR_IRQSEL 0x00000001 /* PCI intr */ + +#define PCCBBR_TOPIC_SLOTCTRL 0xa0 +# define PCCBBM_TOPIC_SLOTCTRL_SLOTON 0x00000080 +# define PCCBBM_TOPIC_SLOTCTRL_SLOTEN 0x00000040 +# define PCCBBM_TOPIC_SLOTCTRL_ID_LOCK 0x00000020 +# define PCCBBM_TOPIC_SLOTCTRL_ID_WP 0x00000010 +# define PCCBBM_TOPIC_SLOTCTRL_PORT_MASK 0x0000000c +# define PCCBBM_TOPIC_SLOTCTRL_PORT_SHIFT 2 +# define PCCBBM_TOPIC_SLOTCTRL_OSF_MASK 0x00000003 +# define PCCBBM_TOPIC_SLOTCTRL_OSF_SHIFT 0 +# define PCCBBM_TOPIC_SLOTCTRL_INTB 0x00002000 +# define PCCBBM_TOPIC_SLOTCTRL_INTA 0x00001000 +# define PCCBBM_TOPIC_SLOTCTRL_INT_MASK 0x00003000 +# define PCCBBM_TOPIC_SLOTCTRL_CLOCK_MASK 0x00000c00 +# define PCCBBM_TOPIC_SLOTCTRL_CLOCK_2 0x00000800 /* PCI Clk/2 */ +# define PCCBBM_TOPIC_SLOTCTRL_CLOCK_1 0x00000400 /* PCI Clk */ +# define PCCBBM_TOPIC_SLOTCTRL_CLOCK_0 0x00000000 /* no clock */ +# define PCCBBM_TOPIC_SLOTCTRL_CARDBUS 0x80000000 +# define PCCBBM_TOPIC_SLOTCTRL_VS1 0x04000000 +# define PCCBBM_TOPIC_SLOTCTRL_VS2 0x02000000 +# define PCCBBM_TOPIC_SLOTCTRL_SWDETECT 0x01000000 /* Socket definitions */ -#define PCCBB_SOCKET_EVENT_CSTS 0x01 /* Card Status Change */ -#define PCCBB_SOCKET_EVENT_CD1 0x02 /* Card Detect 1 */ -#define PCCBB_SOCKET_EVENT_CD2 0x04 /* Card Detect 2 */ -#define PCCBB_SOCKET_EVENT_CD 0x06 /* Card Detect all */ -#define PCCBB_SOCKET_EVENT_POWER 0x08 /* Power Cycle */ - -#define PCCBB_SOCKET_MASK_CSTS 0x01 /* Card Status Change */ -#define PCCBB_SOCKET_MASK_CD 0x06 /* Card Detect */ -#define PCCBB_SOCKET_MASK_POWER 0x08 /* Power Cycle */ - -#define PCCBB_SOCKET_STAT_CARDSTS 0x00000001 /* Card Status Change */ -#define PCCBB_SOCKET_STAT_CD1 0x00000002 /* Card Detect 1 */ -#define PCCBB_SOCKET_STAT_CD2 0x00000004 /* Card Detect 2 */ -#define PCCBB_SOCKET_STAT_CD 0x00000006 /* Card Detect all */ -#define PCCBB_SOCKET_STAT_PWRCYCLE 0x00000008 /* Power Cycle */ -#define PCCBB_SOCKET_STAT_16BIT 0x00000010 /* 16-bit Card */ -#define PCCBB_SOCKET_STAT_CB 0x00000020 /* Cardbus Card */ -#define PCCBB_SOCKET_STAT_IREQ 0x00000040 /* Ready */ -#define PCCBB_SOCKET_STAT_NOTCARD 0x00000080 /* Unrecognized Card */ -#define PCCBB_SOCKET_STAT_DATALOST 0x00000100 /* Data Lost */ -#define PCCBB_SOCKET_STAT_BADVCC 0x00000200 /* Bad VccRequest */ -#define PCCBB_SOCKET_STAT_5VCARD 0x00000400 /* 5 V Card */ -#define PCCBB_SOCKET_STAT_3VCARD 0x00000800 /* 3.3 V Card */ -#define PCCBB_SOCKET_STAT_XVCARD 0x00001000 /* X.X V Card */ -#define PCCBB_SOCKET_STAT_YVCARD 0x00002000 /* Y.Y V Card */ -#define PCCBB_SOCKET_STAT_5VSOCK 0x10000000 /* 5 V Socket */ -#define PCCBB_SOCKET_STAT_3VSOCK 0x20000000 /* 3.3 V Socket */ -#define PCCBB_SOCKET_STAT_XVSOCK 0x40000000 /* X.X V Socket */ -#define PCCBB_SOCKET_STAT_YVSOCK 0x80000000 /* Y.Y V Socket */ - -#define PCCBB_SOCKET_FORCE_BADVCC 0x0200 /* Bad Vcc Request */ - -#define PCCBB_SOCKET_CTRL_VPPMASK 0x07 -#define PCCBB_SOCKET_CTRL_VPP_OFF 0x00 -#define PCCBB_SOCKET_CTRL_VPP_12V 0x01 -#define PCCBB_SOCKET_CTRL_VPP_5V 0x02 -#define PCCBB_SOCKET_CTRL_VPP_3V 0x03 -#define PCCBB_SOCKET_CTRL_VPP_XV 0x04 -#define PCCBB_SOCKET_CTRL_VPP_YV 0x05 - -#define PCCBB_SOCKET_CTRL_VCCMASK 0x70 -#define PCCBB_SOCKET_CTRL_VCC_OFF 0x00 -#define PCCBB_SOCKET_CTRL_VCC_5V 0x20 -#define PCCBB_SOCKET_CTRL_VCC_3V 0x30 -#define PCCBB_SOCKET_CTRL_VCC_XV 0x40 -#define PCCBB_SOCKET_CTRL_VCC_YV 0x50 - -#define PCCBB_SOCKET_CTRL_STOPCLK 0x80 +#define PCCBB_SOCKET_EVENT_CSTS 0x01 /* Card Status Change */ +#define PCCBB_SOCKET_EVENT_CD1 0x02 /* Card Detect 1 */ +#define PCCBB_SOCKET_EVENT_CD2 0x04 /* Card Detect 2 */ +#define PCCBB_SOCKET_EVENT_CD 0x06 /* Card Detect all */ +#define PCCBB_SOCKET_EVENT_POWER 0x08 /* Power Cycle */ + +#define PCCBB_SOCKET_MASK_CSTS 0x01 /* Card Status Change */ +#define PCCBB_SOCKET_MASK_CD 0x06 /* Card Detect */ +#define PCCBB_SOCKET_MASK_POWER 0x08 /* Power Cycle */ + +#define PCCBB_SOCKET_STAT_CARDSTS 0x00000001 /* Card Status Change */ +#define PCCBB_SOCKET_STAT_CD1 0x00000002 /* Card Detect 1 */ +#define PCCBB_SOCKET_STAT_CD2 0x00000004 /* Card Detect 2 */ +#define PCCBB_SOCKET_STAT_CD 0x00000006 /* Card Detect all */ +#define PCCBB_SOCKET_STAT_PWRCYCLE 0x00000008 /* Power Cycle */ +#define PCCBB_SOCKET_STAT_16BIT 0x00000010 /* 16-bit Card */ +#define PCCBB_SOCKET_STAT_CB 0x00000020 /* Cardbus Card */ +#define PCCBB_SOCKET_STAT_IREQ 0x00000040 /* Ready */ +#define PCCBB_SOCKET_STAT_NOTCARD 0x00000080 /* Unrecognized Card */ +#define PCCBB_SOCKET_STAT_DATALOST 0x00000100 /* Data Lost */ +#define PCCBB_SOCKET_STAT_BADVCC 0x00000200 /* Bad VccRequest */ +#define PCCBB_SOCKET_STAT_5VCARD 0x00000400 /* 5 V Card */ +#define PCCBB_SOCKET_STAT_3VCARD 0x00000800 /* 3.3 V Card */ +#define PCCBB_SOCKET_STAT_XVCARD 0x00001000 /* X.X V Card */ +#define PCCBB_SOCKET_STAT_YVCARD 0x00002000 /* Y.Y V Card */ +#define PCCBB_SOCKET_STAT_5VSOCK 0x10000000 /* 5 V Socket */ +#define PCCBB_SOCKET_STAT_3VSOCK 0x20000000 /* 3.3 V Socket */ +#define PCCBB_SOCKET_STAT_XVSOCK 0x40000000 /* X.X V Socket */ +#define PCCBB_SOCKET_STAT_YVSOCK 0x80000000 /* Y.Y V Socket */ + +#define PCCBB_SOCKET_FORCE_BADVCC 0x0200 /* Bad Vcc Request */ + +#define PCCBB_SOCKET_CTRL_VPPMASK 0x07 +#define PCCBB_SOCKET_CTRL_VPP_OFF 0x00 +#define PCCBB_SOCKET_CTRL_VPP_12V 0x01 +#define PCCBB_SOCKET_CTRL_VPP_5V 0x02 +#define PCCBB_SOCKET_CTRL_VPP_3V 0x03 +#define PCCBB_SOCKET_CTRL_VPP_XV 0x04 +#define PCCBB_SOCKET_CTRL_VPP_YV 0x05 + +#define PCCBB_SOCKET_CTRL_VCCMASK 0x70 +#define PCCBB_SOCKET_CTRL_VCC_OFF 0x00 +#define PCCBB_SOCKET_CTRL_VCC_5V 0x20 +#define PCCBB_SOCKET_CTRL_VCC_3V 0x30 +#define PCCBB_SOCKET_CTRL_VCC_XV 0x40 +#define PCCBB_SOCKET_CTRL_VCC_YV 0x50 + +#define PCCBB_SOCKET_CTRL_STOPCLK 0x80 #include <dev/pccbb/pccbbdevid.h> diff --git a/sys/dev/pccbb/pccbbvar.h b/sys/dev/pccbb/pccbbvar.h index 76aed70..27e1bf66 100644 --- a/sys/dev/pccbb/pccbbvar.h +++ b/sys/dev/pccbb/pccbbvar.h @@ -34,47 +34,47 @@ struct intrhand { void(*func)(void*arg); - void* arg; + void *arg; STAILQ_ENTRY(intrhand) entries; }; struct pccbb_socketreg { - u_int32_t socket_event; - u_int32_t socket_mask; - u_int32_t socket_state; - u_int32_t socket_force; - u_int32_t socket_control; - u_int32_t socket_power; + u_int32_t socket_event; + u_int32_t socket_mask; + u_int32_t socket_state; + u_int32_t socket_force; + u_int32_t socket_control; + u_int32_t socket_power; }; struct pccbb_reslist { SLIST_ENTRY(pccbb_reslist) entries; - int type; - int rid; + int type; + int rid; u_int32_t start; u_int32_t end; device_t odev; int win; }; -#define PCCBB_AUTO_OPEN_SMALLHOLE 0x100 +#define PCCBB_AUTO_OPEN_SMALLHOLE 0x100 struct pccbb_softc { - device_t sc_dev; - struct resource *sc_base_res; - struct resource *sc_irq_res; - void *sc_intrhand; - struct pccbb_socketreg *sc_socketreg; - u_int8_t sc_secbus; - u_int8_t sc_subbus; - struct mtx sc_mtx; - u_int32_t sc_flags; -#define PCCBB_PCIC_IO_RELOC 0x01 -#define PCCBB_PCIC_MEM_32 0x02 + device_t sc_dev; + struct resource *sc_base_res; + struct resource *sc_irq_res; + void *sc_intrhand; + struct pccbb_socketreg *sc_socketreg; + u_int8_t sc_secbus; + u_int8_t sc_subbus; + struct mtx sc_mtx; + u_int32_t sc_flags; +#define PCCBB_PCIC_IO_RELOC 0x01 +#define PCCBB_PCIC_MEM_32 0x02 #define PCCBB_16BIT_CARD 0x02000000 #define PCCBB_KTHREAD_RUNNING 0x04000000 #define PCCBB_KTHREAD_DONE 0x08000000 - int sc_chipset; /* chipset id */ + int sc_chipset; /* chipset id */ #define CB_UNKNOWN 0 /* NOT Cardbus-PCI bridge */ #define CB_TI113X 1 /* TI PCI1130/1131 */ #define CB_TI12XX 2 /* TI PCI1250/1220 */ @@ -83,46 +83,46 @@ struct pccbb_softc { #define CB_TOPIC95 5 /* Toshiba ToPIC95 */ #define CB_TOPIC95B 6 /* Toshiba ToPIC95B */ #define CB_TOPIC97 7 /* Toshiba ToPIC97/100 */ -#define CB_CIRRUS 8 /* Cirrus Logic CLPD683x */ +#define CB_CIRRUS 8 /* Cirrus Logic CLPD683x */ SLIST_HEAD(, pccbb_reslist) rl; - device_t sc_cbdev; - device_t sc_pccarddev; + device_t sc_cbdev; + device_t sc_pccarddev; /* PC Card stuff */ - int memalloc; - struct pccard_mem_handle mem[PCIC_MEM_WINS]; - int ioalloc; - struct pccard_io_handle io[PCIC_IO_WINS]; + int memalloc; + struct pccard_mem_handle mem[PCIC_MEM_WINS]; + int ioalloc; + struct pccard_io_handle io[PCIC_IO_WINS]; /* kthread staff */ - struct proc *event_thread; + struct proc *event_thread; }; /* result of detect_card */ -#define CARD_UKN_CARD 0x00 -#define CARD_5V_CARD 0x01 -#define CARD_3V_CARD 0x02 -#define CARD_XV_CARD 0x04 -#define CARD_YV_CARD 0x08 +#define CARD_UKN_CARD 0x00 +#define CARD_5V_CARD 0x01 +#define CARD_3V_CARD 0x02 +#define CARD_XV_CARD 0x04 +#define CARD_YV_CARD 0x08 /* for power_socket */ -#define CARD_VCC_UC 0x0000 -#define CARD_VCC_3V 0x0001 -#define CARD_VCC_XV 0x0002 -#define CARD_VCC_YV 0x0003 -#define CARD_VCC_0V 0x0004 -#define CARD_VCC_5V 0x0005 -#define CARD_VCCMASK 0x000f -#define CARD_VPP_UC 0x0000 -#define CARD_VPP_VCC 0x0010 -#define CARD_VPP_12V 0x0030 -#define CARD_VPP_0V 0x0040 -#define CARD_VPPMASK 0x00f0 +#define CARD_VCC_UC 0x0000 +#define CARD_VCC_3V 0x0001 +#define CARD_VCC_XV 0x0002 +#define CARD_VCC_YV 0x0003 +#define CARD_VCC_0V 0x0004 +#define CARD_VCC_5V 0x0005 +#define CARD_VCCMASK 0x000f +#define CARD_VPP_UC 0x0000 +#define CARD_VPP_VCC 0x0010 +#define CARD_VPP_12V 0x0030 +#define CARD_VPP_0V 0x0040 +#define CARD_VPPMASK 0x00f0 /* XXX: rman is dumb */ -#define CARDBUS_SYS_RES_MEMORY_START 0x44000000 -#define CARDBUS_SYS_RES_MEMORY_END 0xEFFFFFFF -#define CARDBUS_SYS_RES_IOPORT_START 0x3000 -#define CARDBUS_SYS_RES_IOPORT_END 0xEFFF +#define CARDBUS_SYS_RES_MEMORY_START 0x44000000 +#define CARDBUS_SYS_RES_MEMORY_END 0xEFFFFFFF +#define CARDBUS_SYS_RES_IOPORT_START 0x3000 +#define CARDBUS_SYS_RES_IOPORT_END 0xEFFF |