Skip to content

Commit 42480f1

Browse files
committed
Merge branch 'fix/i2c_lp_test_v5.5' into 'release/v5.5'
fix(i2c/gpio): Add error checks to the i2c driver & Fix errors in gpio (v5.5) See merge request espressif/esp-idf!42662
2 parents d28a923 + 52a3782 commit 42480f1

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

components/esp_driver_gpio/src/rtc_io.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2019-2024 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2019-2025 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*/
@@ -16,6 +16,9 @@
1616
#include "hal/rtc_io_hal.h"
1717
#include "soc/rtc_io_periph.h"
1818
#include "soc/soc_caps.h"
19+
#if SOC_LP_GPIO_MATRIX_SUPPORTED
20+
#include "soc/lp_gpio_pins.h"
21+
#endif
1922

2023
static const char __attribute__((__unused__)) *RTCIO_TAG = "RTCIO";
2124

@@ -181,8 +184,14 @@ esp_err_t rtc_gpio_iomux_func_sel(gpio_num_t gpio_num, int func)
181184
#if SOC_LP_GPIO_MATRIX_SUPPORTED
182185
esp_err_t lp_gpio_connect_in_signal(gpio_num_t gpio_num, uint32_t signal_idx, bool inv)
183186
{
184-
ESP_RETURN_ON_FALSE(rtc_gpio_is_valid_gpio(gpio_num), ESP_ERR_INVALID_ARG, RTCIO_TAG, "LP_IO number error");
185-
rtcio_hal_matrix_in(rtc_io_number_get(gpio_num), signal_idx, inv);
187+
uint32_t io_num;
188+
if (gpio_num == LP_GPIO_MATRIX_CONST_ZERO_INPUT || gpio_num == LP_GPIO_MATRIX_CONST_ONE_INPUT) {
189+
io_num = gpio_num;
190+
} else {
191+
ESP_RETURN_ON_FALSE(rtc_gpio_is_valid_gpio(gpio_num), ESP_ERR_INVALID_ARG, RTCIO_TAG, "LP_IO number error");
192+
io_num = rtc_io_number_get(gpio_num);
193+
}
194+
rtcio_hal_matrix_in(io_num, signal_idx, inv);
186195
return ESP_OK;
187196
}
188197

components/esp_driver_i2c/i2c_common.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -459,8 +459,8 @@ esp_err_t i2c_common_deinit_pins(i2c_bus_handle_t handle)
459459
ESP_RETURN_ON_ERROR(rtc_gpio_deinit(handle->sda_num), TAG, "deinit rtc gpio failed");
460460
ESP_RETURN_ON_ERROR(rtc_gpio_deinit(handle->scl_num), TAG, "deinit rtc gpio failed");
461461
#if SOC_LP_GPIO_MATRIX_SUPPORTED
462-
lp_gpio_connect_in_signal(LP_GPIO_MATRIX_CONST_ZERO_INPUT, i2c_periph_signal[port_id].scl_in_sig, 0);
463-
lp_gpio_connect_in_signal(LP_GPIO_MATRIX_CONST_ZERO_INPUT, i2c_periph_signal[port_id].sda_in_sig, 0);
462+
ESP_RETURN_ON_ERROR(lp_gpio_connect_in_signal(LP_GPIO_MATRIX_CONST_ZERO_INPUT, i2c_periph_signal[port_id].scl_in_sig, 0), TAG, "failed to connect lp gpio to zero");
463+
ESP_RETURN_ON_ERROR(lp_gpio_connect_in_signal(LP_GPIO_MATRIX_CONST_ZERO_INPUT, i2c_periph_signal[port_id].sda_in_sig, 0), TAG, "failed to connect lp gpio to zero");
464464
#endif
465465
}
466466
#endif

components/esp_driver_i2c/i2c_master.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -814,7 +814,7 @@ static esp_err_t i2c_master_bus_destroy(i2c_master_bus_handle_t bus_handle)
814814
i2c_master_bus_handle_t i2c_master = bus_handle;
815815
esp_err_t err = ESP_OK;
816816
if (i2c_master->base) {
817-
i2c_common_deinit_pins(i2c_master->base);
817+
ESP_RETURN_ON_ERROR(i2c_common_deinit_pins(i2c_master->base), TAG, "failed to deinit i2c pins");
818818
err = i2c_release_bus_handle(i2c_master->base);
819819
}
820820
if (err == ESP_OK) {

0 commit comments

Comments
 (0)