Read USB mass storage sector count and sector size!

This commit is contained in:
2026-04-06 01:00:54 +02:00
parent 90217168be
commit 1cb1bad3dd
17 changed files with 800 additions and 347 deletions

View 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