Commit Graph
100 Commits
Author SHA1 Message Date
Tomas Rezucha 57c4a88ac2 fix(usb/host): Fix incorrect IAD descriptor length 2026-04-08 12:59:21 +02:00
Tomas Rezucha cda5672db0 fix(usb): USB security fixes from esp-usb
Combination of the following commits:
- https://github.com/espressif/esp-usb/commit/c546816048e449f11c57ca9a1e0541e592d04c07
- https://github.com/espressif/esp-usb/commit/749af3b938aeb95e1c5b4926f2e28eb2fe65f381
- https://github.com/espressif/esp-usb/commit/234ed4e9d404590011ef61826220f403fc52bb54
- https://github.com/espressif/esp-usb/commit/8f7fe7308d39ec69d3d8822691d74f43e71da331
2026-03-27 13:49:16 +01:00
Tomas Rezucha 63f020f8e2 fix(host/usb): Fixed deadlock that prevented closing devices from high priority tasks
If in usb_host_interface_release() the underlying pipe was halted while having an URB in-flight,
usb_host_client_handle_events() may not have had a chance to process the URB yet.
Check if there are any pending URBs on the pipe before attempting to free it.

Closes https://github.com/espressif/esp-idf/issues/17707
2026-02-03 11:00:06 +01:00
Tomas Rezucha 6eb5def1d0 ci(usb/device): re-enable usb_device tests for ESP32-P4 2025-11-26 16:00:15 +01:00
Tomas Rezucha 94f81da483 feat(usb/device): Add USB device support to ESP32-P4 v3 2025-10-20 09:46:18 +02:00
Tomas Rezucha 39be672f8e feat(usb/host): Add USB Host support to ESP32-P4 v3 2025-10-20 09:46:18 +02:00
Tomas Rezucha ab5e48b026 feat(usb/host): Add option to choose peripheral for USB host library
Starting with ESP32-P4 we can have targets that have more than 1 USB-OTG peripheral.
This commit adds an option to choose which peripherals will be used by USB Host lib.

Internally, we will still have only 1 Root HUB but with multiple Root ports.
2025-06-30 08:47:45 +02:00
Tomas Rezucha 73058bfca0 docs(usb): Update ESP32-P4 USB pins to MP version
Closes https://github.com/espressif/esp-idf/issues/16136
2025-06-16 16:39:22 +02:00
Tomas Rezucha 4b15ef706b Merge branch 'fix/usb_comprehensive_heap' into 'master'
fix(usb/host): Do not call heap_caps_get_allocated_size() in USB host driver

Closes IDFGH-15138

See merge request espressif/esp-idf!38715
2025-04-30 14:22:08 +08:00
Tomas Rezucha 6badd2cf25 fix(usb/host): Do not call heap_caps_get_allocated_size() in USB host driver
It causes heap corruption if heap poisoning is enabled on ESP32-P4.
It returns incorrect size on ESP32-S3.

Closes https://github.com/espressif/esp-idf/issues/15815
2025-04-29 14:50:11 +08:00
Tomas Rezucha ca58556221 Merge branch 'fix/usb_host_ep_char_ls_via_fs' into 'master'
fix(usb_host): Correctly initialize set pipe ep char

Closes IDF-12980

See merge request espressif/esp-idf!38631
2025-04-23 14:49:16 +08:00
Tomas Rezucha 206fe63029 Merge branch 'feat/new_usb_uvc_example' into 'master'
refactor(usb/host): Update UVC example for new UVC driver v2.0

Closes IDF-10240

See merge request espressif/esp-idf!38359
2025-04-22 18:26:43 +08:00
Tomas Rezucha 1816b95261 refactor(usb/host): Update UVC example for new UVC driver v2.0 2025-04-22 08:48:18 +02:00
Tomas Rezucha b37c882aa9 Merge branch 'docs/update_cn_translation_for_usb' into 'master'
docs: Provide CN translation for usb device

See merge request espressif/esp-idf!38387
2025-04-15 22:37:08 +08:00
Tomas Rezucha 179a468adf Merge branch 'fix/usb_host_hcd_test_pipe_stall' into 'master'
feat(usb_host): Fix HCD test HCD control pipe STALL

