summaryrefslogtreecommitdiffstats
path: root/sys/dev/cardbus
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/cardbus')
-rw-r--r--sys/dev/cardbus/cardbus.c555
1 files changed, 23 insertions, 532 deletions
diff --git a/sys/dev/cardbus/cardbus.c b/sys/dev/cardbus/cardbus.c
index 48a58fc..8f8c5c9e 100644
--- a/sys/dev/cardbus/cardbus.c
+++ b/sys/dev/cardbus/cardbus.c
@@ -51,6 +51,7 @@
#include <sys/pciio.h>
#include <dev/pci/pcivar.h>
#include <dev/pci/pcireg.h>
+#include <dev/pci/pci_private.h>
#include <dev/cardbus/cardbusreg.h>
#include <dev/cardbus/cardbusvar.h>
@@ -88,8 +89,6 @@ static int cardbus_child_location_str(device_t cbdev, device_t child,
char *, size_t len);
static int cardbus_child_pnpinfo_str(device_t cbdev, device_t child,
char *, size_t len);
-static __inline void cardbus_clear_command_bit(device_t cbdev, device_t child,
- uint16_t bit);
static void cardbus_delete_resource(device_t cbdev, device_t child,
int type, int rid);
static void cardbus_delete_resource_method(device_t cbdev, device_t child,
@@ -98,42 +97,18 @@ static int cardbus_detach(device_t cbdev);
static int cardbus_detach_card(device_t cbdev);
static void cardbus_device_setup_regs(device_t brdev, int b, int s, int f,
pcicfgregs *cfg);
-static void cardbus_disable_busmaster_method(device_t cbdev, device_t child);
-static void cardbus_disable_io_method(device_t cbdev, device_t child,
- int space);
static void cardbus_driver_added(device_t cbdev, driver_t *driver);
-static void cardbus_enable_busmaster_method(device_t cbdev, device_t child);
-static void cardbus_enable_io_method(device_t cbdev, device_t child,
- int space);
-static int cardbus_freecfg(struct cardbus_devinfo *dinfo);
-static int cardbus_get_powerstate_method(device_t cbdev, device_t child);
static int cardbus_get_resource(device_t cbdev, device_t child, int type,
int rid, u_long *startp, u_long *countp);
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_hdrtypedata(device_t brdev, int b, int s, int f,
- pcicfgregs *cfg);
-static int cardbus_print_child(device_t cbdev, device_t child);
-static int cardbus_print_resources(struct resource_list *rl,
- const char *name, int type, const char *format);
-static void cardbus_print_verbose(struct cardbus_devinfo *dinfo);
static int cardbus_probe(device_t cbdev);
-static void cardbus_probe_nomatch(device_t cbdev, device_t child);
-static struct cardbus_devinfo *cardbus_read_device(device_t brdev, int b,
- int s, int f);
-static void cardbus_read_extcap(device_t cbdev, pcicfgregs *cfg);
-static uint32_t cardbus_read_config_method(device_t cbdev,
- device_t child, int reg, int width);
static int cardbus_read_ivar(device_t cbdev, device_t child, int which,
- u_long *result);
+ uintptr_t *result);
static void cardbus_release_all_resources(device_t cbdev,
struct cardbus_devinfo *dinfo);
static int cardbus_release_resource(device_t cbdev, device_t child,
int type, int rid, struct resource *r);
-static __inline void cardbus_set_command_bit(device_t cbdev, device_t child,
- uint16_t bit);
-static int cardbus_set_powerstate_method(device_t cbdev, device_t child,
- int state);
static int cardbus_set_resource(device_t cbdev, device_t child, int type,
int rid, u_long start, u_long count, struct resource *res);
static int cardbus_set_resource_method(device_t cbdev, device_t child,
@@ -143,8 +118,6 @@ static int cardbus_setup_intr(device_t cbdev, device_t child,
void *arg, void **cookiep);
static int cardbus_teardown_intr(device_t cbdev, device_t child,
struct resource *irq, void *cookie);
-static void cardbus_write_config_method(device_t cbdev, device_t child,
- int reg, uint32_t val, int width);
static int cardbus_write_ivar(device_t cbdev, device_t child, int which,
uintptr_t value);
@@ -237,9 +210,11 @@ cardbus_attach_card(device_t cbdev)
for (slot = 0; slot <= CARDBUS_SLOTMAX; slot++) {
int cardbusfunchigh = 0;
for (func = 0; func <= cardbusfunchigh; func++) {
- struct cardbus_devinfo *dinfo =
- cardbus_read_device(brdev, bus, slot, func);
+ struct cardbus_devinfo *dinfo;
+ dinfo = (struct cardbus_devinfo *)
+ pci_read_device(brdev, bus, slot, func,
+ sizeof(struct cardbus_devinfo));
if (dinfo == NULL)
continue;
if (dinfo->pci.cfg.mfdev)
@@ -247,11 +222,11 @@ cardbus_attach_card(device_t cbdev)
cardbus_device_setup_regs(brdev, bus, slot, func,
&dinfo->pci.cfg);
- cardbus_print_verbose(dinfo);
+ pci_print_verbose(&dinfo->pci);
dinfo->pci.cfg.dev = device_add_child(cbdev, NULL, -1);
if (!dinfo->pci.cfg.dev) {
DEVPRINTF((cbdev, "Cannot add child!\n"));
- cardbus_freecfg(dinfo);
+ pci_freecfg((struct pci_devinfo *)dinfo);
continue;
}
resource_list_init(&dinfo->pci.resources);
@@ -295,7 +270,7 @@ cardbus_detach_card(device_t cbdev)
device_detach(devlist[tmp]);
cardbus_release_all_resources(cbdev, dinfo);
device_delete_child(cbdev, devlist[tmp]);
- cardbus_freecfg(dinfo);
+ pci_freecfg((struct pci_devinfo *)dinfo);
}
POWER_DISABLE_SOCKET(device_get_parent(cbdev), cbdev);
free(devlist, M_TEMP);
@@ -329,7 +304,7 @@ cardbus_driver_added(device_t cbdev, driver_t *driver)
if (device_get_state(dev) != DS_NOTPRESENT)
continue;
dinfo = device_get_ivars(dev);
- cardbus_print_verbose(dinfo);
+ pci_print_verbose(&dinfo->pci);
resource_list_init(&dinfo->pci.resources);
cardbus_do_cis(cbdev, dev);
if (device_probe_and_attach(dev) != 0)
@@ -339,186 +314,6 @@ cardbus_driver_added(device_t cbdev, driver_t *driver)
}
/************************************************************************/
-/* PCI-Like config reading (copied from pci.c */
-/************************************************************************/
-
-/* read configuration header into pcicfgrect structure */
-
-static void
-cardbus_read_extcap(device_t cbdev, pcicfgregs *cfg)
-{
-#define REG(n, w) PCIB_READ_CONFIG(cbdev, cfg->bus, cfg->slot, cfg->func, n, w)
- int ptr, nextptr, ptrptr;
-
- switch (cfg->hdrtype) {
- case 0:
- ptrptr = 0x34;
- break;
- case 2:
- ptrptr = 0x14;
- break;
- default:
- return; /* no extended capabilities support */
- }
- nextptr = REG(ptrptr, 1); /* sanity check? */
-
- /*
- * Read capability entries.
- */
- while (nextptr != 0) {
- /* Sanity check */
- if (nextptr > 255) {
- printf("illegal PCI extended capability offset %d\n",
- nextptr);
- return;
- }
- /* Find the next entry */
- ptr = nextptr;
- nextptr = REG(ptr + 1, 1);
-
- /* Process this entry */
- switch (REG(ptr, 1)) {
- case 0x01: /* PCI power management */
- if (cfg->pp_cap == 0) {
- cfg->pp_cap = REG(ptr + PCIR_POWER_CAP, 2);
- cfg->pp_status = ptr + PCIR_POWER_STATUS;
- cfg->pp_pmcsr = ptr + PCIR_POWER_PMCSR;
- if ((nextptr - ptr) > PCIR_POWER_DATA)
- cfg->pp_data = ptr + PCIR_POWER_DATA;
- }
- break;
- default:
- break;
- }
- }
-#undef REG
-}
-
-/* extract header type specific config data */
-
-static void
-cardbus_hdrtypedata(device_t brdev, int b, int s, int f, pcicfgregs *cfg)
-{
-#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);
- cfg->subdevice = REG(PCIR_SUBDEV_0, 2);
- cfg->nummaps = PCI_MAXMAPS_0;
- break;
- case 1:
- cfg->subvendor = REG(PCIR_SUBVEND_1, 2);
- cfg->subdevice = REG(PCIR_SUBDEV_1, 2);
- cfg->nummaps = PCI_MAXMAPS_1;
- break;
- case 2:
- cfg->subvendor = REG(PCIR_SUBVEND_2, 2);
- cfg->subdevice = REG(PCIR_SUBDEV_2, 2);
- cfg->nummaps = PCI_MAXMAPS_2;
- break;
- }
-#undef REG
-}
-
-static struct cardbus_devinfo *
-cardbus_read_device(device_t brdev, int b, int s, int f)
-{
-#define REG(n, w) PCIB_READ_CONFIG(brdev, b, s, f, n, w)
- pcicfgregs *cfg = NULL;
- struct cardbus_devinfo *devlist_entry = NULL;
-
- if (REG(PCIR_DEVVENDOR, 4) != 0xffffffff) {
- devlist_entry = malloc(sizeof(struct cardbus_devinfo),
- M_DEVBUF, M_ZERO);
- if (devlist_entry == NULL)
- return (NULL);
-
- cfg = &devlist_entry->pci.cfg;
-
- cfg->bus = b;
- cfg->slot = s;
- cfg->func = f;
- cfg->vendor = REG(PCIR_VENDOR, 2);
- cfg->device = REG(PCIR_DEVICE, 2);
- cfg->cmdreg = REG(PCIR_COMMAND, 2);
- cfg->statreg = REG(PCIR_STATUS, 2);
- cfg->baseclass = REG(PCIR_CLASS, 1);
- cfg->subclass = REG(PCIR_SUBCLASS, 1);
- cfg->progif = REG(PCIR_PROGIF, 1);
- cfg->revid = REG(PCIR_REVID, 1);
- cfg->hdrtype = REG(PCIR_HEADERTYPE, 1);
- cfg->cachelnsz = REG(PCIR_CACHELNSZ, 1);
- cfg->lattimer = REG(PCIR_LATTIMER, 1);
- cfg->intpin = REG(PCIR_INTPIN, 1);
- cfg->intline = REG(PCIR_INTLINE, 1);
-
- cfg->mingnt = REG(PCIR_MINGNT, 1);
- cfg->maxlat = REG(PCIR_MAXLAT, 1);
-
- cfg->mfdev = (cfg->hdrtype & PCIM_MFDEV) != 0;
- cfg->hdrtype &= ~PCIM_MFDEV;
-
- cardbus_hdrtypedata(brdev, b, s, f, cfg);
-
- if (REG(PCIR_STATUS, 2) & PCIM_STATUS_CAPPRESENT)
- cardbus_read_extcap(brdev, cfg);
-
- devlist_entry->pci.conf.pc_sel.pc_bus = cfg->bus;
- devlist_entry->pci.conf.pc_sel.pc_dev = cfg->slot;
- devlist_entry->pci.conf.pc_sel.pc_func = cfg->func;
- devlist_entry->pci.conf.pc_hdr = cfg->hdrtype;
-
- devlist_entry->pci.conf.pc_subvendor = cfg->subvendor;
- devlist_entry->pci.conf.pc_subdevice = cfg->subdevice;
- devlist_entry->pci.conf.pc_vendor = cfg->vendor;
- devlist_entry->pci.conf.pc_device = cfg->device;
-
- devlist_entry->pci.conf.pc_class = cfg->baseclass;
- devlist_entry->pci.conf.pc_subclass = cfg->subclass;
- devlist_entry->pci.conf.pc_progif = cfg->progif;
- devlist_entry->pci.conf.pc_revid = cfg->revid;
- }
- return (devlist_entry);
-#undef REG
-}
-
-/* free pcicfgregs structure and all depending data structures */
-
-static int
-cardbus_freecfg(struct cardbus_devinfo *dinfo)
-{
- free(dinfo, M_DEVBUF);
-
- return (0);
-}
-
-static void
-cardbus_print_verbose(struct cardbus_devinfo *dinfo)
-{
- if (bootverbose || cardbus_debug > 0)
- {
- pcicfgregs *cfg = &dinfo->pci.cfg;
-
- printf("found->\tvendor=0x%04x, dev=0x%04x, revid=0x%02x\n",
- 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);
- 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);
- if (cfg->intpin > 0)
- printf("\tintpin=%c, irq=%d\n",
- cfg->intpin + 'a' - 1, cfg->intline);
- }
-}
-
-/************************************************************************/
/* Resources */
/************************************************************************/
@@ -836,81 +631,6 @@ cardbus_teardown_intr(device_t cbdev, device_t child, struct resource *irq,
/************************************************************************/
static int
-cardbus_print_resources(struct resource_list *rl, const char *name,
- int type, const char *format)
-{
- struct resource_list_entry *rle;
- int printed, retval;
-
- printed = 0;
- retval = 0;
- /* Yes, this is kinda cheating */
- SLIST_FOREACH(rle, rl, link) {
- if (rle->type == type) {
- if (printed == 0)
- retval += printf(" %s ", name);
- else if (printed > 0)
- retval += printf(",");
- printed++;
- retval += printf(format, rle->start);
- if (rle->count > 1) {
- retval += printf("-");
- retval += printf(format, rle->start +
- rle->count - 1);
- }
- }
- }
- return retval;
-}
-
-static int
-cardbus_print_child(device_t cbdev, device_t child)
-{
- struct cardbus_devinfo *dinfo;
- struct resource_list *rl;
- pcicfgregs *cfg;
- int retval = 0;
-
- dinfo = device_get_ivars(child);
- cfg = &dinfo->pci.cfg;
- rl = &dinfo->pci.resources;
-
- 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(cbdev))
- retval += printf(" flags %#x", device_get_flags(cbdev));
-
- retval += printf(" at device %d.%d", pci_get_slot(child),
- pci_get_function(child));
-
- retval += bus_print_child_footer(cbdev, child);
-
- return (retval);
-}
-
-static void
-cardbus_probe_nomatch(device_t cbdev, device_t child)
-{
- struct cardbus_devinfo *dinfo;
- pcicfgregs *cfg;
-
- dinfo = device_get_ivars(child);
- cfg = &dinfo->pci.cfg;
- 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) {
- printf(" irq %d", cfg->intline);
- }
- printf("\n");
-
- return;
-}
-
-static int
cardbus_child_location_str(device_t cbdev, device_t child, char *buf,
size_t buflen)
{
@@ -940,7 +660,7 @@ cardbus_child_pnpinfo_str(device_t cbdev, device_t child, char *buf,
}
static int
-cardbus_read_ivar(device_t cbdev, device_t child, int which, u_long *result)
+cardbus_read_ivar(device_t cbdev, device_t child, int which, uintptr_t *result)
{
struct cardbus_devinfo *dinfo;
pcicfgregs *cfg;
@@ -960,50 +680,8 @@ cardbus_read_ivar(device_t cbdev, device_t child, int which, u_long *result)
}
*((uint8_t **) result) = dinfo->funce.lan.nid;
break;
- case PCI_IVAR_SUBVENDOR:
- *result = cfg->subvendor;
- break;
- case PCI_IVAR_SUBDEVICE:
- *result = cfg->subdevice;
- break;
- case PCI_IVAR_VENDOR:
- *result = cfg->vendor;
- break;
- case PCI_IVAR_DEVICE:
- *result = cfg->device;
- break;
- case PCI_IVAR_DEVID:
- *result = (cfg->device << 16) | cfg->vendor;
- break;
- case PCI_IVAR_CLASS:
- *result = cfg->baseclass;
- break;
- case PCI_IVAR_SUBCLASS:
- *result = cfg->subclass;
- break;
- case PCI_IVAR_PROGIF:
- *result = cfg->progif;
- break;
- case PCI_IVAR_REVID:
- *result = cfg->revid;
- break;
- case PCI_IVAR_INTPIN:
- *result = cfg->intpin;
- break;
- case PCI_IVAR_IRQ:
- *result = cfg->intline;
- break;
- case PCI_IVAR_BUS:
- *result = cfg->bus;
- break;
- case PCI_IVAR_SLOT:
- *result = cfg->slot;
- break;
- case PCI_IVAR_FUNCTION:
- *result = cfg->func;
- break;
default:
- return ENOENT;
+ return (pci_read_ivar(cbdev, child, which, result));
}
return 0;
}
@@ -1011,200 +689,13 @@ 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)
{
- struct cardbus_devinfo *dinfo;
- pcicfgregs *cfg;
-
- dinfo = device_get_ivars(child);
- cfg = &dinfo->pci.cfg;
-
- switch (which) {
- case PCI_IVAR_ETHADDR:
- case PCI_IVAR_SUBVENDOR:
- case PCI_IVAR_SUBDEVICE:
- case PCI_IVAR_VENDOR:
- case PCI_IVAR_DEVICE:
- case PCI_IVAR_DEVID:
- case PCI_IVAR_CLASS:
- case PCI_IVAR_SUBCLASS:
- case PCI_IVAR_PROGIF:
- case PCI_IVAR_REVID:
- case PCI_IVAR_INTPIN:
- case PCI_IVAR_IRQ:
- case PCI_IVAR_BUS:
- case PCI_IVAR_SLOT:
- case PCI_IVAR_FUNCTION:
- return EINVAL; /* disallow for now */
- default:
- return ENOENT;
- }
- return 0;
+ return(pci_write_ivar(cbdev, child, which, value));
}
/************************************************************************/
/* Compatibility with PCI bus (XXX: Do we need this?) */
/************************************************************************/
-/*
- * PCI power manangement
- */
-static int
-cardbus_set_powerstate_method(device_t cbdev, device_t child, int state)
-{
- struct cardbus_devinfo *dinfo = device_get_ivars(child);
- pcicfgregs *cfg = &dinfo->pci.cfg;
- uint16_t status;
- int result;
-
- if (cfg->pp_cap != 0) {
- status = PCI_READ_CONFIG(cbdev, child, cfg->pp_status, 2)
- & ~PCIM_PSTAT_DMASK;
- result = 0;
- switch (state) {
- case PCI_POWERSTATE_D0:
- status |= PCIM_PSTAT_D0;
- break;
- case PCI_POWERSTATE_D1:
- if (cfg->pp_cap & PCIM_PCAP_D1SUPP) {
- status |= PCIM_PSTAT_D1;
- } else {
- result = EOPNOTSUPP;
- }
- break;
- case PCI_POWERSTATE_D2:
- if (cfg->pp_cap & PCIM_PCAP_D2SUPP) {
- status |= PCIM_PSTAT_D2;
- } else {
- result = EOPNOTSUPP;
- }
- break;
- case PCI_POWERSTATE_D3:
- status |= PCIM_PSTAT_D3;
- break;
- default:
- result = EINVAL;
- }
- if (result == 0)
- PCI_WRITE_CONFIG(cbdev, child, cfg->pp_status,
- status, 2);
- } else {
- result = ENXIO;
- }
- return (result);
-}
-
-static int
-cardbus_get_powerstate_method(device_t cbdev, device_t child)
-{
- struct cardbus_devinfo *dinfo = device_get_ivars(child);
- pcicfgregs *cfg = &dinfo->pci.cfg;
- uint16_t status;
- int result;
-
- if (cfg->pp_cap != 0) {
- status = PCI_READ_CONFIG(cbdev, child, cfg->pp_status, 2);
- switch (status & PCIM_PSTAT_DMASK) {
- case PCIM_PSTAT_D0:
- result = PCI_POWERSTATE_D0;
- break;
- case PCIM_PSTAT_D1:
- result = PCI_POWERSTATE_D1;
- break;
- case PCIM_PSTAT_D2:
- result = PCI_POWERSTATE_D2;
- break;
- case PCIM_PSTAT_D3:
- result = PCI_POWERSTATE_D3;
- break;
- default:
- result = PCI_POWERSTATE_UNKNOWN;
- break;
- }
- } else {
- /* No support, device is always at D0 */
- result = PCI_POWERSTATE_D0;
- }
- return (result);
-}
-
-static uint32_t
-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->pci.cfg;
-
- return PCIB_READ_CONFIG(device_get_parent(cbdev),
- cfg->bus, cfg->slot, cfg->func, reg, width);
-}
-
-static void
-cardbus_write_config_method(device_t cbdev, device_t child, int reg,
- uint32_t val, int width)
-{
- struct cardbus_devinfo *dinfo = device_get_ivars(child);
- pcicfgregs *cfg = &dinfo->pci.cfg;
-
- PCIB_WRITE_CONFIG(device_get_parent(cbdev),
- cfg->bus, cfg->slot, cfg->func, reg, val, width);
-}
-
-static __inline void
-cardbus_set_command_bit(device_t cbdev, device_t child, uint16_t bit)
-{
- uint16_t command;
-
- command = PCI_READ_CONFIG(cbdev, child, PCIR_COMMAND, 2);
- command |= bit;
- PCI_WRITE_CONFIG(cbdev, child, PCIR_COMMAND, command, 2);
-}
-
-static __inline void
-cardbus_clear_command_bit(device_t cbdev, device_t child, uint16_t bit)
-{
- uint16_t command;
-
- command = PCI_READ_CONFIG(cbdev, child, PCIR_COMMAND, 2);
- command &= ~bit;
- PCI_WRITE_CONFIG(cbdev, child, PCIR_COMMAND, command, 2);
-}
-
-static void
-cardbus_enable_busmaster_method(device_t cbdev, device_t child)
-{
- cardbus_set_command_bit(cbdev, child, PCIM_CMD_BUSMASTEREN);
-}
-
-static void
-cardbus_disable_busmaster_method(device_t cbdev, device_t child)
-{
- cardbus_clear_command_bit(cbdev, child, PCIM_CMD_BUSMASTEREN);
-}
-
-static void
-cardbus_enable_io_method(device_t cbdev, device_t child, int space)
-{
- switch (space) {
- case SYS_RES_IOPORT:
- cardbus_set_command_bit(cbdev, child, PCIM_CMD_PORTEN);
- break;
- case SYS_RES_MEMORY:
- cardbus_set_command_bit(cbdev, child, PCIM_CMD_MEMEN);
- break;
- }
-}
-
-static void
-cardbus_disable_io_method(device_t cbdev, device_t child, int space)
-{
- switch (space) {
- case SYS_RES_IOPORT:
- cardbus_clear_command_bit(cbdev, child, PCIM_CMD_PORTEN);
- break;
- case SYS_RES_MEMORY:
- cardbus_clear_command_bit(cbdev, child, PCIM_CMD_MEMEN);
- break;
- }
-}
-
static device_method_t cardbus_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, cardbus_probe),
@@ -1215,8 +706,8 @@ static device_method_t cardbus_methods[] = {
DEVMETHOD(device_resume, cardbus_resume),
/* Bus interface */
- DEVMETHOD(bus_print_child, cardbus_print_child),
- DEVMETHOD(bus_probe_nomatch, cardbus_probe_nomatch),
+ DEVMETHOD(bus_print_child, pci_print_child),
+ DEVMETHOD(bus_probe_nomatch, pci_probe_nomatch),
DEVMETHOD(bus_read_ivar, cardbus_read_ivar),
DEVMETHOD(bus_write_ivar, cardbus_write_ivar),
DEVMETHOD(bus_driver_added, cardbus_driver_added),
@@ -1240,14 +731,14 @@ static device_method_t cardbus_methods[] = {
DEVMETHOD(card_cis_free, cardbus_cis_free),
/* Cardbus/PCI interface */
- DEVMETHOD(pci_read_config, cardbus_read_config_method),
- DEVMETHOD(pci_write_config, cardbus_write_config_method),
- DEVMETHOD(pci_enable_busmaster, cardbus_enable_busmaster_method),
- DEVMETHOD(pci_disable_busmaster, cardbus_disable_busmaster_method),
- DEVMETHOD(pci_enable_io, cardbus_enable_io_method),
- DEVMETHOD(pci_disable_io, cardbus_disable_io_method),
- DEVMETHOD(pci_get_powerstate, cardbus_get_powerstate_method),
- DEVMETHOD(pci_set_powerstate, cardbus_set_powerstate_method),
+ DEVMETHOD(pci_read_config, pci_read_config_method),
+ DEVMETHOD(pci_write_config, pci_write_config_method),
+ DEVMETHOD(pci_enable_busmaster, pci_enable_busmaster_method),
+ DEVMETHOD(pci_disable_busmaster, pci_disable_busmaster_method),
+ DEVMETHOD(pci_enable_io, pci_enable_io_method),
+ DEVMETHOD(pci_disable_io, pci_disable_io_method),
+ DEVMETHOD(pci_get_powerstate, pci_get_powerstate_method),
+ DEVMETHOD(pci_set_powerstate, pci_set_powerstate_method),
{0,0}
};
OpenPOWER on IntegriCloud