summaryrefslogtreecommitdiff
path: root/src/host/hub.c
AgeCommit message (Collapse)Author
2026-07-02license: use SPDX identifiers for src/ headers (#3749)Ha Thach
* license: use SPDX identifiers for src/ headers Replace the full ~20-line MIT license boilerplate on every src/ file with a two-line SPDX tag (SPDX-FileCopyrightText + SPDX-License-Identifier), following the REUSE convention used by CircuitPython and the Linux kernel. Removes ~3500 lines of duplicated boilerplate.
2026-03-07open hub mtt interface in 1 callhathach
2026-03-06fix ciHiFiPhile
Signed-off-by: HiFiPhile <[email protected]>
2026-03-06usbh: support MTT hubHiFiPhile
Signed-off-by: HiFiPhile <[email protected]>
2025-12-11refactor usbh_class_driver_t's open() to return number of driver len instead ↵hathach
of bool. help to simplify parsing configuration
2025-05-13fix warnings, minor clean uphathach
2025-05-06usbh: force removed device in the same bus info, before setting address.hathach
usbh: move code around hub: queue status endpoint for detach/remove event
2025-04-24refactor hub driver and move port reset on connection change to usbh.hathach
hub: add hub_port_get_status_local(), ignore resp in hub_port_get_status(pot != 0) usbh properly deboucning with hub/rootport accordingly to usb specs, also add 10ms of reset recovery
2025-03-03- add tuh_descriptor_get_string_langid() APIhathach
- host enumeration always get language id, manufacturer, product and serial string. Which is required by some device such as 8bitdo
2025-02-19more hub improve, handle more failed transfer with polling interrupt status ↵hathach
endpoint
2025-02-19complete separate hub epbuf from itfhathach
add hub_get_status(), hub_clear_feature()
2025-02-19move status_change to epbufhathach
improve hub_xfer_cb() rename internal complete function
2025-02-17usbh always retry control transfer (max 3) in case of XFER_RESULT_FAILED.hathach
added tuh_connected()
2025-02-17improve hub: retry if hub interrupt endpoint failedhathach
bump up pio-usb to latest
2024-03-22implement tuh_init()hathach
change usbh driver init() return type from void to bool
2024-03-22adding deinit() stub for usbh/hcd class driverhathach
add TUSB_VERSION_BUILD, also add TUSB_VERSION_NUMBER
2024-01-07[HUB] Fix double status xferRyzee119
2023-08-15more minor clean uphathach
- also rename usbh_classdriver.h to usbh_pvt.h to consitent with usbd
2023-08-07Add tuh_rhport_is_active() and tuh_rhport_reset_bus()hathach
- also improve ehci bus reset - seperate bus reset delay and contact debouncing delay in enumeration
2023-07-25fix unaligned hub status_changehathach
2023-05-29slightly clean uphathach
2023-05-29check status_change is not zero firsthathach
2023-05-29Even when we get an empty "status change" interrupt from the hub, schedule ↵Ivo Popov
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-16correct EHCI reporting failed xfer (instead of stalled) when device is unpluggedhathach
2023-03-24separate CFG_TUSB_MEM_SECTION and CFG_TUSB_MEM_ALIGN tohathach
- 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-17fix trailing space and new linehathach
temporarily disable codespell
2022-08-16Hub: Clear other port feature changesRyzee119
2022-08-16Hub: Handle hub device status change interruptRyzee119
2022-08-15Hub: Rename port status callback to be more genericRyzee119
2022-08-15Hub: Expand hub helpers to handle device eventsRyzee119
2022-06-24fix redundant-decls warnings by usbd/usbhhathach
2022-05-29Hub: Retry port status transfer if failedRyzee119
2022-03-19rename usbh_edpt_open() to tuh_edpt_open()hathach
2022-03-19add parse config descriptor to examplehathach
move usbh_edpt_open() to public API, remove rhport from its signature
2022-03-18move daddr into xfer structhathach
2022-03-17rename user_arg to user_datahathach
2022-03-17rename tuh_control_xfer_t to tuh_xfer_thathach
2022-03-17slightly change the signature of tuh_control_xferhathach
2022-03-17change return type of callback to voidhathach
2022-03-17remove const in xfer callbackhathach
2022-03-17move result into transfer structhathach
2022-03-17change tuh_control_xfer_t structhathach
2022-03-12rework usbh enumeration process using user arg from control transfer as statehathach
2022-03-11rework usbh control xferhathach
- 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-10fix enumeration issue when plugging hub with multiple devices attachedhathach
2022-03-04rename HCD_MAX_XFER to CFG_TUH_ENDPOINT_MAXhathach
minor clean up
2022-02-25rename TUSB_OPT_HOST_ENABLED to CFG_TUH_ENABLEDhathach
2021-08-23sepearate CFG_TUH_DEVICE_MAX and CFG_TUH_HUBhathach
separate dev0 from _usbh_devices pool to save sram
2021-08-23add hcd attr, add note for ehci framelist on NXP derivativehathach
2021-08-23rename CFG_TUSB_HOST_DEVICE_MAX to CFG_TUH_DEVICE_MAXhathach