Files
mop3/kernel/device/usb/usb.c

37 lines
1.1 KiB
C

#include <device/def_device_op.h>
#include <device/device.h>
#include <device/storage/usbdrv.h>
#include <device/usb/usb.h>
#include <device/usb/xhci.h>
#include <devices.h>
#include <libk/lengthof.h>
#include <libk/printf.h>
#include <libk/std.h>
#include <proc/proc.h>
#include <proc/reschedule.h>
#include <sys/debug.h>
static atomic_int usb_ms_counter = 0;
static struct device* usb_ms_init (struct xhci* xhci, struct xhci_usb_device* usb_device,
struct proc* proc, struct reschedule_ctx* rctx,
uint64_t* lockflags) {
static device_op_func_t ops[] = {0};
struct usbdrv_init init = {
.xhci = xhci,
.usb_device = usb_device,
.lockflags = lockflags,
};
char key[30];
snprintf (key, sizeof (key), "usbdrv%d", atomic_fetch_add (&usb_ms_counter, 1));
return device_create (DEVICE_TYPE_DRIVE, key, ops, lengthof (ops), &usbdrv_init, &usbdrv_fini,
&init, proc, rctx);
}
struct usb_driver_info usb_driver_infos[USB_DRIVER_MAX_MATCHES] = {
{.if_class = 0x08, .if_subclass = 0x06, .if_proto = 0x50, .init = &usb_ms_init},
};