aboutsummaryrefslogtreecommitdiff
path: root/sys/boot/usb/bsd_kernel.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/boot/usb/bsd_kernel.c')
-rw-r--r--sys/boot/usb/bsd_kernel.c30
1 files changed, 21 insertions, 9 deletions
diff --git a/sys/boot/usb/bsd_kernel.c b/sys/boot/usb/bsd_kernel.c
index d3daa63f26f0..d41b9f4dc0de 100644
--- a/sys/boot/usb/bsd_kernel.c
+++ b/sys/boot/usb/bsd_kernel.c
@@ -380,8 +380,10 @@ device_get_parent(device_t dev)
}
void
-device_set_interrupt(device_t dev, intr_fn_t *fn, void *arg)
+device_set_interrupt(device_t dev, driver_filter_t *filter,
+ driver_intr_t *fn, void *arg)
{
+ dev->dev_irq_filter = filter;
dev->dev_irq_fn = fn;
dev->dev_irq_arg = arg;
}
@@ -395,8 +397,16 @@ device_run_interrupts(device_t parent)
return;
TAILQ_FOREACH(child, &parent->dev_children, dev_link) {
- if (child->dev_irq_fn != NULL)
- (child->dev_irq_fn) (child->dev_irq_arg);
+ int status;
+ if (child->dev_irq_filter != NULL)
+ status = child->dev_irq_filter(child->dev_irq_arg);
+ else
+ status = FILTER_SCHEDULE_THREAD;
+
+ if (status == FILTER_SCHEDULE_THREAD) {
+ if (child->dev_irq_fn != NULL)
+ (child->dev_irq_fn) (child->dev_irq_arg);
+ }
}
}
@@ -1081,6 +1091,7 @@ usb_proc_mwait(struct usb_process *up, void *_pm0, void *_pm1)
* SYSTEM attach
*------------------------------------------------------------------------*/
+#ifdef USB_PCI_PROBE_LIST
static device_method_t pci_methods[] = {
DEVMETHOD_END
};
@@ -1095,9 +1106,7 @@ static devclass_t pci_devclass;
DRIVER_MODULE(pci, pci, pci_driver, pci_devclass, 0, 0);
static const char *usb_pci_devices[] = {
-#ifdef USB_PROBE_LIST
- USB_PROBE_LIST
-#endif
+ USB_PCI_PROBE_LIST
};
#define USB_PCI_USB_MAX (sizeof(usb_pci_devices) / sizeof(void *))
@@ -1140,11 +1149,13 @@ usb_pci_mod_unload(void *arg)
device_delete_child(NULL, usb_pci_root);
}
SYSUNINIT(usb_pci_mod_unload, SI_SUB_RUN_SCHEDULER, SI_ORDER_MIDDLE, usb_pci_mod_unload, 0);
+#endif
/*------------------------------------------------------------------------*
* MALLOC API
*------------------------------------------------------------------------*/
+#ifndef HAVE_MALLOC
#define USB_POOL_ALIGN 8
static uint8_t usb_pool[USB_POOL_SIZE] __aligned(USB_POOL_ALIGN);
@@ -1173,7 +1184,7 @@ usb_malloc(unsigned long size)
}
if (hdr) {
- printf("MALLOC: Entries = %d; Remainder = %d; Size = %d\n",
+ DPRINTF("MALLOC: Entries = %d; Remainder = %d; Size = %d\n",
(int)usb_pool_entries, (int)usb_pool_rem, (int)size);
TAILQ_REMOVE(&malloc_head, hdr, entry);
@@ -1187,7 +1198,7 @@ usb_malloc(unsigned long size)
usb_pool_rem -= size;
usb_pool_entries++;
- printf("MALLOC: Entries = %d; Remainder = %d; Size = %d\n",
+ DPRINTF("MALLOC: Entries = %d; Remainder = %d; Size = %d\n",
(int)usb_pool_entries, (int)usb_pool_rem, (int)size);
memset(hdr + 1, 0, hdr->size - sizeof(*hdr));
@@ -1209,6 +1220,7 @@ usb_free(void *arg)
TAILQ_INSERT_TAIL(&malloc_head, hdr, entry);
}
+#endif
char *
usb_strdup(const char *str)
@@ -1218,7 +1230,7 @@ usb_strdup(const char *str)
len = 1 + strlen(str);
- tmp = usb_malloc(len);
+ tmp = malloc(len,XXX,XXX);
if (tmp == NULL)
return (NULL);