Commit Graph
100 Commits
Author SHA1 Message Date
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
Tomas Rezucha a5e647cf7f refactor(usb/examples): Depend on new esp_driver_gpio
This will exclude unneeded drivers from the build.
2024-01-18 07:28:06 +01:00
Tomas Rezucha 763d07fd0e Merge branch 'fix/usb_fifo_sizes' into 'master'
feat(usb/host): Calculate FIFO sizes based on USB configuration

Closes IDF-7384

See merge request espressif/esp-idf!28316
2024-01-16 01:36:32 +08:00
Tomas Rezucha 488477e0aa feat(usb/host): Calculate FIFO sizes based on USB configuration 2024-01-15 17:25:59 +01:00
Tomas Rezucha 6f053704dc Merge branch 'feature/usb_device_examples_p4_prep' into 'master'
USB Device examples: prerequisite and refactoring for esp32p4

See merge request espressif/esp-idf!28339
2024-01-13 02:21:45 +08:00
Tomas Rezucha 260a2c7562 Merge branch 'fix/usb_cache_sync' into 'master'
fix(usb/host): Sync cache for memory shared by CPU and USB-OTG

Closes IDF-9012

See merge request espressif/esp-idf!28255
2024-01-11 00:15:23 +08:00
Tomas Rezucha ec004c788b fix(usb/host): Sync cache for memory shared by CPU and USB-OTG
Transfer descriptor list, frame list and transfer data buffers
are accessed by both CPU and USB-OTG. Sync CPU cache between the accesses.
2024-01-10 15:23:24 +01:00
Tomas Rezucha f8080b2457 Merge branch 'fix/usb_binterval_parsing' into 'master'
fix(usb/host): Correctly parse wMaxPacketSize and bInterval fields in HighSpeed EP descriptors

See merge request espressif/esp-idf!27395
2023-12-13 17:28:45 +08:00
Tomas Rezucha e32b7b060c fix(usb/host): Correctly parse bInterval field in HighSpeed EP descriptors
For LS and FS interrupt endpoint: interval = bInterval
For isochronous and HS interrupt endpoint: interval = 2^(bInterval-1)
2023-12-12 21:10:43 +01:00
Tomas Rezucha c2660ce7c6 fix(usb/host): Correctly parse MPS fields in HighSpeed EP descriptors
Bits [11,12] in HighSpeed periodic endpoints specify
the number of additional transaction opportunities per microframe
2023-12-12 21:10:37 +01:00
Tomas Rezucha d34b8c81a8 Merge branch 'feature/usb_hs_support' into 'master'
feat(usb/host): Add High Speed enumeration types

See merge request espressif/esp-idf!27348
2023-12-03 21:58:54 +08:00
Tomas Rezucha 39d57f1cfd refactor(usb/host): Move FIFO size configuration to HAL layer
The logic of calculating FIFO sizes is DWC OTG specific.
We move it to the HAL layer to provide better abstraction in the HDC layer.
2023-11-30 12:04:30 +08:00
Tomas Rezucha b258bbf068 refactor(usb/host): Make private hal types USB_DWC specific 2023-11-30 10:24:53 +08:00
Tomas Rezucha 69d9e7625b feat(usb/host): Add High Speed enumeration types 2023-11-30 10:17:00 +08:00
Tomas Rezucha d315b97948 Merge branch 'fix/usb_uvc_example' into 'master'
fix(usb/uvc): Add negotiation retry for some cameras

Closes IDF-8085

See merge request espressif/esp-idf!27309
2023-11-29 15:38:53 +08:00
Tomas Rezucha 62091b4fa0 fix(usb/uvc): Add negotiation retry for some cameras
Some cameras would refuse first stream format and would only accept
on second retry.
2023-11-29 11:34:47 +08:00
Tomas Rezucha d015becbad Merge branch 'fix/usb_msc_test' into 'master'
fix(usb/test): Update MSC device test for new console

Closes IDFCI-1873

See merge request espressif/esp-idf!27358
2023-11-24 09:54:29 +08:00
Tomas Rezucha e51a0cf2b4 fix(usb/test): Update MSC device test for new console 2023-11-23 08:50:45 +01:00
Tomas Rezucha 9b233aca2b Merge branch 'fix/usb_short_desc' into 'master'
fix(usb/host): Do not abort on string descriptor overflow

See merge request espressif/esp-idf!27127
2023-11-21 10:22:03 +08:00
Tomas Rezucha f48f433d5b fix(usb/host): Do not abort on string descriptor overflow
Some devices return full LANGID table, even if short LANGID table was requested.
No memory overflow occurs, because we have allocated enough memory for transfers to the
default pipe. So we can ignore the error and continue with string desc fetching.
2023-11-20 09:12:54 +01:00