See merge request espressif/esp-idf!38338
2025-04-15 20:43:15 +08:00
Tomas Rezucha 602a777dbd Merge branch 'mock/usb_dev_info' into 'master'
mock(usb): Extend USB mock with usb_host_device_info()

See merge request espressif/esp-idf!37952
2025-03-25 17:52:53 +08:00
Tomas Rezucha 914d003c7b test(usb): Extend USB mock with usb_host_device_info()
Also provide mocks for CTRL transfers usb_host_transfer_submit_control()
2025-03-25 08:10:30 +01:00
Tomas Rezucha 51fd02dd83 Merge branch 'fix/usb_phy_set_speed' into 'master'
fix(usb/phy): Fixed crash on external PHY init with speed != UNDEFINED

See merge request espressif/esp-idf!37218
2025-02-26 19:50:23 +08:00
Tomas Rezucha ca24a117c7 fix(usb/phy): Fixed crash on external PHY init with speed != UNDEFINED
Also deprecated usb_phy_otg_dev_set_speed()
and usb_phy_action() which are no longer used in esp-idf
2025-02-21 14:11:51 +01:00
Tomas Rezucha f9d580210c Merge branch 'fix/usb_non_periodic' into 'master'
fix(usb/host): Set SCHED_INFO for all channels

Closes IDF-12035

See merge request espressif/esp-idf!36724
2025-02-06 00:20:24 +08:00
Tomas Rezucha e80a84c148 fix(usb/host): Set SCHED_INFO for all channels
Although the hardware documentation suggests that SCHED_INFO is only used
for periodic channels, empirical evidence shows that omitting this configuration
on non-periodic channels can cause them to freeze.
Therefore, we set this field for all channels to ensure reliable operation.
2025-02-05 02:35:48 +08:00
Tomas Rezucha dfcc0b22c9 Merge branch 'fix/periodic_fs_usb_on_p4' into 'master'
fix(usb/host): Fixed Full Speed periodic transfers on ESP32-P4

Closes IDF-11988

See merge request espressif/esp-idf!36560
2025-01-27 17:28:24 +08:00
Tomas Rezucha 125a3f0297 refactor(usb): Include supported PHYs information in SoC 2025-01-24 14:03:04 +01:00
Tomas Rezucha ce59bd4017 fix(usb): Fixed missing GPIO drive capability on ESP32-P4
All USB PHYs that share their IOs with GPIOs must set
the GPIO's drive capability to maximum.
2025-01-24 14:02:52 +01:00
Tomas Rezucha 91f0cb493f fix(usb/host): Fixed Full Speed periodic transfers on ESP32-P4
For FS periodic endpoints 'tokens_per_frame' must be set to 8
LL usb_dwc_ll_hctsiz_set_sched_info() function.
2025-01-24 13:43:32 +01:00
Tomas Rezucha 70ead76a4d Merge branch 'refactor/usb_merge_p4_phy' into 'master'
refactor(usb/phy): Merge P4 and S2/S3 PHYs into one module

Closes IDF-11902

See merge request espressif/esp-idf!36249
2025-01-16 16:39:21 +08:00
Tomas Rezucha 65c2cc095d refactor(usb/phy): Merge P4 and S2/S3 PHYs into one module
P4 had separate PHY implementation for initial bring-up,
now we can merge it with the original PHY driver.
2025-01-15 11:18:10 +01:00
Tomas Rezucha b92e993d56 Merge branch 'refactor/cleanup_usb_phy' into 'master'
Cleanup USB PHY

See merge request espressif/esp-idf!35783
2025-01-08 16:11:54 +08:00
Tomas Rezucha c97b2e6cc8 refactor(usb/phy): Start using values from usb_dwc_info in PHY driver
Add tests for PHY sanity checks
2025-01-07 10:00:48 +01:00
Tomas Rezucha a66cecd250 refactor(usb/phy): Do not use deprecated variables in usb_phy 2025-01-07 09:10:23 +01:00
Tomas Rezucha 3132ffbcd7 feat(hal/usb): Explicitly enable clock and reset USB WRAP on init 2025-01-07 09:10:23 +01:00
Tomas Rezucha f029ad207f Merge branch 'fix/usb_ctrl_nyet' into 'master'
fix(usb/host): Fix reaction on High-Speed NYET packet

See merge request espressif/esp-idf!35737
2025-01-02 17:25:35 +08:00
Tomas Rezucha a57e4d7bdd Merge branch 'feat/dfu_p4' into 'master'
feat(dfu): Enable DFU on ESP32-P4

Closes IDF-7757

See merge request espressif/esp-idf!35539
2024-12-18 23:57:23 +08:00
Tomas Rezucha 3fd2f53c68 fix(usb/host): Fix reaction on High-Speed NYET packet
In Scatter-Gather DMA mode, the USB-DWC will automatically enable
PING protocol if an OUT packet is NACKed by the High-Speed device.
The PING bit must be manually reset.
2024-12-17 17:45:54 +01:00
Tomas Rezucha bf86ab3926 feat(dfu): Enable DFU on ESP32-P4 2024-12-11 09:23:32 +01:00
Tomas Rezucha 691a0ee1fd Merge branch 'feature/usb_ctrl_hint' into 'master'
feat(hints/usb): Add a hint about too small control transfer size

See merge request espressif/esp-idf!34936
2024-11-18 21:03:30 +08:00
Tomas Rezucha 66596b7f59 feat(hints/usb): Add a hint about too small control transfer size 2024-11-18 21:03:30 +08:00
Tomas Rezucha e613fcde6e Merge branch 'contrib/github_pr_14738' into 'master'
fix(docs): code comment spelling error  (GitHub PR)

Closes IDFGH-13896

See merge request espressif/esp-idf!34863
2024-11-13 19:23:47 +08:00
Tomas Rezucha 5532fa8e26 Merge branch 'contrib/github_pr_14858' into 'master'
fix(examples/usb_host_lib): correct typo in comments (GitHub PR)

Closes IDFGH-14038

See merge request espressif/esp-idf!34861
2024-11-13 15:58:10 +08:00
Tomas Rezucha 1e7098fe97 Merge branch 'contrib/github_pr_14859' into 'master'
fix(usb_host): return ESP_ERR_NO_MEM on failed alloc in client register (GitHub PR)

Closes IDFGH-14037

See merge request espressif/esp-idf!34862
2024-11-13 15:33:11 +08:00
Tomas Rezucha 00dcf1a0c0 Merge branch 'docs/usb_host_examples_readme' into 'master'
docs(usb_host): Update usb_host example READMEs for P4

Closes IDFGH-13706 and IDFGH-10950

See merge request espressif/esp-idf!34510
2024-10-31 17:08:10 +08:00
Tomas Rezucha f7da0175b0 docs(usb_host): Update usb_host example READMEs for P4
Closes https://github.com/espressif/esp-idf/issues/14578
Closes https://github.com/espressif/esp-idf/issues/12142
2024-10-31 09:00:59 +01:00
Tomas Rezucha 1805efb0b2 Merge branch 'feat/dynamic_usb_hal' into 'master'
feat(hal/usb): Make USB-DWC HAL&LL configuration independent

Closes IDF-11437

See merge request espressif/esp-idf!34045
2024-10-30 18:32:32 +08:00
Tomas Rezucha d837cae2b0 feat(hal/usb): Make USB-DWC HAL&LL configuration independent
Previously, we included symbols from soc/usb_dwc_cfg.h and configured
the HAL and LL according to it. Now we get the configuration in runtime
from USB-DWC registers.

Added missing definition for USB FS peripheral on ESP32-P4.
2024-10-24 16:54:20 +02:00
Tomas Rezucha e60ebae1e2 Merge branch 'refactor/usb_periph' into 'master'
Refactor: USB peripheral

See merge request espressif/esp-idf!33971
2024-10-24 19:35:41 +08:00
Tomas Rezucha c1f5d3067f feat(hal/usb): Add USB UTMI PHY HAL
* Add a bare-bones HAL API for the USB UTMI PHY
* Split USB-DWC LL per target
2024-10-24 15:18:30 +08:00
Tomas Rezucha b02ad37a55 feat(soc/usb): Add USB related changes to soc_caps and usb_dwc_periph
This commit changes the following:

