Commit Graph
10 Commits
Author SHA1 Message Date
igor.masar a9822b0ad1 feat(soc): add SOC_USB_FSLS_PHY_NUM for USB-OTG targets
Introduce SOC_USB_FSLS_PHY_NUM on ESP32-S2, ESP32-S3 and ESP32-P4 to
expose the number of FSLS USB_WRAP PHYs available on each target. This
separates FSLS USB_WRAP support from OTG/UTMI support so that downstream
code can gate FSLS PHY handling independently.
2026-04-24 12:40:17 +02:00
igor.masar d0e0c188fb 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-06-12 21:03:47 +08: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