Files
mop3/kernel/device/storage/usbdrv.h
kamkow1 e5ebd7f3ba
All checks were successful
Build ISO image / build-and-deploy (push) Successful in 2m21s
Build documentation / build-and-deploy (push) Successful in 54s
Use a big-lock for kernel sychronization instead of fine-grained locking
2026-04-27 18:06:02 +02:00

65 lines
1.2 KiB
C

#ifndef _KERNEL_DEVICE_STORAGE_USBDRV_H
#define _KERNEL_DEVICE_STORAGE_USBDRV_H
#include <device/def_device_op.h>
#include <device/usb/usb.h>
#include <device/usb/xhci.h>
#include <libk/std.h>
#define USB_CBW_SIGNATURE 0x43425355
/* command block wrapper */
struct usb_ms_cbw {
uint32_t signature;
uint32_t tag;
uint32_t length;
uint8_t dir;
uint8_t lun;
uint8_t cmd_len;
uint8_t data[16];
} PACKED;
#define USB_CSW_SIGNATURE 0x53425355
/* command status wrapper */
struct usb_ms_csw {
uint32_t signature;
uint32_t tag;
uint32_t residue;
uint8_t status;
} PACKED;
struct device;
struct usbdrv_init {
struct xhci* xhci;
struct xhci_usb_device* usb_device;
};
struct usbdrv {
struct xhci* xhci;
struct xhci_usb_device* usb_device;
size_t sector_size;
size_t sector_count;
struct usb_endpoint_desc bulk_in;
struct usb_endpoint_desc bulk_out;
};
DEFINE_DEVICE_INIT(usbdrv_init);
DEFINE_DEVICE_FINI(usbdrv_fini);
DEFINE_DEVICE_OP(usbdrv_read);
DEFINE_DEVICE_OP(usbdrv_write);
DEFINE_DEVICE_OP(usbdrv_get_device_type);
DEFINE_DEVICE_OP(usbdrv_get_sector_size);
DEFINE_DEVICE_OP(usbdrv_get_size);
DEFINE_DEVICE_OP(usbdrv_partition_rescan);
#endif // _KERNEL_DEVICE_STORAGE_USBDRV_H