add need_pre for pio usb, but not work out well

This commit is contained in:
hathach 2022-04-05 00:04:47 +07:00
parent d7d7e61f34
commit d97c154695
3 changed files with 8 additions and 4 deletions

@ -1 +1 @@
Subproject commit 650ef75f0d8a4020a7ddc2ccee1ee0f3237ab760 Subproject commit 4993f4a1df03c8af13c8091052a6274e8c333bc0

View File

@ -642,7 +642,7 @@ static bool usbh_control_xfer_cb (uint8_t dev_addr, uint8_t ep_addr, xfer_result
__attribute__((fallthrough)); __attribute__((fallthrough));
case CONTROL_STAGE_DATA: case CONTROL_STAGE_DATA:
if (xferred_bytes) if (request->wLength)
{ {
TU_LOG2("[%u:%u] Control data:\r\n", rhport, dev_addr); TU_LOG2("[%u:%u] Control data:\r\n", rhport, dev_addr);
TU_LOG2_MEM(_ctrl_xfer.buffer, xferred_bytes, 2); TU_LOG2_MEM(_ctrl_xfer.buffer, xferred_bytes, 2);
@ -1301,7 +1301,7 @@ static void process_enumeration(tuh_xfer_t* xfer)
TU_ASSERT(new_dev, ); TU_ASSERT(new_dev, );
new_dev->addressed = 1; new_dev->addressed = 1;
// TODO close device 0, may not be needed // Close device 0
hcd_device_close(_dev0.rhport, 0); hcd_device_close(_dev0.rhport, 0);
// open control pipe for new address // open control pipe for new address

View File

@ -111,8 +111,12 @@ void hcd_int_disable(uint8_t rhport)
bool hcd_edpt_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_endpoint_t const * desc_ep) bool hcd_edpt_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_endpoint_t const * desc_ep)
{ {
hcd_devtree_info_t dev_tree;
hcd_devtree_get_info(dev_addr, &dev_tree);
bool const need_pre = (dev_tree.hub_addr && dev_tree.speed == TUSB_SPEED_LOW);
rhport = RHPORT_PIO(rhport); rhport = RHPORT_PIO(rhport);
return pio_usb_endpoint_open(rhport, dev_addr, (uint8_t const*) desc_ep); return pio_usb_endpoint_open(rhport, dev_addr, (uint8_t const*) desc_ep, need_pre);
} }
bool hcd_edpt_xfer(uint8_t rhport, uint8_t dev_addr, uint8_t ep_addr, uint8_t * buffer, uint16_t buflen) bool hcd_edpt_xfer(uint8_t rhport, uint8_t dev_addr, uint8_t ep_addr, uint8_t * buffer, uint16_t buflen)