mirror of
https://github.com/CTCaer/hekate.git
synced 2024-11-22 18:06:40 +00:00
bdk: usb: support deconfiguration of endpoints
TODO: Signal that to userspace and manage it.
This commit is contained in:
parent
f6c9e636d1
commit
258a343e21
2 changed files with 21 additions and 4 deletions
|
@ -1056,6 +1056,16 @@ static int _usbd_handle_set_request(bool *ep_stall)
|
|||
if (!res)
|
||||
{
|
||||
usbd_otg->config_num = usbd_otg->control_setup.wValue;
|
||||
|
||||
// Remove configuration.
|
||||
if (!usbd_otg->config_num)
|
||||
{
|
||||
//! TODO: Signal that to userspace.
|
||||
_usb_reset_disable_ep1();
|
||||
return res;
|
||||
}
|
||||
|
||||
// Initialize configuration.
|
||||
_usbd_initialize_ep_ctrl(USB_EP_BULK_OUT);
|
||||
_usbd_initialize_ep_ctrl(USB_EP_BULK_IN);
|
||||
usbd_otg->configuration_set = true;
|
||||
|
|
|
@ -1608,9 +1608,18 @@ static void _xusb_handle_set_request_dev_address(usb_ctrl_setup_t *ctrl_setup)
|
|||
|
||||
static void _xusb_handle_set_request_configuration(usb_ctrl_setup_t *ctrl_setup)
|
||||
{
|
||||
u32 config_num = ctrl_setup->wValue;
|
||||
if (!config_num) //TODO! we can change device_state here.
|
||||
usbd_xotg->config_num = ctrl_setup->wValue;
|
||||
|
||||
// Remove configuration.
|
||||
if (!usbd_xotg->config_num)
|
||||
{
|
||||
//! TODO: Signal that to userspace.
|
||||
_xusb_disable_ep1();
|
||||
|
||||
_xusb_issue_status_trb(USB_DIR_IN);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Initialize BULK EPs.
|
||||
_xusbd_ep_initialize(USB_EP_BULK_OUT);
|
||||
|
@ -1621,8 +1630,6 @@ static void _xusb_handle_set_request_configuration(usb_ctrl_setup_t *ctrl_setup)
|
|||
XUSB_DEV_XHCI(XUSB_DEV_XHCI_ST) |= XHCI_ST_RC;
|
||||
|
||||
_xusb_issue_status_trb(USB_DIR_IN);
|
||||
|
||||
usbd_xotg->config_num = config_num;
|
||||
usbd_xotg->device_state = XUSB_CONFIGURED_STS_WAIT;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue