Commit Graph
28 Commits
Author SHA1 Message Date
igor.masar 7d0344ac39 feat(usb): Enable ESP32-S31 USB device examples
Enable ESP32-S31 in the USB device example build rules, supported
target tables, USB PHY pin mapping, and pytest target parametrization.

The target supports USB-OTG through its USB 2.0 PHY. Keep ESP32-S31
USB device tests marked as temporary CI skips until runners with the
usb_device tag are available.
2026-05-19 15:10:47 +02:00
Igor Masar f3218ca0e8 Merge branch 'ci/esp32s31_usb_host_enable' into 'master'
ci(usb/host): enable esp32s31 and esp32h4 for USB host examples

See merge request espressif/esp-idf!47654
2026-04-17 18:26:55 +08:00
igor.masar 37f58cf498 ci(usb/host): enable esp32s31 and esp32h4 for USB host examples
Remove the temporary esp32s31 disable from usb/host build-test rules.
Add esp32s31 and esp32h4 to the usb_host_msc and usb_host_lib pytest
matrices. Keep the tests temp-skipped in CI until usb_host_flash_disk
runners exist.
2026-04-16 16:25:26 +02:00
Igor Masar 0b695dbe20 Merge branch 'feat/esp32s31_usb_support' into 'master'
feat(usb): add ESP32-S31 DWC/UTMI support

See merge request espressif/esp-idf!46329
2026-04-09 01:44:30 +08:00
igor.masar 9ab7d5eb03 feat(usb): add ESP32-S31 DWC/UTMI support
Add ESP32-S31 USB DWC/UTMI LL headers, SoC register structures, peripheral
descriptors, capabilities, and linker mappings so the HS OTG controller and
UTMI PHY can be built in esp_hal_usb.

Introduce SOC_USB_FSLS_PHY_NUM on USB-OTG targets to separate FSLS USB_WRAP
support from OTG/UTMI support. Use it to gate usb_wrap, the USB PHY driver,
docs, and example build rules on targets without an FSLS PHY.

Also add UTMI data pulldown control to the HAL, clear the boot-time DWC
suspend state on ESP32-S31, alias the legacy internal PHY target to UTMI for
backward compatibility, and extend usb_phy tests for UTMI-only targets.
2026-04-08 16:01:28 +08:00
igor.masar c30851292f docs(usb): Update links and example checks
Replace the peripherals index USB entries with direct links to
ESP-USB so the generated pages are no longer redirect-only stubs.

Keep legacy USB URLs working via redirects, including the
individual USB host maintainer notes pages.

Remove the obsolete placeholder documents and stale CODEOWNERS
pattern.

Mark the moved USB examples as KNOWN_MISSING in the example
documentation checker until it can also read the ESP-USB guide.
2026-03-03 17:01:08 +01:00
igor.masar 7b38e47834 docs(usb): Move USB docs to esp-usb and add redirects
Remove USB Host/Device content from ESP-IDF pages and keep only links to
ESP-USB documentation.

Add redirects for legacy USB pages to ESP-USB with target-aware URL
substitution in docs config.

Drop obsolete USB host notes references from docs_not_updated lists.
2026-03-02 23:25:39 +01:00
Igor Masar 8af4edb0e7 Merge branch 'docs/esp32h4-usb' into 'master'
docs(usb): add ESP32-H4 support notes and pin map

See merge request espressif/esp-idf!42723
2025-11-10 06:34:03 +08:00
igor.masar 7492f9b9cd docs(usb): add ESP32-H4 support notes and pin map
- usb_device: add esp32h4 DP/DM defaults (GPIO22/21) and "only:: esp32h4";
  add H4 PHY considerations; add H4 MSC write-speed table; generalize MSC SD
  note to {IDF_TARGET_NAME}; exclude tusb_ncm on H4
- usb_host: include esp32h4 in feature gates; add H4 PHY considerations
- usb_host_notes_dwc_otg: enable H4 by extending "only::" selector
- examples/usb: add ESP32-H4 row to DP/DM pin map
- docs_not_updated: drop H4 entries for usb_device, usb_host, and related
  usb_host notes now covered
