This is an automated email from the ASF dual-hosted git repository. jerpelea pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 4d89d7186ed405aab67de8f1dc83a1465b78c4d7 Author: Eren Terzioglu <eren.terzio...@espressif.com> AuthorDate: Wed Feb 26 09:47:05 2025 +0100 arch/xtensa/esp32[s2|s3]: Add I2C slave support Add I2C slave support on arch level for Xtensa based Espressif devices Signed-off-by: Eren Terzioglu <eren.terzio...@espressif.com> --- arch/xtensa/src/common/espressif/Kconfig | 19 ++++++++-- arch/xtensa/src/common/espressif/Make.defs | 4 +++ arch/xtensa/src/esp32/Kconfig | 54 +++++++++++++++++++++++++--- arch/xtensa/src/esp32/Make.defs | 2 +- arch/xtensa/src/esp32/esp32_i2c.c | 4 +-- arch/xtensa/src/esp32/esp32_i2c.h | 4 +-- arch/xtensa/src/esp32/hal.mk | 2 ++ arch/xtensa/src/esp32s2/Kconfig | 56 +++++++++++++++++++++++++++--- arch/xtensa/src/esp32s2/Make.defs | 2 +- arch/xtensa/src/esp32s2/esp32s2_i2c.c | 4 +-- arch/xtensa/src/esp32s2/esp32s2_i2c.h | 4 +-- arch/xtensa/src/esp32s2/hal.mk | 2 ++ arch/xtensa/src/esp32s3/Kconfig | 54 +++++++++++++++++++++++++--- arch/xtensa/src/esp32s3/Make.defs | 2 +- arch/xtensa/src/esp32s3/esp32s3_i2c.c | 4 +-- arch/xtensa/src/esp32s3/esp32s3_i2c.h | 4 +-- arch/xtensa/src/esp32s3/hal.mk | 2 ++ 17 files changed, 193 insertions(+), 30 deletions(-) diff --git a/arch/xtensa/src/common/espressif/Kconfig b/arch/xtensa/src/common/espressif/Kconfig index 4ee5ab0ab3..88f71c879b 100644 --- a/arch/xtensa/src/common/espressif/Kconfig +++ b/arch/xtensa/src/common/espressif/Kconfig @@ -28,9 +28,24 @@ config ESPRESSIF_TEMP ---help--- A built-in sensor used to measure the chip's internal temperature. -config ESPRESSIF_I2C_PERIPH +config ESPRESSIF_I2C_PERIPH_MASTER_MODE bool - depends on (ESP32S3_I2C0 || ESP32S3_I2C1) || (ESP32_I2C0 || ESP32_I2C1) || (ESP32S2_I2C0 || ESP32S2_I2C1) + depends on (ESP32S3_I2C_PERIPH_MASTER_MODE || ESP32S2_I2C_PERIPH_MASTER_MODE || ESP32_I2C_PERIPH_MASTER_MODE) + default n + +config ESPRESSIF_I2C_PERIPH_SLAVE_MODE + bool + depends on (ESP32S3_I2C_PERIPH_SLAVE_MODE || ESP32S2_I2C_PERIPH_SLAVE_MODE || ESP32_I2C_PERIPH_SLAVE_MODE) + default n + +config ESPRESSIF_I2C0_SLAVE + bool + depends on (ESP32S3_I2C0_SLAVE_MODE || ESP32S2_I2C0_SLAVE_MODE || ESP32_I2C0_SLAVE_MODE) + default n + +config ESPRESSIF_I2C1_SLAVE + bool + depends on (ESP32S3_I2C1_SLAVE_MODE || ESP32S2_I2C1_SLAVE_MODE || ESP32_I2C1_SLAVE_MODE) default n config ESPRESSIF_I2C_BITBANG diff --git a/arch/xtensa/src/common/espressif/Make.defs b/arch/xtensa/src/common/espressif/Make.defs index 2b6447fc14..066a727780 100644 --- a/arch/xtensa/src/common/espressif/Make.defs +++ b/arch/xtensa/src/common/espressif/Make.defs @@ -64,6 +64,10 @@ CHIP_CSRCS += esp_spiflash_mtd.c endif endif +ifeq ($(CONFIG_ESPRESSIF_I2C_PERIPH_SLAVE_MODE),y) +CHIP_CSRCS += esp_i2c_slave.c +endif + ifeq ($(CONFIG_SYSTEM_NXDIAG_ESPRESSIF_CHIP_WO_TOOL),y) CHIP_CSRCS += esp_nxdiag.c endif diff --git a/arch/xtensa/src/esp32/Kconfig b/arch/xtensa/src/esp32/Kconfig index e258742aa9..b04fc2a978 100644 --- a/arch/xtensa/src/esp32/Kconfig +++ b/arch/xtensa/src/esp32/Kconfig @@ -831,13 +831,59 @@ config ESP32_I2C0 bool "I2C 0" default n select ESP32_I2C - select ESPRESSIF_I2C_PERIPH config ESP32_I2C1 bool "I2C 1" default n select ESP32_I2C - select ESPRESSIF_I2C_PERIPH + + config ESP32_I2C_PERIPH_MASTER_MODE + bool + depends on (ESP32_I2C0_MASTER_MODE || ESP32_I2C1_MASTER_MODE) + default n + select ESPRESSIF_I2C_PERIPH_MASTER_MODE + +config ESP32_I2C_PERIPH_SLAVE_MODE + bool + depends on (ESP32_I2C0_SLAVE_MODE || ESP32_I2C1_SLAVE_MODE) + default n + select ESPRESSIF_I2C_PERIPH_SLAVE_MODE + select ESPRESSIF_I2C0_SLAVE if ESP32_I2C0_SLAVE_MODE + select ESPRESSIF_I2C1_SLAVE if ESP32_I2C1_SLAVE_MODE + +choice ESP32_I2C0_MODE + prompt "I2C0 Mode" + depends on ESP32_I2C0 + default ESP32_I2C0_MASTER_MODE + +config ESP32_I2C0_MASTER_MODE + bool "I2C0 Master Mode" + select ESP32_I2C_PERIPH_MASTER_MODE + +config ESP32_I2C0_SLAVE_MODE + bool "I2C0 Slave Mode" + select I2C_SLAVE + select I2C_SLAVE_DRIVER + select ESP32_I2C_PERIPH_SLAVE_MODE + +endchoice # ESP32_I2C0_MODE + +choice ESP32_I2C1_MODE + prompt "I2C1 Mode" + depends on ESP32_I2C1 + default ESP32_I2C1_MASTER_MODE + +config ESP32_I2C1_MASTER_MODE + bool "I2C1 Master Mode" + select ESP32_I2C_PERIPH_MASTER_MODE + +config ESP32_I2C1_SLAVE_MODE + bool "I2C1 Slave Mode" + select I2C_SLAVE + select I2C_SLAVE_DRIVER + select ESP32_I2C_PERIPH_SLAVE_MODE + +endchoice # ESP32_I2C1_MODE config ESP32_TWAI0 bool "TWAI (CAN) 0" @@ -1202,12 +1248,12 @@ endif # ESP32_I2C1 config ESP32_I2CTIMEOSEC int "Timeout seconds" default 0 - depends on ESPRESSIF_I2C_PERIPH + depends on ESP32_I2C_PERIPH_MASTER_MODE config ESP32_I2CTIMEOMS int "Timeout milliseconds" default 500 - depends on ESPRESSIF_I2C_PERIPH + depends on ESP32_I2C_PERIPH_MASTER_MODE endmenu # I2C configuration diff --git a/arch/xtensa/src/esp32/Make.defs b/arch/xtensa/src/esp32/Make.defs index a3f532271d..873bf50f7b 100644 --- a/arch/xtensa/src/esp32/Make.defs +++ b/arch/xtensa/src/esp32/Make.defs @@ -75,7 +75,7 @@ CHIP_CSRCS += esp32_ledc.c endif ifeq ($(CONFIG_ESP32_I2C),y) -ifeq ($(CONFIG_ESPRESSIF_I2C_PERIPH),y) +ifeq ($(CONFIG_ESPRESSIF_I2C_PERIPH_MASTER_MODE),y) CHIP_CSRCS += esp32_i2c.c endif endif diff --git a/arch/xtensa/src/esp32/esp32_i2c.c b/arch/xtensa/src/esp32/esp32_i2c.c index 211081c8fe..dd0b1a640d 100644 --- a/arch/xtensa/src/esp32/esp32_i2c.c +++ b/arch/xtensa/src/esp32/esp32_i2c.c @@ -24,7 +24,7 @@ #include <nuttx/config.h> -#ifdef CONFIG_ESPRESSIF_I2C_PERIPH +#ifdef CONFIG_ESPRESSIF_I2C_PERIPH_MASTER_MODE #include <sys/types.h> #include <stdio.h> @@ -1569,4 +1569,4 @@ int esp32_i2cbus_uninitialize(struct i2c_master_s *dev) return OK; } -#endif /* CONFIG_ESPRESSIF_I2C_PERIPH */ +#endif /* CONFIG_ESPRESSIF_I2C_PERIPH_MASTER_MODE */ diff --git a/arch/xtensa/src/esp32/esp32_i2c.h b/arch/xtensa/src/esp32/esp32_i2c.h index 32687318ef..bb540dfed5 100644 --- a/arch/xtensa/src/esp32/esp32_i2c.h +++ b/arch/xtensa/src/esp32/esp32_i2c.h @@ -55,7 +55,7 @@ extern "C" * Public Function Prototypes ****************************************************************************/ -#ifdef CONFIG_ESPRESSIF_I2C_PERIPH +#ifdef CONFIG_ESPRESSIF_I2C_PERIPH_MASTER_MODE /**************************************************************************** * Name: esp32_i2cbus_initialize * @@ -91,7 +91,7 @@ struct i2c_master_s *esp32_i2cbus_initialize(int port); ****************************************************************************/ int esp32_i2cbus_uninitialize(struct i2c_master_s *dev); -#endif /* CONFIG_ESPRESSIF_I2C_PERIPH */ +#endif /* CONFIG_ESPRESSIF_I2C_PERIPH_MASTER_MODE */ #ifdef __cplusplus } diff --git a/arch/xtensa/src/esp32/hal.mk b/arch/xtensa/src/esp32/hal.mk index d9819b6eb3..ef96969c02 100644 --- a/arch/xtensa/src/esp32/hal.mk +++ b/arch/xtensa/src/esp32/hal.mk @@ -115,12 +115,14 @@ CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$ CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$(DELIM)uart_hal_iram.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$(DELIM)uart_hal.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$(DELIM)mmu_hal.c +CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$(DELIM)i2c_hal.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)log$(DELIM)log_noos.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)log$(DELIM)log.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)gpio_periph.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)ledc_periph.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)pcnt_periph.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)rmt_periph.c +CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)i2c_periph.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)mcpwm_periph.c ifeq ($(CONFIG_ESPRESSIF_SIMPLE_BOOT),y) diff --git a/arch/xtensa/src/esp32s2/Kconfig b/arch/xtensa/src/esp32s2/Kconfig index 895eeb4956..327dad56f9 100644 --- a/arch/xtensa/src/esp32s2/Kconfig +++ b/arch/xtensa/src/esp32s2/Kconfig @@ -473,14 +473,60 @@ config ESP32S2_I2C0 default n select ESP32S2_I2C select I2C - select ESPRESSIF_I2C_PERIPH config ESP32S2_I2C1 bool "I2C 1" default n select ESP32S2_I2C select I2C - select ESPRESSIF_I2C_PERIPH + +config ESP32S2_I2C_PERIPH_MASTER_MODE + bool + depends on (ESP32S2_I2C0_MASTER_MODE || ESP32S2_I2C1_MASTER_MODE) + default n + select ESPRESSIF_I2C_PERIPH_MASTER_MODE + +config ESP32S2_I2C_PERIPH_SLAVE_MODE + bool + depends on (ESP32S2_I2C0_SLAVE_MODE || ESP32S2_I2C1_SLAVE_MODE) + default n + select ESPRESSIF_I2C_PERIPH_SLAVE_MODE + select ESPRESSIF_I2C0_SLAVE if ESP32S2_I2C0_SLAVE_MODE + select ESPRESSIF_I2C1_SLAVE if ESP32S2_I2C1_SLAVE_MODE + +choice ESP32S2_I2C0_MODE + prompt "I2C0 Mode" + depends on ESP32S2_I2C0 + default ESP32S2_I2C0_MASTER_MODE + +config ESP32S2_I2C0_MASTER_MODE + bool "I2C0 Master Mode" + select ESP32S2_I2C_PERIPH_MASTER_MODE + +config ESP32S2_I2C0_SLAVE_MODE + bool "I2C0 Slave Mode" + select I2C_SLAVE + select I2C_SLAVE_DRIVER + select ESP32S2_I2C_PERIPH_SLAVE_MODE + +endchoice # ESP32S2_I2C0_MODE + +choice ESP32S2_I2C1_MODE + prompt "I2C1 Mode" + depends on ESP32S2_I2C1 + default ESP32S2_I2C1_MASTER_MODE + +config ESP32S2_I2C1_MASTER_MODE + bool "I2C1 Master Mode" + select ESP32S2_I2C_PERIPH_MASTER_MODE + +config ESP32S2_I2C1_SLAVE_MODE + bool "I2C1 Slave Mode" + select I2C_SLAVE + select I2C_SLAVE_DRIVER + select ESP32S2_I2C_PERIPH_SLAVE_MODE + +endchoice # ESP32S2_I2C1_MODE config ESP32S2_TWAI bool "TWAI (CAN)" @@ -790,17 +836,17 @@ config ESP32S2_I2C1_SDAPIN default 7 range 0 46 -endif # ESP32S2_I2C1 +endif # ESPRESSIF_I2C1 config ESP32S2_I2CTIMEOSEC int "Timeout seconds" default 0 - depends on ESPRESSIF_I2C_PERIPH + depends on ESP32S2_I2C_PERIPH_MASTER_MODE config ESP32S2_I2CTIMEOMS int "Timeout milliseconds" default 500 - depends on ESPRESSIF_I2C_PERIPH + depends on ESP32S2_I2C_PERIPH_MASTER_MODE endmenu # I2C Configuration diff --git a/arch/xtensa/src/esp32s2/Make.defs b/arch/xtensa/src/esp32s2/Make.defs index c9c534cfd7..b1423db2c1 100644 --- a/arch/xtensa/src/esp32s2/Make.defs +++ b/arch/xtensa/src/esp32s2/Make.defs @@ -54,7 +54,7 @@ CHIP_CSRCS += esp32s2_rng.c endif ifeq ($(CONFIG_ESP32S2_I2C),y) -ifeq ($(CONFIG_ESPRESSIF_I2C_PERIPH),y) +ifeq ($(CONFIG_ESPRESSIF_I2C_PERIPH_MASTER_MODE),y) CHIP_CSRCS += esp32s2_i2c.c endif endif diff --git a/arch/xtensa/src/esp32s2/esp32s2_i2c.c b/arch/xtensa/src/esp32s2/esp32s2_i2c.c index d0c4f323ce..1bd19ab5b0 100644 --- a/arch/xtensa/src/esp32s2/esp32s2_i2c.c +++ b/arch/xtensa/src/esp32s2/esp32s2_i2c.c @@ -24,7 +24,7 @@ #include <nuttx/config.h> -#ifdef CONFIG_ESPRESSIF_I2C_PERIPH +#ifdef CONFIG_ESPRESSIF_I2C_PERIPH_MASTER_MODE #include <assert.h> #include <debug.h> @@ -1613,4 +1613,4 @@ int esp32s2_i2cbus_uninitialize(struct i2c_master_s *dev) return OK; } -#endif /* CONFIG_ESPRESSIF_I2C_PERIPH */ +#endif /* CONFIG_ESPRESSIF_I2C_PERIPH_MASTER_MODE */ diff --git a/arch/xtensa/src/esp32s2/esp32s2_i2c.h b/arch/xtensa/src/esp32s2/esp32s2_i2c.h index 1e480a9ad5..4b83c33c07 100644 --- a/arch/xtensa/src/esp32s2/esp32s2_i2c.h +++ b/arch/xtensa/src/esp32s2/esp32s2_i2c.h @@ -51,7 +51,7 @@ * Public Function Prototypes ****************************************************************************/ -#ifdef CONFIG_ESPRESSIF_I2C_PERIPH +#ifdef CONFIG_ESPRESSIF_I2C_PERIPH_MASTER_MODE /**************************************************************************** * Name: esp32s2_i2cbus_initialize * @@ -87,7 +87,7 @@ struct i2c_master_s *esp32s2_i2cbus_initialize(int port); ****************************************************************************/ int esp32s2_i2cbus_uninitialize(struct i2c_master_s *dev); -#endif /* CONFIG_ESPRESSIF_I2C_PERIPH */ +#endif /* CONFIG_ESPRESSIF_I2C_PERIPH_MASTER_MODE */ #endif /* __ASSEMBLY__ */ #endif /* __ARCH_XTENSA_SRC_ESP32S2_ESP32S2_I2C_H */ diff --git a/arch/xtensa/src/esp32s2/hal.mk b/arch/xtensa/src/esp32s2/hal.mk index 07b8755621..d04648c8dd 100644 --- a/arch/xtensa/src/esp32s2/hal.mk +++ b/arch/xtensa/src/esp32s2/hal.mk @@ -100,6 +100,7 @@ CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$ CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$(DELIM)cache_hal.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$(DELIM)mpu_hal.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$(DELIM)mmu_hal.c +CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$(DELIM)i2c_hal.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$(DELIM)brownout_hal.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$(DELIM)efuse_hal.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$(DELIM)gpio_hal.c @@ -116,6 +117,7 @@ CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$ CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)ledc_periph.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)pcnt_periph.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)rmt_periph.c +CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)i2c_periph.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)temperature_sensor_periph.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)spi_flash$(DELIM)flash_ops.c diff --git a/arch/xtensa/src/esp32s3/Kconfig b/arch/xtensa/src/esp32s3/Kconfig index 38cf7d35b4..c321799d47 100644 --- a/arch/xtensa/src/esp32s3/Kconfig +++ b/arch/xtensa/src/esp32s3/Kconfig @@ -660,14 +660,60 @@ config ESP32S3_I2C0 default n select ESP32S3_I2C select I2C - select ESPRESSIF_I2C_PERIPH config ESP32S3_I2C1 bool "I2C 1" default n select ESP32S3_I2C select I2C - select ESPRESSIF_I2C_PERIPH + +config ESP32S3_I2C_PERIPH_MASTER_MODE + bool + depends on (ESP32S3_I2C0_MASTER_MODE || ESP32S3_I2C1_MASTER_MODE) + default n + select ESPRESSIF_I2C_PERIPH_MASTER_MODE + +config ESP32S3_I2C_PERIPH_SLAVE_MODE + bool + depends on (ESP32S3_I2C0_SLAVE_MODE || ESP32S3_I2C1_SLAVE_MODE) + default n + select ESPRESSIF_I2C_PERIPH_SLAVE_MODE + select ESPRESSIF_I2C0_SLAVE if ESP32S3_I2C0_SLAVE_MODE + select ESPRESSIF_I2C1_SLAVE if ESP32S3_I2C1_SLAVE_MODE + +choice ESP32S3_I2C0_MODE + prompt "I2C0 Mode" + depends on ESP32S3_I2C0 + default ESP32S3_I2C0_MASTER_MODE + +config ESP32S3_I2C0_MASTER_MODE + bool "I2C0 Master Mode" + select ESP32S3_I2C_PERIPH_MASTER_MODE + +config ESP32S3_I2C0_SLAVE_MODE + bool "I2C0 Slave Mode" + select I2C_SLAVE + select I2C_SLAVE_DRIVER + select ESP32S3_I2C_PERIPH_SLAVE_MODE + +endchoice # ESP32S3_I2C0_MODE + +choice ESP32S3_I2C1_MODE + prompt "I2C1 Mode" + depends on ESP32S3_I2C1 + default ESP32S3_I2C1_MASTER_MODE + +config ESP32S3_I2C1_MASTER_MODE + bool "I2C1 Master Mode" + select ESP32S3_I2C_PERIPH_MASTER_MODE + +config ESP32S3_I2C1_SLAVE_MODE + bool "I2C1 Slave Mode" + select I2C_SLAVE + select I2C_SLAVE_DRIVER + select ESP32S3_I2C_PERIPH_SLAVE_MODE + +endchoice # ESP32S3_I2C1_MODE config ESP32S3_TWAI bool "TWAI (CAN)" @@ -1402,12 +1448,12 @@ endif # ESP32S3_I2C1 config ESP32S3_I2CTIMEOSEC int "Timeout seconds" default 0 - depends on ESPRESSIF_I2C_PERIPH + depends on ESP32S3_I2C_PERIPH_MASTER_MODE config ESP32S3_I2CTIMEOMS int "Timeout milliseconds" default 500 - depends on ESPRESSIF_I2C_PERIPH + depends on ESP32S3_I2C_PERIPH_MASTER_MODE endmenu # I2C Configuration diff --git a/arch/xtensa/src/esp32s3/Make.defs b/arch/xtensa/src/esp32s3/Make.defs index 669a4500da..8cb8077d0d 100644 --- a/arch/xtensa/src/esp32s3/Make.defs +++ b/arch/xtensa/src/esp32s3/Make.defs @@ -110,7 +110,7 @@ CHIP_CSRCS += esp32s3_adc.c endif ifeq ($(CONFIG_ESP32S3_I2C),y) -ifeq ($(CONFIG_ESPRESSIF_I2C_PERIPH),y) +ifeq ($(CONFIG_ESPRESSIF_I2C_PERIPH_MASTER_MODE),y) CHIP_CSRCS += esp32s3_i2c.c endif endif diff --git a/arch/xtensa/src/esp32s3/esp32s3_i2c.c b/arch/xtensa/src/esp32s3/esp32s3_i2c.c index f78532181b..1a36db003f 100644 --- a/arch/xtensa/src/esp32s3/esp32s3_i2c.c +++ b/arch/xtensa/src/esp32s3/esp32s3_i2c.c @@ -24,7 +24,7 @@ #include <nuttx/config.h> -#ifdef CONFIG_ESPRESSIF_I2C_PERIPH +#ifdef CONFIG_ESPRESSIF_I2C_PERIPH_MASTER_MODE #include <assert.h> #include <debug.h> @@ -1647,4 +1647,4 @@ int esp32s3_i2cbus_uninitialize(struct i2c_master_s *dev) return OK; } -#endif /* CONFIG_ESPRESSIF_I2C_PERIPH */ +#endif /* CONFIG_ESPRESSIF_I2C_PERIPH_MASTER_MODE */ diff --git a/arch/xtensa/src/esp32s3/esp32s3_i2c.h b/arch/xtensa/src/esp32s3/esp32s3_i2c.h index e4edaeca87..b5b253745d 100644 --- a/arch/xtensa/src/esp32s3/esp32s3_i2c.h +++ b/arch/xtensa/src/esp32s3/esp32s3_i2c.h @@ -51,7 +51,7 @@ * Public Function Prototypes ****************************************************************************/ -#ifdef CONFIG_ESPRESSIF_I2C_PERIPH +#ifdef CONFIG_ESPRESSIF_I2C_PERIPH_MASTER_MODE /**************************************************************************** * Name: esp32s3_i2cbus_initialize * @@ -87,7 +87,7 @@ struct i2c_master_s *esp32s3_i2cbus_initialize(int port); ****************************************************************************/ int esp32s3_i2cbus_uninitialize(struct i2c_master_s *dev); -#endif /* CONFIG_ESPRESSIF_I2C_PERIPH */ +#endif /* CONFIG_ESPRESSIF_I2C_PERIPH_MASTER_MODE */ #endif /* __ASSEMBLY__ */ #endif /* __ARCH_XTENSA_SRC_ESP32S3_ESP32S3_I2C_H */ diff --git a/arch/xtensa/src/esp32s3/hal.mk b/arch/xtensa/src/esp32s3/hal.mk index 17ff6c043a..d3637d21f3 100644 --- a/arch/xtensa/src/esp32s3/hal.mk +++ b/arch/xtensa/src/esp32s3/hal.mk @@ -117,6 +117,7 @@ CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$ CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$(DELIM)cache_hal.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$(DELIM)mpu_hal.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$(DELIM)mmu_hal.c +CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$(DELIM)i2c_hal.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$(DELIM)uart_hal_iram.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)hal$(DELIM)uart_hal.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)log$(DELIM)log_noos.c @@ -125,6 +126,7 @@ CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$ CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)ledc_periph.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)pcnt_periph.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)rmt_periph.c +CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)i2c_periph.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)mcpwm_periph.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)temperature_sensor_periph.c