- Add types and data structures indicating the available USB controllers
for each target.
2024-10-24 15:18:30 +08:00
Tomas Rezucha c2b5339275 Merge branch 'feat/usb_disconnect_api' into 'master'
refactor(usb): Update HCD tests to use port power off for disconnections

Closes IDF-11006

See merge request espressif/esp-idf!31179
2024-09-06 09:46:57 +08:00
Tomas Rezucha 19bf686d5e feat(usb/host): Enable USB Host tests on P4 2024-09-05 19:41:07 +02:00
Tomas Rezucha 3857f779cc fix(usb/host): Correctly handle unpowered port in HUB 2024-09-05 19:40:52 +02:00
Tomas Rezucha 19d488370f Merge branch 'feat/usb_ls_p4' into 'master'
Fix USB Low-Speed devices on ESP32-P4

Closes IDF-9565

See merge request espressif/esp-idf!33201
2024-09-03 13:59:59 +08:00
Tomas Rezucha ba16f50560 refactor(usb/host): Move P4 HS PHY function to correct LL file
Moved usb_wrap_ll_enable_precise_detection() in usb_wrap_ll.h
to usb_utmi_ll_enable_precise_detection() in usb_utmi_ll.h

Fixes commit 97d30e7c48
2024-09-02 14:39:28 +02:00
Tomas Rezucha 21c6c62087 fix(usb/host): Fix USB Low Speed devices connection on P4
P4 USB UTMI PHY was updated to specification v2.0
2024-09-02 14:39:22 +02:00
Tomas Rezucha c990e1007d Merge branch 'docs/usb_docs_p4' into 'master'
Update USB host & device documentation for P4

Closes IDF-7724

See merge request espressif/esp-idf!32855
2024-08-26 15:47:05 +08:00
Tomas Rezucha c48d1641b4 docs(usb/host): Update USB host docs for ESP32-P4 2024-08-26 08:26:45 +02:00
Tomas Rezucha d0220bd3e8 docs(usb/device): Update USB device docs for ESP32-P4 2024-08-26 08:26:39 +02:00
Tomas Rezucha 73e0948332 Merge branch 'docs/usb_maintainer_docs_p4' into 'master'
docs(usb/host): Update maintainer docs for ESP32-P4

See merge request espressif/esp-idf!32831
2024-08-22 22:21:31 +08:00
Tomas Rezucha 6457d3942d Merge branch 'fix/usb_dma_api' into 'master'
fix(usb/host): Use new cache aligned DMA alloc functions

Closes IDF-10048

See merge request espressif/esp-idf!32891
2024-08-20 23:45:45 +08:00
Tomas Rezucha 512df697f0 docs(usb/host): Update maintainer docs for ESP32-P4 2024-08-20 08:14:21 +02:00
Tomas Rezucha 660319ecaf fix(usb/host): Use new cache aligned DMA alloc functions 2024-08-20 08:13:32 +02:00
Tomas Rezucha b71bf5f014 Merge branch 'docs/remove_c5_usb' into 'master'
docs(esp32c5): Remove USB docs from the 'docs_not_updated' list

Closes IDF-9456

See merge request espressif/esp-idf!32566
2024-08-05 16:31:49 +08:00
Tomas Rezucha b0a308bdc0 docs(esp32c5): Remove USB docs from the 'docs_not_updated' list 2024-08-02 15:41:03 +02:00
Tomas Rezucha 33e68632b9 Merge branch 'fix/usb_hs_scheduler' into 'master'
fix(usb/host): Fix occasional ISOC scheduler skipping transfers

Closes IDFCI-2241

See merge request espressif/esp-idf!32012
2024-07-11 23:10:23 +08:00
Tomas Rezucha 43c06a5d11 fix(usb/host): Fix occasional ISOC scheduler skipping transfers 2024-07-09 16:59:27 +02:00
Tomas Rezucha 15c4d0e076 Merge branch 'fix/usb_isoc_error_status' into 'master'
fix(usb/host): Decode error flags in ISOC transfers

Closes IDF-7976

