summaryrefslogtreecommitdiffstats
path: root/sys/dev/cardbus/cardbus.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/cardbus/cardbus.c')
-rw-r--r--sys/dev/cardbus/cardbus.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/sys/dev/cardbus/cardbus.c b/sys/dev/cardbus/cardbus.c
index e785b0f..a6037e1 100644
--- a/sys/dev/cardbus/cardbus.c
+++ b/sys/dev/cardbus/cardbus.c
@@ -169,6 +169,15 @@ cardbus_device_setup_regs(pcicfgregs *cfg)
pci_write_config(dev, PCIR_MAXLAT, 0x14, 1);
}
+static struct pci_devinfo *
+cardbus_alloc_devinfo(device_t dev)
+{
+ struct cardbus_devinfo *dinfo;
+
+ dinfo = malloc(sizeof(*dinfo), M_DEVBUF, M_WAITOK | M_ZERO);
+ return (&dinfo->pci);
+}
+
static int
cardbus_attach_card(device_t cbdev)
{
@@ -191,8 +200,7 @@ cardbus_attach_card(device_t cbdev)
struct cardbus_devinfo *dinfo;
dinfo = (struct cardbus_devinfo *)
- pci_read_device(brdev, domain, bus, slot, func,
- sizeof(struct cardbus_devinfo));
+ pci_read_device(brdev, cbdev, domain, bus, slot, func);
if (dinfo == NULL)
continue;
if (dinfo->pci.cfg.mfdev)
@@ -343,6 +351,9 @@ static device_method_t cardbus_methods[] = {
DEVMETHOD(card_attach_card, cardbus_attach_card),
DEVMETHOD(card_detach_card, cardbus_detach_card),
+ /* PCI interface */
+ DEVMETHOD(pci_alloc_devinfo, cardbus_alloc_devinfo),
+
{0,0}
};
OpenPOWER on IntegriCloud