- soc(esp32h4): set internal PHY mapping to DP=22, DM=21
2025-11-07 12:19:26 +01:00
Igor Masar 4f578d8375 Merge branch 'feat/usb-h4-support' into 'master'
feat(soc/usb): Add USB support for ESP32-H4

Closes IDF-12341 and IDF-12342

See merge request espressif/esp-idf!41642
2025-10-09 18:28:16 +08:00
igor.masar c74ce1c201 feat(usb/h4): Add USB OTG host support for ESP32-H4
- hal: add DWC OTG core LL (usb_dwc_ll.h) and USB wrap LL (usb_wrap_ll.h)
- soc: add DWC register map/cfg (usb_dwc_struct.h, usb_dwc_cfg.h) and caps
- soc/kconfig: enable SOC_USB_OTG_SUPPORTED=1, SOC_USB_OTG_PERIPH_NUM=1
- docs: add ESP32-H4 to usb_phy test app “Supported Targets”
- ld: export USB_WRAP symbol
- doxygen: include USB Host headers for H4 to emit .inc files
2025-10-02 23:21:08 +02:00
igor.masar 06a32f2467 docs(usb): add TUSB1106 to tested external PHY list 2025-09-12 17:19:23 +02:00
Igor Masar 49ae853ddb Merge branch 'docs/usb-external-phy' into 'master'
docs(usb): add section on external USB PHY configuration

Closes DOC-3308

See merge request espressif/esp-idf!40670
2025-08-25 19:37:09 +08:00
igor.masar 10252a8fb7 docs(usb): add section on external USB PHY configuration
Add top-level section for configuring and initializing external USB PHY
on ESP32-S3. Includes GPIO mapping, code example, and guidance on
suspend and speed selection pins.

Link to ESP USB PHY guide for SP5301 setup to avoid duplicating content.
Add dedicated schematic reference for STUSB03E with analog switch.
2025-08-12 14:26:46 +02:00
Igor Masar f4a861964e Merge branch 'refactor/usb-phy' into 'master'
refactor(usb_phy): move USB PHY implementation to esp_hw_support

Closes IDF-11144 and IDF-9021

See merge request espressif/esp-idf!39770
2025-07-11 20:49:36 +08:00
igor.masar 84a5812d55 refactor(usb_phy): Move USB PHY implementation to esp_hw_support
Moved USB PHY source and headers from `usb/` to `esp_hw_support/`
to better reflect their hardware-specific nature.
Replaced use of public GPIO driver APIs with internal LL (Low-Level) APIs
for more precise hardware control and alignment with ESP-IDF HAL best practices.
Deleted deprecated PHY helper functions.
Consolidated all SoC-specific declarations under `usb_periph.h`.

BREAKING CHANGE: deprecated USB PHY APIs have been removed; update
callers to use the new interfaces in esp_hw_support/usb_phy.h
2025-07-10 14:52:47 +02:00
Igor Masar 574f037b1e Merge branch 'fix/usb-log-priu32-fifo-config' into 'master'
fix(usb/hcd): Use PRIu32 in FIFO config log for portability

See merge request espressif/esp-idf!39299
2025-05-21 20:00:27 +08:00
igor.masar dcdeeeff45 fix(usb/hcd): Use PRIu32 in FIFO config log for portability
The ESP_LOGD message that prints FIFO line sizes used %u for uint32_t,
which may cause incorrect output on some architectures (e.g., ESP32-P4
where uint32_t maps to unsigned long). To ensure portable and correct
logging across all supported platforms, this patch replaces %u with
%" PRIu32 ", defined in <inttypes.h>.

No functional behavior is affected — this is a formatting correction
for debug output only.
2025-05-20 16:27:27 +02:00
Igor Masar c06fa310cf Merge branch 'feat/usb-explicit-fifo-config' into 'master'
feat(usb/hal): Add HAL API to configure custom FIFO layout

Closes IDF-9042

