66 lines
1.2 KiB
C
66 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;
|
|
uint64_t* lockflags;
|
|
};
|
|
|
|
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
|