Read USB mass storage sector count and sector size!
This commit is contained in:
63
kernel/device/storage/usbdrv.h
Normal file
63
kernel/device/storage/usbdrv.h
Normal file
@@ -0,0 +1,63 @@
|
||||
#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);
|
||||
|
||||
#endif // _KERNEL_DEVICE_STORAGE_USBDRV_H
|
||||
Reference in New Issue
Block a user