See merge request espressif/esp-idf!31873
2024-07-03 15:02:14 +08:00
Tomas Rezucha 04be071dc6 fix(usb/host): Decode error flags in ISOC transfers 2024-07-02 15:08:30 +02:00
Tomas Rezucha 67c10eafaa Merge branch 'feature/usb_host_multi_configuration' into 'master'
USB Host multiconfiguration support pt1 (getting the configuration descriptor)

Closes IDFGH-11532 and IDF-8732

See merge request espressif/esp-idf!26760
2024-06-20 20:29:12 +08:00
Tomas Rezucha e5bc2549ca Merge branch 'fix/usb_host_enum_urb_rounded_for_string_desc' into 'master'
fix(enum): Returned usb_round_up_to_mps for control request of string descriptors

See merge request espressif/esp-idf!31487
2024-06-13 23:50:13 +08:00
Tomas Rezucha 6b10a3074a fix(ci): Temporarily disable USB device tests on S3
Partially reverts 1302fd70ba
2024-04-17 11:43:10 +02:00
Tomas Rezucha e9daf4912b fix(usb/host): Do not allow unaligned cache access for M2C direction 2024-03-26 16:41:12 +01:00
Tomas Rezucha ba1ce22b6c Merge branch 'fix/usb_uvc_example_p4' into 'master'
USB Host UVC example fixes for P4

Closes IEC-94, IDF-4942, and IDF-6505

See merge request espressif/esp-idf!29560
2024-03-21 17:47:51 +08:00
Tomas Rezucha 4f900edb06 Merge branch 'feat/esp_hid_clean_interface' into 'master'
refactor(esp_hid): Create one common event loop

See merge request espressif/esp-idf!29449
2024-03-14 21:31:49 +08:00
Tomas Rezucha 868d375c1d refactor(esp_hid): Create one common event loop
After this change, only one event loop is created.
It is reused by all transport layers (BT, BLE, USB).
2024-03-14 11:34:13 +01:00
Tomas Rezucha 348d4ef18d fix(usb/examples): Fix UVC example crash on non-UVC device connection 2024-03-12 20:19:12 +01:00
Tomas Rezucha fa2986fdef Merge branch 'feat/usb_host_sync_types' into 'master'
Add synchronization types from USB specs table 9-13

See merge request espressif/esp-idf!29263
2024-03-12 14:48:16 +08:00
Tomas Rezucha c5dd4a827c Merge branch 'fix/bbpll_usb_link_error' into 'master'
fix(esp_phy): Allow "Enable USB when phy init" option only on supported targets

Closes IDFGH-10996 and IDFGH-11554

See merge request espressif/esp-idf!27364
2024-03-07 19:43:01 +08:00
Tomas Rezucha 65515487a9 Merge branch 'revert-f68c131e' into 'master'
Revert "Merge branch 'ci/disable_p4_cdc_acm_host' into 'master'"

Closes IDFCI-2042

See merge request espressif/esp-idf!29418
2024-03-05 21:26:25 +08:00
Tomas Rezucha 832a706eb5 revert(usb_host): Revert temporary disable cdc_acm_vcp test for P4
This reverts commit b1bbca60ee
2024-03-05 10:04:10 +01:00
Tomas Rezucha ea086840a4 fix(esp_phy): Allow WiFi/USB interference workaround option only on supported targets
"Enable USB when phy init" Kconfig option would call esp_phy function
`phy_bbpll_en_usb()` that is not implemented for all targets.
Selecting this option for unsupported target results in linking error.

The necessity of this workaround is now defined soc_caps.h rather than
in the Kconfig.

Closes https://github.com/espressif/esp-idf/issues/12185
2024-03-04 16:35:51 +01:00
Tomas Rezucha 33425140bf Merge branch 'feature/usb_hs_periodic_scheduler' into 'master'
feat(usb/host): Update ISOC scheduler for HS endpoints

Closes IDF-7473

See merge request espressif/esp-idf!27804
2024-03-04 16:45:26 +08:00
Tomas Rezucha 93fc17575f Merge branch 'refactor/esp_hid_astyle' into 'master'
refactor(esp_hid): Format the code with astyle

