mirror of
https://github.com/CTCaer/hekate.git
synced 2024-11-26 19:52:11 +00:00
usb: Fix some issues with usb descriptors
This commit is contained in:
parent
28f2fb1468
commit
d95449c22d
2 changed files with 5 additions and 10 deletions
|
@ -48,8 +48,8 @@
|
||||||
#define USB_STATUS_FAIL 1
|
#define USB_STATUS_FAIL 1
|
||||||
#define USB_STATUS_PHASE_ERROR 2
|
#define USB_STATUS_PHASE_ERROR 2
|
||||||
|
|
||||||
#define UMS_DISK_LBA_SIZE 512
|
|
||||||
#define UMS_DISK_LBA_SHIFT 9
|
#define UMS_DISK_LBA_SHIFT 9
|
||||||
|
#define UMS_DISK_LBA_SIZE (1 << UMS_DISK_LBA_SHIFT)
|
||||||
|
|
||||||
#define UMS_DISK_MAX_IO_TRANSFER_64K (USB_EP_BUFFER_MAX_SIZE >> UMS_DISK_LBA_SHIFT)
|
#define UMS_DISK_MAX_IO_TRANSFER_64K (USB_EP_BUFFER_MAX_SIZE >> UMS_DISK_LBA_SHIFT)
|
||||||
#define UMS_DISK_MAX_IO_TRANSFER_32K (UMS_DISK_MAX_IO_TRANSFER_64K / 2)
|
#define UMS_DISK_MAX_IO_TRANSFER_32K (UMS_DISK_MAX_IO_TRANSFER_64K / 2)
|
||||||
|
@ -1805,7 +1805,7 @@ int usb_device_gadget_ums(usb_ctxt_t *usbs)
|
||||||
if (usbs->type == MMC_SD)
|
if (usbs->type == MMC_SD)
|
||||||
{
|
{
|
||||||
sd_mount();
|
sd_mount();
|
||||||
sd_unmount(false);
|
sd_unmount();
|
||||||
ums.lun.sdmmc = &sd_sdmmc;
|
ums.lun.sdmmc = &sd_sdmmc;
|
||||||
ums.lun.storage = &sd_storage;
|
ums.lun.storage = &sd_storage;
|
||||||
}
|
}
|
||||||
|
|
|
@ -673,7 +673,7 @@ static void _usbd_initialize_ep_ctrl(u32 endpoint)
|
||||||
static int _usbd_initialize_ep0()
|
static int _usbd_initialize_ep0()
|
||||||
{
|
{
|
||||||
memset((void *)usbdaemon->qhs, 0, sizeof(dQH_t) * 4); // Clear all used EP queue heads.
|
memset((void *)usbdaemon->qhs, 0, sizeof(dQH_t) * 4); // Clear all used EP queue heads.
|
||||||
memset(usbdaemon, 0, 0x80);
|
memset((void *)usbdaemon->dtds, 0, sizeof(dTD_t) * 4); // Clear all used EP0 token heads.
|
||||||
|
|
||||||
usbd_otg->regs->asynclistaddr = (u32)usbdaemon->qhs;
|
usbd_otg->regs->asynclistaddr = (u32)usbdaemon->qhs;
|
||||||
|
|
||||||
|
@ -1161,8 +1161,7 @@ static int _usbd_handle_ep0_control_transfer()
|
||||||
|
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
bool transmit_data = 0;
|
bool transmit_data = 0;
|
||||||
u8 *descriptor = NULL;
|
u8 *descriptor = (u8 *)USB_DESCRIPTOR_ADDR;
|
||||||
u8 *descriptor_buf = (u8 *)USB_DESCRIPTOR_ADDR;
|
|
||||||
int size = 0;
|
int size = 0;
|
||||||
int ep_stall = 0;
|
int ep_stall = 0;
|
||||||
|
|
||||||
|
@ -1235,7 +1234,6 @@ static int _usbd_handle_ep0_control_transfer()
|
||||||
switch (_bRequest)
|
switch (_bRequest)
|
||||||
{
|
{
|
||||||
case USB_REQUEST_GET_STATUS:
|
case USB_REQUEST_GET_STATUS:
|
||||||
descriptor = (u8 *)descriptor_buf;
|
|
||||||
descriptor[0] = USB_STATUS_DEV_SELF_POWERED;
|
descriptor[0] = USB_STATUS_DEV_SELF_POWERED;
|
||||||
descriptor[1] = 0; // No support for remove wake up.
|
descriptor[1] = 0; // No support for remove wake up.
|
||||||
transmit_data = 1;
|
transmit_data = 1;
|
||||||
|
@ -1262,7 +1260,6 @@ static int _usbd_handle_ep0_control_transfer()
|
||||||
}
|
}
|
||||||
else if (_bRequest == USB_REQUEST_GET_STATUS)
|
else if (_bRequest == USB_REQUEST_GET_STATUS)
|
||||||
{
|
{
|
||||||
descriptor = (void *)&descriptor_buf;
|
|
||||||
memset(descriptor, 0, _wLength);
|
memset(descriptor, 0, _wLength);
|
||||||
}
|
}
|
||||||
else if (_bRequest == USB_REQUEST_GET_DESCRIPTOR && (_wValue >> 8) == USB_DESCRIPTOR_HID_REPORT && usbd_otg->type > USB_GADGET_UMS)
|
else if (_bRequest == USB_REQUEST_GET_DESCRIPTOR && (_wValue >> 8) == USB_DESCRIPTOR_HID_REPORT && usbd_otg->type > USB_GADGET_UMS)
|
||||||
|
@ -1314,7 +1311,6 @@ static int _usbd_handle_ep0_control_transfer()
|
||||||
}
|
}
|
||||||
|
|
||||||
size = _wLength;
|
size = _wLength;
|
||||||
descriptor = (u8 *)&descriptor_buf;
|
|
||||||
memset(descriptor, 0, size);
|
memset(descriptor, 0, size);
|
||||||
|
|
||||||
if (_usbd_get_ep_status(ep_req) == USB_EP_STATUS_STALLED)
|
if (_usbd_get_ep_status(ep_req) == USB_EP_STATUS_STALLED)
|
||||||
|
@ -1329,7 +1325,6 @@ static int _usbd_handle_ep0_control_transfer()
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (USB_SETUP_DEVICE_TO_HOST | USB_SETUP_RECIPIENT_INTERFACE | USB_SETUP_TYPE_CLASS):
|
case (USB_SETUP_DEVICE_TO_HOST | USB_SETUP_RECIPIENT_INTERFACE | USB_SETUP_TYPE_CLASS):
|
||||||
descriptor = (u8 *)&descriptor_buf;
|
|
||||||
memset(descriptor, 0, _wLength);
|
memset(descriptor, 0, _wLength);
|
||||||
|
|
||||||
_usbd_handle_get_class_request(&transmit_data, descriptor, &size, &ep_stall);
|
_usbd_handle_get_class_request(&transmit_data, descriptor, &size, &ep_stall);
|
||||||
|
|
Loading…
Reference in a new issue