arch/risc-v/espressif: Add LPI2C support for esp32p4

Add LPI2C support for esp32p4

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
This commit is contained in:
Eren Terzioglu 2026-03-27 09:34:37 +01:00 committed by Xiang Xiao
parent ae5c08c758
commit 7e321e0aba
2 changed files with 28 additions and 15 deletions

View file

@ -3123,7 +3123,8 @@ config ESPRESSIF_I2C0_SCLPIN
config ESPRESSIF_I2C0_SDAPIN
int "I2C0 SDA Pin"
default 5
default 5 if !ESPRESSIF_LPI2C
default 22 if ESPRESSIF_LPI2C
range 0 21 if ARCH_CHIP_ESP32C3
range 0 30 if ARCH_CHIP_ESP32C6
range 0 27 if ARCH_CHIP_ESP32H2
@ -3175,22 +3176,31 @@ choice ESPRESSIF_LPI2C_MODE
default ESPRESSIF_LPI2C_MASTER_MODE
config ESPRESSIF_LPI2C_MASTER_MODE
bool "I2C0 Master Mode"
bool "LP I2C0 Master Mode"
select ESPRESSIF_I2C_PERIPH_MASTER_MODE
endchoice # ESPRESSIF_LPI2C_MODE
config ESPRESSIF_LPI2C_SCLPIN
int "LPI2C SCL Pin"
default 7
if ESPRESSIF_LP_I2C0
config ESPRESSIF_LPI2C0_SCLPIN
int "LPI2C0 SCL Pin"
default 7 if ARCH_CHIP_ESP32C6
default 4 if ARCH_CHIP_ESP32P4
range 7 7 if ARCH_CHIP_ESP32C6
range 0 15 if ARCH_CHIP_ESP32P4
range 7 7 if ARCH_CHIP_ESP32C6
config ESPRESSIF_LPI2C_SDAPIN
int "LPI2C SDA Pin"
default 6
config ESPRESSIF_LPI2C0_SDAPIN
int "LPI2C0 SDA Pin"
default 6 if ARCH_CHIP_ESP32C6
default 5 if ARCH_CHIP_ESP32P4
range 6 6 if ARCH_CHIP_ESP32C6
range 0 15 if ARCH_CHIP_ESP32P4
range 6 6 if ARCH_CHIP_ESP32C6
endif # ESPRESSIF_LPI2C
endif # ESPRESSIF_LP_I2C0
endif # ESPRESSIF_LP_I2C
if ESPRESSIF_I2C_BITBANG

View file

@ -70,6 +70,7 @@
# include "io_mux.h"
# include "lp_core_i2c.h"
# include "soc/i2c_struct.h"
# include "driver/lp_io.h"
#endif
/****************************************************************************
@ -430,8 +431,8 @@ i2c_hal_context_t lp_i2c0_ctx =
static struct esp_i2c_config_s esp_lp_i2c0_config =
{
.clk_freq = I2C_CLK_FREQ_DEF,
.scl_pin = 7,
.sda_pin = 6,
.scl_pin = CONFIG_ESPRESSIF_LPI2C0_SCLPIN,
.sda_pin = CONFIG_ESPRESSIF_LPI2C0_SDAPIN,
};
static struct esp_i2c_priv_s esp_lp_i2c0_priv =
@ -891,10 +892,12 @@ static void esp_i2c_init(struct esp_i2c_priv_s *priv)
rtc_gpio_iomux_func_sel(config->sda_pin, p_i2c_pin->iomux_func);
rtc_gpio_iomux_func_sel(config->scl_pin, p_i2c_pin->iomux_func);
#else
/* ToDo: Add LP I2C for LP GPIO Matrix
* supported devices (e.g ESP32-P4)
*/
lp_gpio_connect_out_signal(config->sda_pin, p_i2c_pin->sda_out_sig, 0,
0);
lp_gpio_connect_in_signal(config->sda_pin, p_i2c_pin->sda_in_sig, 0);
lp_gpio_connect_out_signal(config->scl_pin, p_i2c_pin->scl_out_sig, 0,
0);
lp_gpio_connect_in_signal(config->scl_pin, p_i2c_pin->scl_in_sig, 0);
#endif /* SOC_LP_GPIO_MATRIX_SUPPORTED */
}
#endif