See merge request espressif/esp-idf!29302
2024-03-04 15:41:10 +08:00
Tomas Rezucha 72f00d7c6d feat(usb/host): Update ISOC scheduler for HS endpoints
USB-OTG uses 'sched_info' field of HCTSIZ register to schedule transactions
in USB microframes.
2024-03-01 18:05:40 +01:00
Tomas Rezucha 6529f7e3ec Merge branch 'ci/usb_host_add_p4_examples_ci' into 'master'
ci(USB): add ESP32-P4 runners to existing USB CI

Closes IDF-9127

See merge request espressif/esp-idf!28795
2024-02-29 18:43:16 +08:00
Tomas Rezucha 7f22c235db refactor(esp_hid): Format the code with astyle 2024-02-27 14:48:43 +01:00
Tomas Rezucha 5863a27bd2 feat(usb/host): Add missing sync types from USB specification 2024-02-26 10:50:20 +01:00
Tomas Rezucha c24dcd02c1 Merge branch 'feature/esp_hid_usb_preparation' into 'master'
refactor(esp_hid): Prepare for USB transport layer

See merge request espressif/esp-idf!28472
2024-02-12 16:29:12 +08:00
Tomas Rezucha 6f30198ca3 feat(esp_hid): Add Connection Request event
This event is useful for situations where the HID device
requests connection. Typically in USB transport.
2024-02-07 15:34:55 +08:00
Tomas Rezucha f7bff8b1fc refactor(esp_hid): Create new esp_hid_addr_t type 2024-02-07 15:34:55 +08:00
Tomas Rezucha 56a159a7d5 refactor(esp_hid): Move header files to esp_private directory
esp_hidd_private.h and esp_hidh_private.h are required by components
that extend esp_hid with a new transport layer, such as USB
2024-02-07 15:34:55 +08:00
Tomas Rezucha 81031490dc Merge branch 'fix/usb_example_newlib_nano' into 'master'
fix(usb/example): Fixed MSC compilation with Newlib Nano format

Closes IEC-60

See merge request espressif/esp-idf!28702
2024-02-06 17:42:11 +08:00
Tomas Rezucha 49f3dae095 Merge branch 'ci/add_p4_usb_host_to_ci' into 'master'
feature(usb): Add USB support for ESP32-P4

Closes IDF-6873

See merge request espressif/esp-idf!28585
2024-01-31 22:04:23 +08:00
Tomas Rezucha f13ae0fc08 feat(esp32p4): Add USB-OTG support for ESP32-P4 2024-01-30 15:07:11 +01:00
Tomas Rezucha e511905fd2 fix(usb/example): Fixed MSC compilation with Newlib Nano format
https://github.com/espressif/idf-extra-components/issues/254
2024-01-25 09:51:51 +01:00
Tomas Rezucha cb21994358 Merge branch 'fix/common_examples_cmake' into 'master'
fix(examples): Make esp_eth public dependency of protocol_examples_comon

See merge request espressif/esp-idf!28618
2024-01-23 23:55:30 +08:00
Tomas Rezucha 525bdf26f8 Merge branch 'feature/p4_usb_hal' into 'master'
feature(usb/host): Add HS PHY configuration

See merge request espressif/esp-idf!28549
2024-01-23 17:55:23 +08:00
Tomas Rezucha 21df64f4a9 fix(examples): Make esp_eth public dependency of protocol_examples_comon 2024-01-22 21:51:37 +08:00
Tomas Rezucha ed1f20a972 feat(hal/usb): Add HS PHY configuration 2024-01-22 12:14:11 +01:00
Tomas Rezucha 8c1f5e6015 Merge branch 'fix/check_precommit_on_win' into 'master'
fix(pre-commit): Fixed README.md encoding on Windows

See merge request espressif/esp-idf!28587
2024-01-22 17:04:28 +08:00
Tomas Rezucha c6204343a8 fix(pre-commit): Fixed README.md encoding on Windows
Windows will open the file using 'cp1252' encoding,
which may result in 'UnicodeDecodeError' for unsupported symbols.
2024-01-19 16:08:34 +01:00
Tomas Rezucha 2ab552a241 Merge branch 'refactor/usb_dependencies' into 'master'
refactor(usb/examples): Depend on new esp_driver_gpio

See merge request espressif/esp-idf!28552
2024-01-19 17:24:13 +08:00