Commit Graph

76 Commits

Author SHA1 Message Date
hathach
1f95a417f2 Add tuh_rhport_is_active() and tuh_rhport_reset_bus()
- also improve ehci bus reset
- seperate bus reset delay and contact debouncing delay in enumeration
2023-08-07 20:48:07 +07:00
hathach
dc74e634f9 fix unaligned hub status_change 2023-07-25 12:35:40 +07:00
hathach
20ef6c4ef7 slightly clean up 2023-05-29 13:29:11 +07:00
hathach
5c428d35a6 check status_change is not zero first 2023-05-29 13:27:20 +07:00
Ivo Popov
8ad024e51b Even when we get an empty "status change" interrupt from the hub, schedule another interrupt poll.
During enumeration, when there are multiple devices attached to the
hub as it's plugged into the Pi Pico, enumeration hangs, because we
get a "status change" callback with value zero. With this patch, we
retry several times on "zero" status change callbacks, until
eventually we succeed.

This is the cheapo hub that exhibits this behavior, but I assume it's
not the only one: https://www.amazon.com/gp/product/B083RQMC7S.

While debugging this, I consulted the implementation in the Linux
kernel. There, hub setup explicitly checks each port individually,
before starting to depend on "status change" interrupts:
https://elixir.bootlin.com/linux/latest/source/drivers/usb/core/hub.c#L1133.
We probably should do something like that here, but it's a much bigger
change.
2023-05-29 13:18:16 +07:00
hathach
206d63e038 correct EHCI reporting failed xfer (instead of stalled) when device is unplugged 2023-05-16 11:09:21 +07:00
hathach
71fb6469d4 separate CFG_TUSB_MEM_SECTION and CFG_TUSB_MEM_ALIGN to
- CFG_TUD_MEM_SECTION and CFG_TUD_MEM_ALIGN
- CFG_TUH_MEM_SECTION and CFG_TUH_MEM_ALIGN
- fix missing mem section and align for host
2023-03-24 14:05:21 +07:00
hathach
3623ba1884 fix trailing space and new line
temporarily disable codespell
2023-03-17 16:12:49 +07:00
Ryzee119
2b2354d302 Hub: Clear other port feature changes 2022-08-16 18:25:46 +09:30
Ryzee119
3c7b5dcaff Hub: Handle hub device status change interrupt 2022-08-16 18:25:43 +09:30
Ryzee119
aafea8ef5d Hub: Rename port status callback to be more generic 2022-08-15 17:43:04 +09:30
Ryzee119
5efef4393c Hub: Expand hub helpers to handle device events 2022-08-15 17:42:56 +09:30
hathach
0042eccb3b fix redundant-decls warnings by usbd/usbh 2022-06-24 22:52:11 +07:00
Ryzee119
9e30ec4f16 Hub: Retry port status transfer if failed 2022-05-29 14:15:23 +09:30
hathach
821be65b03 rename usbh_edpt_open() to tuh_edpt_open() 2022-03-19 14:59:31 +07:00
hathach
4795cca04a add parse config descriptor to example
move usbh_edpt_open() to public API, remove rhport from its signature
2022-03-19 00:43:31 +07:00
hathach
8750e3b577 move daddr into xfer struct 2022-03-18 16:39:35 +07:00
hathach
f89ff939d8 rename user_arg to user_data 2022-03-17 22:37:51 +07:00
hathach
55428d7dd2 rename tuh_control_xfer_t to tuh_xfer_t 2022-03-17 20:52:16 +07:00
hathach
8aedb2ff37 slightly change the signature of tuh_control_xfer 2022-03-17 17:25:53 +07:00
hathach
66942b814b change return type of callback to void 2022-03-17 16:55:29 +07:00
hathach
deab8c276a remove const in xfer callback 2022-03-17 16:53:54 +07:00
hathach
6df420f7f3 move result into transfer struct 2022-03-17 16:24:43 +07:00
hathach
68bfd048a5 change tuh_control_xfer_t struct 2022-03-17 12:53:52 +07:00
hathach
a5a565f7eb rework usbh enumeration process using user arg from control transfer as state 2022-03-12 14:20:57 +07:00
hathach
bcdeb386cc rework usbh control xfer
- change API of tuh_control_xfer and its callback
- rename tuh_control_complete_cb_t to tuh_control_xfer_cb_t
- add user argument to control callback
- migrate usbh and hub
2022-03-11 21:57:55 +07:00
hathach
66c933fb61 fix enumeration issue when plugging hub with multiple devices attached 2022-03-10 23:16:59 +07:00
hathach
96165a1950 rename HCD_MAX_XFER to CFG_TUH_ENDPOINT_MAX
minor clean up
2022-03-04 17:07:04 +07:00
hathach
31aa077cb0 rename TUSB_OPT_HOST_ENABLED to CFG_TUH_ENABLED 2022-02-25 18:35:21 +07:00
hathach
3309425211 sepearate CFG_TUH_DEVICE_MAX and CFG_TUH_HUB
separate dev0 from _usbh_devices pool to save sram
2021-08-23 19:56:53 +07:00
hathach
a490a3fe61 add hcd attr, add note for ehci framelist on NXP derivative 2021-08-23 15:40:57 +07:00
hathach
6a16f6ccdd rename CFG_TUSB_HOST_DEVICE_MAX to CFG_TUH_DEVICE_MAX 2021-08-23 11:01:40 +07:00
hathach
22a5b1608c change host driver open return type to bool
the descriptor len used by driver will be calculated by usbh
2021-08-20 19:31:38 +07:00
hathach
5811122cfd change usbh open driver to have max_len and return driver len 2021-06-28 17:39:57 +07:00
hathach
13cb016042 add usbh_classdriver.h 2021-06-10 16:48:20 +07:00
hathach
4b2f32b778 update hub 2021-05-31 15:47:37 +07:00
hathach
65e5872d81 add hub_port_set_feature() 2021-05-31 15:19:07 +07:00
hathach
3fb80e76ce remove obsolete hcd_pipe_queue_xfer()/hcd_pipe_xfer() 2021-05-31 12:08:37 +07:00
hathach
9ad6fadf6a more include clean up 2021-05-27 18:34:07 +07:00
hathach
2efdc2fb64 get hub work more reliably 2020-11-02 08:46:24 +07:00
hathach
6eafdfab93 update usbh with hub to use async control transfer
work ok with msc + hub, but definitely need more testing.
2020-11-02 00:54:04 +07:00
hathach
b3e81673c0 change xfer_cb return type from void to bool 2020-09-06 12:11:07 +07:00
hathach
15ad585e67 replacing hcd_pipe_xfer by usbh_edpt_xfer 2020-09-06 11:49:00 +07:00
hathach
828f720207 refactor hub class
- separate connect/disconnect handling
- hub work with full speed, but doesn't seem to work with Low speed
device (with mcb1800)
- need to update msc host after migrating from isr to xfer_cb (blocked
at inquiry)
2020-09-05 20:20:45 +07:00
hathach
b8b95e8494 add in_isr to all hcd event functions 2020-09-05 15:46:50 +07:00
hathach
f7cf8cdf27 defer xfer_isr to xfer_cb 2020-09-05 14:41:31 +07:00
hathach
58cedf4c06 usb0 host on mcb1800 work with fullspeed mode.
use usbh_edpt_open() to correctly map ep2drv[]
2020-05-19 00:55:43 +07:00
Nathan Conrad
25c1bea782 Normalize line endings 2020-01-15 14:47:43 -05:00
hathach
13e01c7dca add TU_ prefix to compiler ATTR to prevent name conflict with application 2019-06-06 10:39:37 +07:00
hathach
3e6d911ce9 more clean up use inline bit funciton instead of macros 2019-05-14 12:54:29 +07:00