From f95eb7b501e5d0290ee0b3a2c0ddca6e3b2ef539 Mon Sep 17 00:00:00 2001 From: Gerard Marull-Paretas Date: Wed, 12 Mar 2025 15:18:28 +0100 Subject: [PATCH 1/5] manifest: pull nrfx changes nrfx twim driver changes. Signed-off-by: Gerard Marull-Paretas --- west.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/west.yml b/west.yml index da737c7a93914..f8eef77b59367 100644 --- a/west.yml +++ b/west.yml @@ -193,7 +193,7 @@ manifest: groups: - hal - name: hal_nordic - revision: 35bf3ca665122ddfe8c0c38cec8f19deef2ff62d + revision: pull/283/head path: modules/hal/nordic groups: - hal From 2eca2f42f773309e0736608bb0e3702f66805862 Mon Sep 17 00:00:00 2001 From: Gerard Marull-Paretas Date: Wed, 12 Mar 2025 15:12:32 +0100 Subject: [PATCH 2/5] drivers: i2c: nrfx_twim: use standard instantiation Instead of shenanigans due to original nrfx design. nrfx no longer has internal state. Signed-off-by: Gerard Marull-Paretas --- drivers/i2c/Kconfig.nrfx | 18 +--- drivers/i2c/i2c_nrfx_twi_common.h | 7 +- drivers/i2c/i2c_nrfx_twim.c | 165 +++++++++-------------------- drivers/i2c/i2c_nrfx_twim_common.c | 28 ++--- drivers/i2c/i2c_nrfx_twim_common.h | 8 +- 5 files changed, 76 insertions(+), 150 deletions(-) diff --git a/drivers/i2c/Kconfig.nrfx b/drivers/i2c/Kconfig.nrfx index 2213175d5d60e..1184a5b2ab3f1 100644 --- a/drivers/i2c/Kconfig.nrfx +++ b/drivers/i2c/Kconfig.nrfx @@ -23,23 +23,7 @@ config I2C_NRFX_TWI config I2C_NRFX_TWIM def_bool y depends on DT_HAS_NORDIC_NRF_TWIM_ENABLED - select NRFX_TWIM0 if HAS_HW_NRF_TWIM0 - select NRFX_TWIM1 if HAS_HW_NRF_TWIM1 - select NRFX_TWIM2 if HAS_HW_NRF_TWIM2 - select NRFX_TWIM3 if HAS_HW_NRF_TWIM3 - select NRFX_TWIM20 if HAS_HW_NRF_TWIM20 - select NRFX_TWIM21 if HAS_HW_NRF_TWIM21 - select NRFX_TWIM22 if HAS_HW_NRF_TWIM22 - select NRFX_TWIM30 if HAS_HW_NRF_TWIM30 - select NRFX_TWIM120 if HAS_HW_NRF_TWIM120 - select NRFX_TWIM130 if HAS_HW_NRF_TWIM130 - select NRFX_TWIM131 if HAS_HW_NRF_TWIM131 - select NRFX_TWIM132 if HAS_HW_NRF_TWIM132 - select NRFX_TWIM133 if HAS_HW_NRF_TWIM133 - select NRFX_TWIM134 if HAS_HW_NRF_TWIM134 - select NRFX_TWIM135 if HAS_HW_NRF_TWIM135 - select NRFX_TWIM136 if HAS_HW_NRF_TWIM136 - select NRFX_TWIM137 if HAS_HW_NRF_TWIM137 + select NRFX_TWIM config I2C_NRFX_TRANSFER_TIMEOUT int "Transfer timeout [ms]" diff --git a/drivers/i2c/i2c_nrfx_twi_common.h b/drivers/i2c/i2c_nrfx_twi_common.h index a3e9847bab5bd..6db162d7203ee 100644 --- a/drivers/i2c/i2c_nrfx_twi_common.h +++ b/drivers/i2c/i2c_nrfx_twi_common.h @@ -20,10 +20,9 @@ extern "C" { : bitrate == 250000 ? NRF_TWI_FREQ_250K \ : bitrate == I2C_BITRATE_FAST ? NRF_TWI_FREQ_400K \ : I2C_NRFX_TWI_INVALID_FREQUENCY) -#define I2C(idx) DT_NODELABEL(i2c##idx) -#define I2C_FREQUENCY(idx) \ - I2C_NRFX_TWI_FREQUENCY(DT_PROP_OR(I2C(idx), clock_frequency, \ - I2C_BITRATE_STANDARD)) +#define I2C_FREQUENCY(inst) \ + I2C_NRFX_TWI_FREQUENCY(DT_INST_PROP_OR(inst, clock_frequency, \ + I2C_BITRATE_STANDARD)) struct i2c_nrfx_twi_common_data { uint32_t dev_config; diff --git a/drivers/i2c/i2c_nrfx_twim.c b/drivers/i2c/i2c_nrfx_twim.c index 6be4b1c1050a7..17601ac6aaee8 100644 --- a/drivers/i2c/i2c_nrfx_twim.c +++ b/drivers/i2c/i2c_nrfx_twim.c @@ -4,6 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ +#define DT_DRV_COMPAT nordic_nrf_twim + #include #include #include @@ -27,12 +29,6 @@ LOG_MODULE_REGISTER(i2c_nrfx_twim, CONFIG_I2C_LOG_LEVEL); #define I2C_TRANSFER_TIMEOUT_MSEC K_FOREVER #endif -struct i2c_nrfx_twim_data { - struct k_sem transfer_sync; - struct k_sem completion_sync; - volatile nrfx_err_t res; -}; - static int i2c_nrfx_twim_transfer(const struct device *dev, struct i2c_msg *msgs, uint8_t num_msgs, uint16_t addr) @@ -59,7 +55,7 @@ static int i2c_nrfx_twim_transfer(const struct device *dev, break; } - bool dma_accessible = nrf_dma_accessible_check(&dev_config->twim, msgs[i].buf); + bool dma_accessible = nrf_dma_accessible_check(&dev_data->twim, msgs[i].buf); /* This fragment needs to be merged with the next one if: * - it is not the last fragment @@ -213,132 +209,69 @@ static DEVICE_API(i2c, i2c_nrfx_twim_driver_api) = { .recover_bus = i2c_nrfx_twim_recover_bus, }; -#define CONCAT_BUF_SIZE(idx) \ - COND_CODE_1(DT_NODE_HAS_PROP(I2C(idx), zephyr_concat_buf_size), \ - (DT_PROP(I2C(idx), zephyr_concat_buf_size)), (0)) -#define FLASH_BUF_MAX_SIZE(idx) \ - COND_CODE_1(DT_NODE_HAS_PROP(I2C(idx), zephyr_flash_buf_max_size), \ - (DT_PROP(I2C(idx), zephyr_flash_buf_max_size)), (0)) +#define CONCAT_BUF_SIZE(inst) \ + COND_CODE_1(DT_INST_HAS_PROP(inst, zephyr_concat_buf_size), \ + (DT_INST_PROP(inst, zephyr_concat_buf_size)), (0)) +#define FLASH_BUF_MAX_SIZE(inst) \ + COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, zephyr_flash_buf_max_size), \ + (DT_INST_PROP(inst, zephyr_flash_buf_max_size)), (0)) -#define USES_MSG_BUF(idx) \ - COND_CODE_0(CONCAT_BUF_SIZE(idx), \ - (COND_CODE_0(FLASH_BUF_MAX_SIZE(idx), (0), (1))), \ +#define USES_MSG_BUF(inst) \ + COND_CODE_0(CONCAT_BUF_SIZE(inst), \ + (COND_CODE_0(FLASH_BUF_MAX_SIZE(inst), (0), (1))), \ (1)) -#define MSG_BUF_SIZE(idx) MAX(CONCAT_BUF_SIZE(idx), FLASH_BUF_MAX_SIZE(idx)) +#define MSG_BUF_SIZE(inst) MAX(CONCAT_BUF_SIZE(inst), FLASH_BUF_MAX_SIZE(inst)) -#define I2C_NRFX_TWIM_DEVICE(idx) \ - NRF_DT_CHECK_NODE_HAS_PINCTRL_SLEEP(I2C(idx)); \ - BUILD_ASSERT(I2C_FREQUENCY(idx) != \ +#define I2C_NRFX_TWIM_DEVICE(inst) \ + static void irq_connect##inst(void); \ + NRF_DT_CHECK_NODE_HAS_PINCTRL_SLEEP(DT_DRV_INST(inst)); \ + BUILD_ASSERT(I2C_FREQUENCY(inst) != \ I2C_NRFX_TWIM_INVALID_FREQUENCY, \ - "Wrong I2C " #idx " frequency setting in dts"); \ - static void irq_connect##idx(void) \ - { \ - IRQ_CONNECT(DT_IRQN(I2C(idx)), DT_IRQ(I2C(idx), priority), \ - nrfx_isr, nrfx_twim_##idx##_irq_handler, 0); \ - } \ - IF_ENABLED(USES_MSG_BUF(idx), \ - (static uint8_t twim_##idx##_msg_buf[MSG_BUF_SIZE(idx)] \ - I2C_MEMORY_SECTION(idx);)) \ - static struct i2c_nrfx_twim_data twim_##idx##_data; \ - PINCTRL_DT_DEFINE(I2C(idx)); \ + "Wrong I2C " #inst" frequency setting in dts"); \ + IF_ENABLED(USES_MSG_BUF(inst), \ + (static uint8_t twim_##inst##_msg_buf[MSG_BUF_SIZE(inst)] \ + I2C_MEMORY_SECTION(inst);)) \ + static struct i2c_nrfx_twim_data twim_##inst##_data = { \ + .twim = NRFX_TWIM_INSTANCE(DT_INST_REG_ADDR(inst)), \ + }; \ + PINCTRL_DT_INST_DEFINE(inst); \ static const \ - struct i2c_nrfx_twim_common_config twim_##idx##z_config = { \ - .twim = NRFX_TWIM_INSTANCE(idx), \ + struct i2c_nrfx_twim_common_config twim_##inst##z_config = { \ .twim_config = { \ .skip_gpio_cfg = true, \ .skip_psel_cfg = true, \ - .frequency = I2C_FREQUENCY(idx), \ + .frequency = I2C_FREQUENCY(inst), \ }, \ .event_handler = event_handler, \ - .msg_buf_size = MSG_BUF_SIZE(idx), \ - .irq_connect = irq_connect##idx, \ - .pcfg = PINCTRL_DT_DEV_CONFIG_GET(I2C(idx)), \ - IF_ENABLED(USES_MSG_BUF(idx), \ - (.msg_buf = twim_##idx##_msg_buf,)) \ + .msg_buf_size = MSG_BUF_SIZE(inst), \ + .irq_connect = irq_connect##inst, \ + .pcfg = PINCTRL_DT_INST_DEV_CONFIG_GET(inst), \ + IF_ENABLED(USES_MSG_BUF(inst), \ + (.msg_buf = twim_##inst##_msg_buf,)) \ .max_transfer_size = BIT_MASK( \ - DT_PROP(I2C(idx), easydma_maxcnt_bits)), \ + DT_INST_PROP(inst, easydma_maxcnt_bits)), \ }; \ - PM_DEVICE_DT_DEFINE(I2C(idx), twim_nrfx_pm_action, \ - PM_DEVICE_ISR_SAFE); \ - I2C_DEVICE_DT_DEFINE(I2C(idx), \ + static void irq_connect##inst(void) \ + { \ + IRQ_CONNECT(DT_INST_IRQN(inst), DT_INST_IRQ(inst, priority), \ + nrfx_twim_irq_handler, \ + &twim_##inst##_data.twim, 0); \ + } \ + PM_DEVICE_DT_INST_DEFINE(int, twim_nrfx_pm_action, \ + PM_DEVICE_ISR_SAFE); \ + I2C_DEVICE_DT_INST_DEFINE(inst, \ i2c_nrfx_twim_init, \ - PM_DEVICE_DT_GET(I2C(idx)), \ - &twim_##idx##_data, \ - &twim_##idx##z_config, \ + PM_DEVICE_DT_INST_GET(inst), \ + &twim_##inst##_data, \ + &twim_##inst##z_config, \ POST_KERNEL, \ CONFIG_I2C_INIT_PRIORITY, \ &i2c_nrfx_twim_driver_api) -#define I2C_MEMORY_SECTION(idx) \ - COND_CODE_1(I2C_HAS_PROP(idx, memory_regions), \ +#define I2C_MEMORY_SECTION(inst) \ + COND_CODE_1(DT_INST_HAS_PROP(inst, memory_regions), \ (__attribute__((__section__(LINKER_DT_NODE_REGION_NAME( \ - DT_PHANDLE(I2C(idx), memory_regions)))))), \ + DT_INST_PHANDLE(inst, memory_regions)))))), \ ()) -#ifdef CONFIG_HAS_HW_NRF_TWIM0 -I2C_NRFX_TWIM_DEVICE(0); -#endif - -#ifdef CONFIG_HAS_HW_NRF_TWIM1 -I2C_NRFX_TWIM_DEVICE(1); -#endif - -#ifdef CONFIG_HAS_HW_NRF_TWIM2 -I2C_NRFX_TWIM_DEVICE(2); -#endif - -#ifdef CONFIG_HAS_HW_NRF_TWIM3 -I2C_NRFX_TWIM_DEVICE(3); -#endif - -#ifdef CONFIG_HAS_HW_NRF_TWIM20 -I2C_NRFX_TWIM_DEVICE(20); -#endif - -#ifdef CONFIG_HAS_HW_NRF_TWIM21 -I2C_NRFX_TWIM_DEVICE(21); -#endif - -#ifdef CONFIG_HAS_HW_NRF_TWIM22 -I2C_NRFX_TWIM_DEVICE(22); -#endif - -#ifdef CONFIG_HAS_HW_NRF_TWIM30 -I2C_NRFX_TWIM_DEVICE(30); -#endif - -#ifdef CONFIG_HAS_HW_NRF_TWIM120 -I2C_NRFX_TWIM_DEVICE(120); -#endif - -#ifdef CONFIG_HAS_HW_NRF_TWIM130 -I2C_NRFX_TWIM_DEVICE(130); -#endif - -#ifdef CONFIG_HAS_HW_NRF_TWIM131 -I2C_NRFX_TWIM_DEVICE(131); -#endif - -#ifdef CONFIG_HAS_HW_NRF_TWIM132 -I2C_NRFX_TWIM_DEVICE(132); -#endif - -#ifdef CONFIG_HAS_HW_NRF_TWIM133 -I2C_NRFX_TWIM_DEVICE(133); -#endif - -#ifdef CONFIG_HAS_HW_NRF_TWIM134 -I2C_NRFX_TWIM_DEVICE(134); -#endif - -#ifdef CONFIG_HAS_HW_NRF_TWIM135 -I2C_NRFX_TWIM_DEVICE(135); -#endif - -#ifdef CONFIG_HAS_HW_NRF_TWIM136 -I2C_NRFX_TWIM_DEVICE(136); -#endif - -#ifdef CONFIG_HAS_HW_NRF_TWIM137 -I2C_NRFX_TWIM_DEVICE(137); -#endif +DT_INST_FOREACH_STATUS_OKAY(I2C_NRFX_TWIM_DEVICE) diff --git a/drivers/i2c/i2c_nrfx_twim_common.c b/drivers/i2c/i2c_nrfx_twim_common.c index 1539d7c90ddd3..c33750e021e42 100644 --- a/drivers/i2c/i2c_nrfx_twim_common.c +++ b/drivers/i2c/i2c_nrfx_twim_common.c @@ -17,18 +17,19 @@ LOG_MODULE_DECLARE(i2c_nrfx_twim); int i2c_nrfx_twim_recover_bus(const struct device *dev) { const struct i2c_nrfx_twim_common_config *config = dev->config; + struct i2c_nrfx_twim_data *data = dev->data; enum pm_device_state state; uint32_t scl_pin; uint32_t sda_pin; nrfx_err_t err; - scl_pin = nrf_twim_scl_pin_get(config->twim.p_twim); - sda_pin = nrf_twim_sda_pin_get(config->twim.p_twim); + scl_pin = nrf_twim_scl_pin_get(data->twim.p_twim); + sda_pin = nrf_twim_sda_pin_get(data->twim.p_twim); /* disable peripheral if active (required to release SCL/SDA lines) */ (void)pm_device_state_get(dev, &state); if (state == PM_DEVICE_STATE_ACTIVE) { - nrfx_twim_disable(&config->twim); + nrfx_twim_disable(&data->twim); } err = nrfx_twim_bus_recover(scl_pin, sda_pin); @@ -36,7 +37,7 @@ int i2c_nrfx_twim_recover_bus(const struct device *dev) /* restore peripheral if it was active before */ if (state == PM_DEVICE_STATE_ACTIVE) { (void)pinctrl_apply_state(config->pcfg, PINCTRL_STATE_DEFAULT); - nrfx_twim_enable(&config->twim); + nrfx_twim_enable(&data->twim); } return (err == NRFX_SUCCESS ? 0 : -EBUSY); @@ -44,7 +45,7 @@ int i2c_nrfx_twim_recover_bus(const struct device *dev) int i2c_nrfx_twim_configure(const struct device *dev, uint32_t i2c_config) { - const struct i2c_nrfx_twim_common_config *config = dev->config; + struct i2c_nrfx_twim_data *data = dev->data; if (I2C_ADDR_10_BITS & i2c_config) { return -EINVAL; @@ -52,14 +53,14 @@ int i2c_nrfx_twim_configure(const struct device *dev, uint32_t i2c_config) switch (I2C_SPEED_GET(i2c_config)) { case I2C_SPEED_STANDARD: - nrf_twim_frequency_set(config->twim.p_twim, NRF_TWIM_FREQ_100K); + nrf_twim_frequency_set(data->twim.p_twim, NRF_TWIM_FREQ_100K); break; case I2C_SPEED_FAST: - nrf_twim_frequency_set(config->twim.p_twim, NRF_TWIM_FREQ_400K); + nrf_twim_frequency_set(data->twim.p_twim, NRF_TWIM_FREQ_400K); break; #if NRF_TWIM_HAS_1000_KHZ_FREQ case I2C_SPEED_FAST_PLUS: - nrf_twim_frequency_set(config->twim.p_twim, NRF_TWIM_FREQ_1000K); + nrf_twim_frequency_set(data->twim.p_twim, NRF_TWIM_FREQ_1000K); break; #endif default: @@ -74,6 +75,7 @@ int i2c_nrfx_twim_msg_transfer(const struct device *dev, uint8_t flags, uint8_t size_t buf_len, uint16_t i2c_addr) { const struct i2c_nrfx_twim_common_config *config = dev->config; + struct i2c_nrfx_twim_data *data = dev->data; nrfx_twim_xfer_desc_t cur_xfer = { .address = i2c_addr, .type = (flags & I2C_MSG_READ) ? NRFX_TWIM_XFER_RX : NRFX_TWIM_XFER_TX, @@ -90,7 +92,7 @@ int i2c_nrfx_twim_msg_transfer(const struct device *dev, uint8_t flags, uint8_t return -ENOSPC; } - res = nrfx_twim_xfer(&config->twim, &cur_xfer, + res = nrfx_twim_xfer(&data->twim, &cur_xfer, (flags & I2C_MSG_STOP) ? 0 : NRFX_TWIM_FLAG_TX_NO_STOP); if (res != NRFX_SUCCESS) { if (res == NRFX_ERROR_BUSY) { @@ -105,14 +107,15 @@ int i2c_nrfx_twim_msg_transfer(const struct device *dev, uint8_t flags, uint8_t int twim_nrfx_pm_action(const struct device *dev, enum pm_device_action action) { const struct i2c_nrfx_twim_common_config *config = dev->config; + struct i2c_nrfx_twim_data *data = dev->data; switch (action) { case PM_DEVICE_ACTION_RESUME: (void)pinctrl_apply_state(config->pcfg, PINCTRL_STATE_DEFAULT); - nrfx_twim_enable(&config->twim); + nrfx_twim_enable(&data->twim); break; case PM_DEVICE_ACTION_SUSPEND: - nrfx_twim_disable(&config->twim); + nrfx_twim_disable(&data->twim); (void)pinctrl_apply_state(config->pcfg, PINCTRL_STATE_SLEEP); break; default: @@ -125,12 +128,13 @@ int twim_nrfx_pm_action(const struct device *dev, enum pm_device_action action) int i2c_nrfx_twim_common_init(const struct device *dev) { const struct i2c_nrfx_twim_common_config *config = dev->config; + struct i2c_nrfx_twim_data *data = dev->data; config->irq_connect(); (void)pinctrl_apply_state(config->pcfg, PINCTRL_STATE_SLEEP); - if (nrfx_twim_init(&config->twim, &config->twim_config, config->event_handler, + if (nrfx_twim_init(&data->twim, &config->twim_config, config->event_handler, (void *)dev) != NRFX_SUCCESS) { LOG_ERR("Failed to initialize device: %s", dev->name); return -EIO; diff --git a/drivers/i2c/i2c_nrfx_twim_common.h b/drivers/i2c/i2c_nrfx_twim_common.h index ba7fa72f01984..db3dbd0f26416 100644 --- a/drivers/i2c/i2c_nrfx_twim_common.h +++ b/drivers/i2c/i2c_nrfx_twim_common.h @@ -31,8 +31,14 @@ extern "C" { #define I2C_FREQUENCY(idx) I2C_NRFX_TWIM_FREQUENCY(DT_PROP_OR(I2C(idx), clock_frequency, \ I2C_BITRATE_STANDARD)) -struct i2c_nrfx_twim_common_config { +struct i2c_nrfx_twim_data { nrfx_twim_t twim; + struct k_sem transfer_sync; + struct k_sem completion_sync; + volatile nrfx_err_t res; +}; + +struct i2c_nrfx_twim_common_config { nrfx_twim_config_t twim_config; nrfx_twim_evt_handler_t event_handler; uint16_t msg_buf_size; From bc39e4ba7582aa22a19cb53eb6c1be4a539f996b Mon Sep 17 00:00:00 2001 From: Gerard Marull-Paretas Date: Wed, 12 Mar 2025 15:14:24 +0100 Subject: [PATCH 3/5] modules: hal_nordic: remove unnecessary TWIM instance options It is no longer needed. Signed-off-by: Gerard Marull-Paretas --- modules/hal_nordic/nrfx/Kconfig | 85 -------------------------- modules/hal_nordic/nrfx/nrfx_kconfig.h | 51 ---------------- 2 files changed, 136 deletions(-) diff --git a/modules/hal_nordic/nrfx/Kconfig b/modules/hal_nordic/nrfx/Kconfig index da6ce994cc42d..66a957deedc00 100644 --- a/modules/hal_nordic/nrfx/Kconfig +++ b/modules/hal_nordic/nrfx/Kconfig @@ -842,91 +842,6 @@ config NRFX_TWI1 config NRFX_TWIM bool -config NRFX_TWIM0 - bool "TWIM0 driver instance" - depends on $(dt_nodelabel_exists,i2c0) && !SOC_SERIES_NRF51X - select NRFX_TWIM - -config NRFX_TWIM1 - bool "TWIM1 driver instance" - depends on $(dt_nodelabel_exists,i2c1) && !SOC_SERIES_NRF51X - select NRFX_TWIM - -config NRFX_TWIM2 - bool "TWIM2 driver instance" - depends on $(dt_nodelabel_exists,i2c2) - select NRFX_TWIM - -config NRFX_TWIM3 - bool "TWIM3 driver instance" - depends on $(dt_nodelabel_exists,i2c3) - select NRFX_TWIM - -config NRFX_TWIM20 - bool "TWIM20 driver instance" - depends on $(dt_nodelabel_exists,i2c20) - select NRFX_TWIM - -config NRFX_TWIM21 - bool "TWIM21 driver instance" - depends on $(dt_nodelabel_exists,i2c21) - select NRFX_TWIM - -config NRFX_TWIM22 - bool "TWIM22 driver instance" - depends on $(dt_nodelabel_exists,i2c22) - select NRFX_TWIM - -config NRFX_TWIM30 - bool "TWIM30 driver instance" - depends on $(dt_nodelabel_exists,i2c30) - select NRFX_TWIM - -config NRFX_TWIM120 - bool "TWIM120 driver instance" - depends on $(dt_nodelabel_exists,i2c120) - select NRFX_TWIM - -config NRFX_TWIM130 - bool "TWIM130 driver instance" - depends on $(dt_nodelabel_exists,i2c130) - select NRFX_TWIM - -config NRFX_TWIM131 - bool "TWIM131 driver instance" - depends on $(dt_nodelabel_exists,i2c131) - select NRFX_TWIM - -config NRFX_TWIM132 - bool "TWIM132 driver instance" - depends on $(dt_nodelabel_exists,i2c132) - select NRFX_TWIM - -config NRFX_TWIM133 - bool "TWIM133 driver instance" - depends on $(dt_nodelabel_exists,i2c133) - select NRFX_TWIM - -config NRFX_TWIM134 - bool "TWIM134 driver instance" - depends on $(dt_nodelabel_exists,i2c134) - select NRFX_TWIM - -config NRFX_TWIM135 - bool "TWIM135 driver instance" - depends on $(dt_nodelabel_exists,i2c135) - select NRFX_TWIM - -config NRFX_TWIM136 - bool "TWIM136 driver instance" - depends on $(dt_nodelabel_exists,i2c136) - select NRFX_TWIM - -config NRFX_TWIM137 - bool "TWIM137 driver instance" - depends on $(dt_nodelabel_exists,i2c137) - select NRFX_TWIM - config NRFX_TWIS bool diff --git a/modules/hal_nordic/nrfx/nrfx_kconfig.h b/modules/hal_nordic/nrfx/nrfx_kconfig.h index d36b3617b077e..bf84a3c4cefad 100644 --- a/modules/hal_nordic/nrfx/nrfx_kconfig.h +++ b/modules/hal_nordic/nrfx/nrfx_kconfig.h @@ -725,57 +725,6 @@ #ifdef CONFIG_NRFX_TWIM_LOG #define NRFX_TWIM_CONFIG_LOG_ENABLED 1 #endif -#ifdef CONFIG_NRFX_TWIM0 -#define NRFX_TWIM0_ENABLED 1 -#endif -#ifdef CONFIG_NRFX_TWIM1 -#define NRFX_TWIM1_ENABLED 1 -#endif -#ifdef CONFIG_NRFX_TWIM2 -#define NRFX_TWIM2_ENABLED 1 -#endif -#ifdef CONFIG_NRFX_TWIM3 -#define NRFX_TWIM3_ENABLED 1 -#endif -#ifdef CONFIG_NRFX_TWIM20 -#define NRFX_TWIM20_ENABLED 1 -#endif -#ifdef CONFIG_NRFX_TWIM21 -#define NRFX_TWIM21_ENABLED 1 -#endif -#ifdef CONFIG_NRFX_TWIM22 -#define NRFX_TWIM22_ENABLED 1 -#endif -#ifdef CONFIG_NRFX_TWIM30 -#define NRFX_TWIM30_ENABLED 1 -#endif -#ifdef CONFIG_NRFX_TWIM120 -#define NRFX_TWIM120_ENABLED 1 -#endif -#ifdef CONFIG_NRFX_TWIM130 -#define NRFX_TWIM130_ENABLED 1 -#endif -#ifdef CONFIG_NRFX_TWIM131 -#define NRFX_TWIM131_ENABLED 1 -#endif -#ifdef CONFIG_NRFX_TWIM132 -#define NRFX_TWIM132_ENABLED 1 -#endif -#ifdef CONFIG_NRFX_TWIM133 -#define NRFX_TWIM133_ENABLED 1 -#endif -#ifdef CONFIG_NRFX_TWIM134 -#define NRFX_TWIM134_ENABLED 1 -#endif -#ifdef CONFIG_NRFX_TWIM135 -#define NRFX_TWIM135_ENABLED 1 -#endif -#ifdef CONFIG_NRFX_TWIM136 -#define NRFX_TWIM136_ENABLED 1 -#endif -#ifdef CONFIG_NRFX_TWIM137 -#define NRFX_TWIM137_ENABLED 1 -#endif #ifdef CONFIG_NRFX_TWIS #define NRFX_TWIS_ENABLED 1 From 1c36d58865ebe4fdca8767bb5a6fae5c7bf83135 Mon Sep 17 00:00:00 2001 From: Gerard Marull-Paretas Date: Wed, 12 Mar 2025 15:14:54 +0100 Subject: [PATCH 4/5] soc: nordic: remove HAS_HW_NRF_TWI{N} No longer needed. Signed-off-by: Gerard Marull-Paretas --- soc/nordic/common/Kconfig.peripherals | 51 --------------------------- 1 file changed, 51 deletions(-) diff --git a/soc/nordic/common/Kconfig.peripherals b/soc/nordic/common/Kconfig.peripherals index 8ba97b225b93d..b6ba458d26399 100644 --- a/soc/nordic/common/Kconfig.peripherals +++ b/soc/nordic/common/Kconfig.peripherals @@ -471,57 +471,6 @@ config HAS_HW_NRF_TWI0 config HAS_HW_NRF_TWI1 def_bool $(dt_nodelabel_enabled_with_compat,i2c1,$(DT_COMPAT_NORDIC_NRF_TWI)) -config HAS_HW_NRF_TWIM0 - def_bool $(dt_nodelabel_enabled_with_compat,i2c0,$(DT_COMPAT_NORDIC_NRF_TWIM)) - -config HAS_HW_NRF_TWIM1 - def_bool $(dt_nodelabel_enabled_with_compat,i2c1,$(DT_COMPAT_NORDIC_NRF_TWIM)) - -config HAS_HW_NRF_TWIM2 - def_bool $(dt_nodelabel_enabled_with_compat,i2c2,$(DT_COMPAT_NORDIC_NRF_TWIM)) - -config HAS_HW_NRF_TWIM3 - def_bool $(dt_nodelabel_enabled_with_compat,i2c3,$(DT_COMPAT_NORDIC_NRF_TWIM)) - -config HAS_HW_NRF_TWIM20 - def_bool $(dt_nodelabel_enabled_with_compat,i2c20,$(DT_COMPAT_NORDIC_NRF_TWIM)) - -config HAS_HW_NRF_TWIM21 - def_bool $(dt_nodelabel_enabled_with_compat,i2c21,$(DT_COMPAT_NORDIC_NRF_TWIM)) - -config HAS_HW_NRF_TWIM22 - def_bool $(dt_nodelabel_enabled_with_compat,i2c22,$(DT_COMPAT_NORDIC_NRF_TWIM)) - -config HAS_HW_NRF_TWIM30 - def_bool $(dt_nodelabel_enabled_with_compat,i2c30,$(DT_COMPAT_NORDIC_NRF_TWIM)) - -config HAS_HW_NRF_TWIM120 - def_bool $(dt_nodelabel_enabled_with_compat,i2c120,$(DT_COMPAT_NORDIC_NRF_TWIM)) - -config HAS_HW_NRF_TWIM130 - def_bool $(dt_nodelabel_enabled_with_compat,i2c130,$(DT_COMPAT_NORDIC_NRF_TWIM)) - -config HAS_HW_NRF_TWIM131 - def_bool $(dt_nodelabel_enabled_with_compat,i2c131,$(DT_COMPAT_NORDIC_NRF_TWIM)) - -config HAS_HW_NRF_TWIM132 - def_bool $(dt_nodelabel_enabled_with_compat,i2c132,$(DT_COMPAT_NORDIC_NRF_TWIM)) - -config HAS_HW_NRF_TWIM133 - def_bool $(dt_nodelabel_enabled_with_compat,i2c133,$(DT_COMPAT_NORDIC_NRF_TWIM)) - -config HAS_HW_NRF_TWIM134 - def_bool $(dt_nodelabel_enabled_with_compat,i2c134,$(DT_COMPAT_NORDIC_NRF_TWIM)) - -config HAS_HW_NRF_TWIM135 - def_bool $(dt_nodelabel_enabled_with_compat,i2c135,$(DT_COMPAT_NORDIC_NRF_TWIM)) - -config HAS_HW_NRF_TWIM136 - def_bool $(dt_nodelabel_enabled_with_compat,i2c136,$(DT_COMPAT_NORDIC_NRF_TWIM)) - -config HAS_HW_NRF_TWIM137 - def_bool $(dt_nodelabel_enabled_with_compat,i2c137,$(DT_COMPAT_NORDIC_NRF_TWIM)) - config HAS_HW_NRF_TWIS0 def_bool $(dt_nodelabel_enabled_with_compat,i2c0,$(DT_COMPAT_NORDIC_NRF_TWIS)) From 95c905ac47c72bb519ec26e1d27dd816caf432ea Mon Sep 17 00:00:00 2001 From: Gerard Marull-Paretas Date: Wed, 12 Mar 2025 15:13:47 +0100 Subject: [PATCH 5/5] boards: nrf52840dk: use TWIM Instead of TWI. Just for testing. Signed-off-by: Gerard Marull-Paretas --- boards/nordic/nrf52840dk/nrf52840dk_nrf52840.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boards/nordic/nrf52840dk/nrf52840dk_nrf52840.dts b/boards/nordic/nrf52840dk/nrf52840dk_nrf52840.dts index 03a74b760020d..42d4f38a9be54 100644 --- a/boards/nordic/nrf52840dk/nrf52840dk_nrf52840.dts +++ b/boards/nordic/nrf52840dk/nrf52840dk_nrf52840.dts @@ -185,7 +185,7 @@ arduino_serial: &uart1 { }; arduino_i2c: &i2c0 { - compatible = "nordic,nrf-twi"; + compatible = "nordic,nrf-twim"; status = "okay"; pinctrl-0 = <&i2c0_default>; pinctrl-1 = <&i2c0_sleep>;