See merge request espressif/esp-idf!38404
2025-05-13 22:28:41 +08:00
igor.masar cb4d90186f feat(usb/hal): Add support for explicit FIFO configuration
Introduce a new HAL API `usb_dwc_hal_set_fifo_config()` that allows advanced users
to manually configure RX, Non-Periodic TX, and Periodic TX FIFO sizes. This offers
fine-grained control beyond the previous bias-based sizing approach.

The HAL function no longer returns `esp_err_t`, and internal validations are enforced
via `HAL_ASSERT()`. Responsibility for input validation has been moved to the HCD layer.

FIFO configuration must be applied before any USB pipes are created or activated.
This feature is intended for use during `usb_host_install()`.

If no custom FIFO configuration is provided (i.e., all values are zero),
the driver falls back to a bias-based default layout based on Kconfig settings
(`CONFIG_USB_HOST_HW_BUFFER_BIAS_*`). Bias resolution is done inside `hcd_port_init()`.

The `port_obj_t` structure has been extended with a `fifo_config` field, which stores
the configuration to allow re-application after a USB port reset.

Obsolete FIFO bias enums (`usb_hal_fifo_bias_t`, `hcd_port_fifo_bias_t`) and related
APIs (`hcd_port_set_fifo_bias()`) have been removed in favor of the new structure-based mechanism.

The HCD initialization and port reset flow has been updated to use the explicit
FIFO configuration.

USB Host maintainer documentation (`maintainers.md`) has been updated accordingly.
Test cases were updated to remove the usage of removed bias API and now rely on default
or custom FIFO configuration.
2025-05-09 15:03:52 +02:00
Igor Masar ea57c1b491 Merge branch 'docs/usb_msc_perf' into 'master'
docs(usb_msc_device): Update documentation with performance optimization results

Closes DOC-10816

See merge request espressif/esp-idf!36919
2025-04-15 15:42:07 +08:00
igor.masar 44b18ca0a7 docs(usb_msc): Update documentation with performance optimization results
Added performance optimization details for USB MSC on ESP32-S3, ESP32-P4, and ESP32-S2.
Includes benchmarking results for SD card and SPI flash, explanation of performance
limitations.

Related to https://github.com/espressif/esp-idf/issues/11110
2025-04-12 15:30:47 +02:00
Igor Masar a3864c088d Merge branch 'fix/usb-host-device-close-err-give-semaphore' into 'master'
fix(usb_host): Give semaphore on attempted close of non-opened device

See merge request espressif/esp-idf!37985
2025-03-27 18:02:15 +08:00
igor.masar 5f6155638d fix(usb_host): Fix return code and description
Changed error code from ESP_ERR_INVALID_STATE to ESP_ERR_NOT_FOUND
when the client never opened the device.
Updated function documentation to correctly reflect return values.
2025-03-25 23:00:56 +01:00
Igor Masar 9f421f5429 Merge branch 'feat/usb-msc-host-multi' into 'master'
feat(usb_host/msc): Add support for multiple MSC devices

See merge request espressif/esp-idf!37336
2025-03-20 17:40:47 +08:00
Igor Masar 9722bfcf33 feat(usb_host/msc): Add support for multiple MSC devices
Enhanced the USB MSC host example to support multiple simultaneously
connected Mass Storage Class (MSC) devices.

- Implemented dynamic allocation and mounting of multiple MSC devices.
- Improved example logic for handling USB device connections and disconnections.
- Updated documentation to clarify USB host limitations and endpoint allocation.
2025-03-20 17:40:47 +08:00
Igor Masar d53b0a9111 Merge branch 'fix/usb-hal-dwc-host-channel-num' into 'master'
fix(usb/hal/dwc): Correct host channel number calculation

See merge request espressif/esp-idf!37173
2025-02-26 21:19:51 +08:00
igor.masar dfd8098716 fix(usb/hal/dwc): Correct host channel number calculation
The hardware field `ghwcfg2.numhstchnl` is zero-based, meaning the actual
number of available host channels is `numhstchnl + 1`. This off-by-one
error caused the USB Host controller to report N-1 channels instead of N,
leading to premature "No more HCD channels available" errors when
connecting multiple devices.

This issue affects ESP32-S2, ESP32-S3, and ESP32-P4.
2025-02-26 17:29:06 +08:00