Commit Graph
62 Commits
Author SHA1 Message Date
DatanoiseTV 48c80d81e6 fix(i2c_master): yield from ISR when no matching device is found
`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
2026-05-27 09:49:34 +08:00
Evgeny Torbin 59f62ad15f test: format all test scripts 2026-04-17 16:01:00 +02:00
morris 06135ef56c Merge branch 'fix/i2c_fsm_reset_sequence_v5.3' into 'release/v5.3'
fix(i2c): reset master before bus clear on chips without HW FSM reset (v5.3)

See merge request espressif/esp-idf!47510
2026-04-17 16:21:02 +08:00
morris 5f2ec0d750 Merge branch 'fix/i2c_null_check_v5.3' into 'release/v5.3'
fix(i2c): add NULL check and correct log (v5.3)

See merge request espressif/esp-idf!46689
2026-04-15 11:08:59 +08:00
Chen Chen f22dc4828a docs(i2c): update i2c_master_probe parameter comment
closes https://github.com/espressif/esp-idf/issues/18442
2026-04-13 15:13:44 +08:00
Chen Chen d93f1f5ef6 fix(i2c): reset master before bus clear on chips without HW FSM reset
Reorder s_i2c_hw_fsm_reset() so i2c_ll_reset_register and interrupt
masking run before s_i2c_master_clear_bus(). Avoids ISR firing when
i2c_common_set_pins reconnects GPIOs to a stuck FSM (IDFGH-17497).

Closes https://github.com/espressif/esp-idf/issues/18438

Made-with: Cursor
2026-04-13 15:12:38 +08:00
Hu Rui de40896138 test(i2c): with malloc comes from PSRAM by default 2026-04-01 15:57:19 +08:00
Hu Rui dfe60c5935 fix(i2c): add NULL check and correct log 2026-04-01 15:54:16 +08:00
Chen Chen 81bd79f7f9 ci(i2c): bypass the know failure case for deprecated driver 2026-03-31 17:14:08 +08:00
Jiang Jiang Jian e2be25ecc4 Merge branch 'fix/i2c_nack_c5_v5.3' into 'release/v5.3'
fix(i2c_master): Fix potential concurrency issue with task and interrupt when nack happens (v5.3)

See merge request espressif/esp-idf!46485
2026-03-25 10:48:56 +08:00
Chen Chen ffeb869509 ci(i2c): ignore known failure test case for legacy i2c driver 2026-03-23 15:22:27 +08:00
C.S.M 486f843814 fix(i2c_master): Fix concurrency issue with task and interrupt when nack 2026-03-11 17:50:17 +08:00
Xiao Xufeng dd4de2b171 fix(i2c): fix LOG_LOCAL_LEVEL redefinition error when CONFIG_I2C_ENABLE_DEBUG_LOG is enabled
- Move LOG_LOCAL_LEVEL definition before including esp_check.h
- Fixes compilation error: 'LOG_LOCAL_LEVEL' redefined [-Werror]

Closes https://github.com/espressif/esp-idf/issues/17877
2026-02-05 00:42:30 +08:00
Chen Chen 9c5d0446fe fix(i2c_master): Add i2c master timeout range check
Closes https://github.com/espressif/esp-idf/issues/17930
2026-01-07 10:05:23 +08:00
C.S.M 331921744b fix(i2c): Make i2c nack log as debug level 2025-10-10 18:38:56 +08:00
C.S.M 87c6979b97 fix(i2c): Fix that fsm reset cause i2c scl frequency changed on esp32s2 2025-05-08 13:01:30 +08:00
C.S.M debbb61451 fix(i2c): Fix some i2c coverity issue 2025-05-08 13:01:30 +08:00
C.S.M 0fdd061500 fix(i2c): I2C should not clear bus in a nack state 2025-05-08 13:01:30 +08:00
C.S.M 31999770a6 fix(i2c): Fix i2c customize only read one byte issue 2025-05-08 13:01:30 +08:00
C.S.M d5ceed3d96 feat(i2c): Add api for customize i2c transaction interface for un-standard i2c device 2025-05-08 13:01:30 +08:00
C.S.M 6efaf6b85c fix(i2c_master): Fix the stretch happen cause timeout in probe,
Closes https://github.com/espressif/esp-idf/issues/15589
2025-04-15 13:09:12 +08:00
C.S.M e225e29196 fix(i2c): Fix i2c slave auto selection issue,
Closes https://github.com/espressif/esp-idf/issues/15644
2025-04-15 13:09:12 +08:00
C.S.M 3aeeb7585d fix(i2c): Fix the array size of static operation,
Closes https://github.com/espressif/esp-idf/issues/15583
2025-04-15 13:09:12 +08:00
C.S.M 7f37a6fd66 fix(i2c_master): Fix i2c master race condition issue,
Closes https://github.com/espressif/esp-idf/issues/15444
2025-04-15 13:09:12 +08:00
C.S.M 385fa9870f fix(i2c): Add bus handle check so that it will not be panic when there is no free bus,
Closes https://github.com/espressif/esp-idf/issues/14819
2024-12-31 12:01:10 +08:00
C.S.M d4f3c9c0d5 fix(i2c): Enhance lp clock source and avoid deadlock,
Closes https://github.com/espressif/esp-idf/issues/14908,
Closes https://github.com/espressif/esp-idf/issues/14906
2024-12-30 13:40:37 +08:00
C.S.M 22edfd2021 test(i2c): Support test for esp32p4 lp i2c 2024-10-25 16:09:21 +08:00
C.S.M 3419abf601 fix(i2c_master): Fix the memory leak in the async transaction 2024-10-25 16:08:50 +08:00
C.S.M 399b8b6ef1 feat(i2c_master): Add an api for retrieveing handle via port 2024-10-25 16:06:15 +08:00
C.S.M 189db78bec fix(i2c): Fix possible error state in clear the bus,
Closes https://github.com/espressif/esp-idf/issues/13647
2024-09-12 11:21:08 +08:00
C.S.M deb91c7abe fix(i2c_master): Fix an I2C issue that slave streth happen but master timeout set seems doesn't work
Closes https://github.com/espressif/esp-idf/issues/14129
Closes https://github.com/espressif/esp-idf/issues/14401
2024-09-12 11:20:46 +08:00
C.S.M d6162c4a78 fix(i2c): Fix i2c not release semaphore in command send loop,
Closes https://github.com/espressif/esp-idf/issues/13962
2024-07-08 15:12:49 +08:00
wuzhenghui 1854036f92 change(esp_hw_support): use union retention link priority definiation 2024-06-13 14:08:37 +08:00
C.S.M 4a94f9b27c Merge branch 'fix/i2c_pin_short_cut' into 'master'
fix(i2c_master): Modify the behavior from ISR WDT to return timeout when circut get shortcut

See merge request espressif/esp-idf!30188
2024-04-15 19:15:35 +08:00
Cao Sen Miao 4ba3a4e482 fix(i2c_master): Fix the issue that probe cannot work properly after a general call,
Closes https://github.com/espressif/esp-idf/issues/13547
2024-04-15 11:29:13 +08:00
Cao Sen Miao a69c6e8f41 fix(i2c_master): Modify the behavior from ISR WDT to return timeout when circut get shortcut,
Closes https://github.com/espressif/esp-idf/issues/13587
2024-04-15 11:05:43 +08:00
Lou Tianhao 4061e282dd draft(i2c): need to support regdma_i2c for esp32c5beta3 2024-04-12 14:14:06 +08:00
Cao Sen Miao 1fe7cc8d13 test(i2c_master): Add test for lp_i2c support in i2c master driver 2024-04-03 11:39:07 +08:00
Cao Sen Miao 0985bfbe27 feat(i2c_master): Add lp_i2c support in i2c master driver 2024-04-03 11:39:04 +08:00
Li Shuai fc308a4234 change(driver/i2c): modify i2c sleep retention test case to fix memory leakage issue 2024-03-30 11:51:52 +08:00
Li Shuai 91bb0e7276 change(driver/i2c): use new retention api to implement i2c retention 2024-03-30 11:51:52 +08:00
wuzhenghui 38fe4e136a feat(esp_hw_support): support esp32p4 sleep peripheral retention 2024-03-28 19:18:25 +08:00
morris c0289ee6eb fix(drivers): fix typos found by codespell
codespell components/esp_driver*
2024-03-28 10:01:27 +08:00
Cao Sen Miao ede1df51b0 feat(i2c_master): Add parameter to config I2C scl await time 2024-03-27 10:35:11 +08:00
Cao Sen Miao c0e5f2b73a fix(i2c_master): Fix issue that i2c clock got wrong after reset,
Closes https://github.com/espressif/esp-idf/issues/13397
2024-03-21 13:13:53 +08:00
Cao Sen Miao 016877b7ce fix(i2c_master): Fix issue that initialize esp32 and using i2c_master_probe issue,
and probe might failed.
Fixed I2C cannot return err code when nack detected
Closes https://github.com/espressif/esp-idf/issues/13213,
Closes https://github.com/espressif/esp-idf/issues/12929,
Closes https://github.com/espressif/esp-idf/issues/13398,
2024-03-19 11:07:13 +08:00
C.S.M 812d197011 Merge branch 'bugfix/i2c_slave_bugs' into 'master'
fix(i2c_slave): Fix multiple issues on i2c slave

Closes IDFGH-12343 and IDFGH-12319

See merge request espressif/esp-idf!29566
2024-03-15 19:36:56 +08:00
Cao Sen Miao 60419a4892 fix(i2c_slave): Fixed the isr_flags not really parse to the intr_allocate,
Closes https://github.com/espressif/esp-idf/issues/13374
2024-03-15 14:40:55 +08:00
Cao Sen Miao 7b731cae39 fix(i2c_slave): Fix bugs on i2c slave,
1. Fixed read data number smaller than master has sent it will fail
2. Disable interrupt when destroy bus
Closes https://github.com/espressif/esp-idf/issues/13354
2024-03-15 14:40:52 +08:00
Eric Wheeler 6e1bba7430 fix(i2c_master): fix deadlock on s_i2c_transaction_start failure
As pointed out in PR #13134 by @MatthiasKunnen, there is a deadlock in
`s_i2c_synchronous_transaction()` if `s_i2c_transaction_start()` should fail
because, on error, s_i2c_synchronous_transaction() returns before releasing the
lock.

This commit fixes the deadlock without any other changes.

Closes: #13387

Signed-off-by: Eric Wheeler <esp-idf@z.ewheeler.org>
2024-03-15 14:13:13 +08:00