Introduce SOC_USB_FSLS_PHY_NUM on ESP32-S2, ESP32-S3, ESP32-P4 and
ESP32-H4 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.
Cannot write to any bitscrambler registers after clock is disabled in
release_channel().
(cherry picked from commit 39a131617d82e3641d8f0b03b4ec5e5ef1051fd6)
`i2c_master_isr_handler_default()` may set HPTaskAwoken to pdTRUE via
`xQueueSendFromISR()` (event_queue), `xSemaphoreTakeFromISR()` and
`xSemaphoreGiveFromISR()` on `bus_lock_mux`. When the device list lookup
returns no matching device, the function returned directly, skipping
the `portYIELD_FROM_ISR()` at the bottom of the handler. A higher-
priority task waiting on the bus mux or the event queue would then have
to wait for the next scheduler tick instead of being preempted into
immediately, inflating worst-case event latency.
Replace the early return with a goto to the existing yield check at the
end of the ISR.
Merges https://github.com/espressif/esp-idf/pull/18569
The otatool pytest calls dut.serial.close() and then immediately
launches otatool_example.py as a subprocess that re-opens the same
serial port via esptool. This fails intermittently because:
1. pytest-embedded's QueueFeederThread still holds a reference to
the serial port file descriptor when close() returns, causing
'argument must be an int, or have a fileno() method' error.
2. The OS has not fully released the serial port by the time the
subprocess tries to open it.
Add a delay after serial close and retry logic for the subprocess
to handle transient serial port contention.
Made-with: Cursor
Replace erase_nvs + SNTP time sync with direct NVS timestamp injection
from the pytest host. This eliminates CI flakiness caused by NTP servers
being unreachable from the CI lab network.
Changes:
- Add write_time_to_nvs() helper that generates an NVS partition image
with the current host timestamp and flashes it to the DUT before each
test. The firmware reads this via the existing update_time_from_nvs()
path and skips SNTP entirely.
- Remove @pytest.mark.parametrize('erase_nvs', ['y']) from all 4
Ethernet-based tests since NVS is now written with valid data.
When the REPL input backend is unavailable, linenoise() may return NULL
immediately. esp_console_repl_task() currently retries without yielding,
which can make the console_repl task spin continuously.
For USB Serial/JTAG console this can happen when the REPL is started
without an attached USB host. Since the REPL task has priority 2, this
can starve lower-priority tasks, prevent app_main from continuing after
esp_console_start_repl(), and trigger the task watchdog due to IDLE not
running.
Add a small delay before retrying when linenoise() returns NULL.
Closes https://github.com/espressif/esp-idf/issues/18485