From 88ca215eed5993dc5dab2ab7675cf91021f62ee2 Mon Sep 17 00:00:00 2001 From: Tom Burdick Date: Mon, 23 May 2022 12:15:02 -0500 Subject: [PATCH] i2c: Update API terminology Updates the API and types to match updated I2C terminology. Replaces master with controller and slave with target. Updates all drivers to match the changed macros, types, and API signatures. Signed-off-by: Tom Burdick --- CODEOWNERS | 2 +- doc/develop/api/overview.rst | 4 +- doc/hardware/peripherals/i2c.rst | 6 + doc/hardware/peripherals/i2c_eeprom_slave.rst | 12 - .../peripherals/i2c_eeprom_target.rst | 12 + doc/hardware/peripherals/index.rst | 2 +- drivers/crypto/crypto_ataes132a.c | 2 +- drivers/i2c/CMakeLists.txt | 2 +- drivers/i2c/Kconfig | 2 +- drivers/i2c/Kconfig.stm32 | 6 +- drivers/i2c/i2c_b91.c | 4 +- drivers/i2c/i2c_cc13xx_cc26xx.c | 4 +- drivers/i2c/i2c_cc32xx.c | 4 +- drivers/i2c/i2c_dw.c | 32 +-- drivers/i2c/i2c_dw.h | 2 +- drivers/i2c/i2c_emul.c | 2 +- drivers/i2c/i2c_esp32.c | 4 +- drivers/i2c/i2c_gd32.c | 2 +- drivers/i2c/i2c_gecko.c | 4 +- drivers/i2c/i2c_gpio.c | 2 +- drivers/i2c/i2c_handlers.c | 12 +- drivers/i2c/i2c_imx.c | 4 +- drivers/i2c/i2c_ite_enhance.c | 6 +- drivers/i2c/i2c_ite_it8xxx2.c | 6 +- drivers/i2c/i2c_ll_stm32.c | 8 +- drivers/i2c/i2c_ll_stm32.h | 12 +- drivers/i2c/i2c_ll_stm32_v1.c | 20 +- drivers/i2c/i2c_ll_stm32_v2.c | 24 +- drivers/i2c/i2c_lpc11u6x.c | 10 +- drivers/i2c/i2c_lpc11u6x.h | 2 +- drivers/i2c/i2c_mchp_xec.c | 24 +- drivers/i2c/i2c_mchp_xec_v2.c | 30 +-- drivers/i2c/i2c_mcux.c | 4 +- drivers/i2c/i2c_mcux_flexcomm.c | 24 +- drivers/i2c/i2c_mcux_lpi2c.c | 4 +- drivers/i2c/i2c_nios2.c | 4 +- drivers/i2c/i2c_npcx_port.c | 6 +- drivers/i2c/i2c_rcar.c | 4 +- drivers/i2c/i2c_rv32m1_lpi2c.c | 4 +- drivers/i2c/i2c_sam0.c | 2 +- drivers/i2c/i2c_sam4l_twim.c | 4 +- drivers/i2c/i2c_sam_twi.c | 4 +- drivers/i2c/i2c_sam_twihs.c | 4 +- drivers/i2c/i2c_sifive.c | 4 +- drivers/i2c/slave/CMakeLists.txt | 3 - drivers/i2c/slave/Kconfig | 24 -- drivers/i2c/slave/Kconfig.eeprom | 9 - drivers/i2c/slave/eeprom_slave.c | 221 ------------------ drivers/i2c/target/CMakeLists.txt | 3 + drivers/i2c/target/Kconfig | 24 ++ drivers/i2c/target/Kconfig.eeprom | 9 + drivers/i2c/target/eeprom_target.c | 221 ++++++++++++++++++ drivers/sensor/bmg160/bmg160.c | 2 +- drivers/sensor/hp206c/hp206c.c | 2 +- drivers/video/ov2640.c | 2 +- include/zephyr/drivers/i2c.h | 119 +++++----- .../drivers/i2c/{slave => target}/eeprom.h | 16 +- .../altera_max10/i2c_master/src/i2c_master.c | 2 +- .../mec15xxevb_assy6853/i2c_api/src/main.c | 2 +- tests/drivers/eeprom/src/main.c | 2 +- tests/drivers/i2c/i2c_api/src/test_i2c.c | 2 +- tests/drivers/i2c/i2c_slave_api/Kconfig | 7 - .../i2c/i2c_slave_api/boards/rpi_pico.conf | 2 - .../CMakeLists.txt | 0 tests/drivers/i2c/i2c_target_api/Kconfig | 7 + .../README.txt | 14 +- .../boards/mec1501modular_assy6885.overlay | 0 .../boards/nucleo_f091rc.conf | 0 .../boards/nucleo_f091rc.overlay | 0 .../boards/nucleo_g071rb.conf | 0 .../boards/nucleo_g071rb.overlay | 0 .../boards/nucleo_l476rg.conf | 0 .../boards/nucleo_l476rg.overlay | 0 .../i2c/i2c_target_api/boards/rpi_pico.conf | 2 + .../boards/rpi_pico.overlay | 0 .../boards/stm32f072b_disco.conf | 0 .../boards/stm32f072b_disco.overlay | 0 .../common/CMakeLists.txt | 0 .../common/Kconfig | 8 +- .../common/i2c_virtual.c | 44 ++-- .../prj.conf | 4 +- .../src/main.c | 26 +-- .../testcase.yaml | 2 +- 83 files changed, 560 insertions(+), 555 deletions(-) delete mode 100644 doc/hardware/peripherals/i2c_eeprom_slave.rst create mode 100644 doc/hardware/peripherals/i2c_eeprom_target.rst delete mode 100644 drivers/i2c/slave/CMakeLists.txt delete mode 100644 drivers/i2c/slave/Kconfig delete mode 100644 drivers/i2c/slave/Kconfig.eeprom delete mode 100644 drivers/i2c/slave/eeprom_slave.c create mode 100644 drivers/i2c/target/CMakeLists.txt create mode 100644 drivers/i2c/target/Kconfig create mode 100644 drivers/i2c/target/Kconfig.eeprom create mode 100644 drivers/i2c/target/eeprom_target.c rename include/zephyr/drivers/i2c/{slave => target}/eeprom.h (66%) delete mode 100644 tests/drivers/i2c/i2c_slave_api/Kconfig delete mode 100644 tests/drivers/i2c/i2c_slave_api/boards/rpi_pico.conf rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/CMakeLists.txt (100%) create mode 100644 tests/drivers/i2c/i2c_target_api/Kconfig rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/README.txt (76%) rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/boards/mec1501modular_assy6885.overlay (100%) rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/boards/nucleo_f091rc.conf (100%) rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/boards/nucleo_f091rc.overlay (100%) rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/boards/nucleo_g071rb.conf (100%) rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/boards/nucleo_g071rb.overlay (100%) rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/boards/nucleo_l476rg.conf (100%) rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/boards/nucleo_l476rg.overlay (100%) create mode 100644 tests/drivers/i2c/i2c_target_api/boards/rpi_pico.conf rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/boards/rpi_pico.overlay (100%) rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/boards/stm32f072b_disco.conf (100%) rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/boards/stm32f072b_disco.overlay (100%) rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/common/CMakeLists.txt (100%) rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/common/Kconfig (64%) rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/common/i2c_virtual.c (77%) rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/prj.conf (70%) rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/src/main.c (90%) rename tests/drivers/i2c/{i2c_slave_api => i2c_target_api}/testcase.yaml (87%) diff --git a/CODEOWNERS b/CODEOWNERS index 589d3c463c2..2611ed7757c 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -291,7 +291,7 @@ /drivers/i2c/i2c_shell.c @nashif /drivers/i2c/Kconfig.i2c_emul @sjg20 /drivers/i2c/Kconfig.it8xxx2 @GTLin08 -/drivers/i2c/slave/*eeprom* @henrikbrixandersen +/drivers/i2c/target/*eeprom* @henrikbrixandersen /drivers/i2c/Kconfig.test @mbolivar-nordic /drivers/i2c/i2c_test.c @mbolivar-nordic /drivers/i2c/*rcar* @aaillet diff --git a/doc/develop/api/overview.rst b/doc/develop/api/overview.rst index e1ad3266f8d..7d7d01b2918 100644 --- a/doc/develop/api/overview.rst +++ b/doc/develop/api/overview.rst @@ -152,7 +152,7 @@ current :ref:`stability level `. - 1.14 - 3.1 - * - :ref:`i2c_eeprom_slave_api` + * - :ref:`i2c_eeprom_target_api` - Stable - 1.13 - 1.13 @@ -162,7 +162,7 @@ current :ref:`stability level `. - 1.0 - 3.1 - * - :ref:`i2c-slave-api` + * - :ref:`i2c-target-api` - Experimental - 1.12 - 1.12 diff --git a/doc/hardware/peripherals/i2c.rst b/doc/hardware/peripherals/i2c.rst index 18c562d0f60..0a4af6f8b0b 100644 --- a/doc/hardware/peripherals/i2c.rst +++ b/doc/hardware/peripherals/i2c.rst @@ -6,6 +6,12 @@ I2C Overview ******** +.. note:: + + The terminology used in Zephyr I2C APIs follows that of the + `NXP I2C Bus Specification Rev 7.0 `_. These changed + from previous revisions as of its release October 1, 2021. + `I2C `_ (Inter-Integrated Circuit, pronounced "eye squared see") is a commonly-used two-signal shared peripheral interface bus. Many system-on-chip solutions provide controllers that communicate diff --git a/doc/hardware/peripherals/i2c_eeprom_slave.rst b/doc/hardware/peripherals/i2c_eeprom_slave.rst deleted file mode 100644 index af50c906d66..00000000000 --- a/doc/hardware/peripherals/i2c_eeprom_slave.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. _i2c_eeprom_slave_api: - -I2C EEPROM Slave -################ - -Overview -******** - -API Reference -************** - -.. doxygengroup:: i2c_eeprom_slave_api diff --git a/doc/hardware/peripherals/i2c_eeprom_target.rst b/doc/hardware/peripherals/i2c_eeprom_target.rst new file mode 100644 index 00000000000..cdb430a05f8 --- /dev/null +++ b/doc/hardware/peripherals/i2c_eeprom_target.rst @@ -0,0 +1,12 @@ +.. _i2c_eeprom_target_api: + +I2C EEPROM Target +################# + +Overview +******** + +API Reference +************** + +.. doxygengroup:: i2c_eeprom_target_api diff --git a/doc/hardware/peripherals/index.rst b/doc/hardware/peripherals/index.rst index 2226a3bf38c..4ca39fa0299 100644 --- a/doc/hardware/peripherals/index.rst +++ b/doc/hardware/peripherals/index.rst @@ -23,7 +23,7 @@ Peripherals gna.rst gpio.rst hwinfo.rst - i2c_eeprom_slave.rst + i2c_eeprom_target.rst i2c.rst ipm.rst kscan.rst diff --git a/drivers/crypto/crypto_ataes132a.c b/drivers/crypto/crypto_ataes132a.c index 325bf8dc94e..751721ebc0a 100644 --- a/drivers/crypto/crypto_ataes132a.c +++ b/drivers/crypto/crypto_ataes132a.c @@ -178,7 +178,7 @@ int ataes132a_init(const struct device *dev) return -EINVAL; } - i2c_cfg = I2C_MODE_MASTER | I2C_SPEED_SET(ATAES132A_BUS_SPEED); + i2c_cfg = I2C_MODE_CONTROLLER | I2C_SPEED_SET(ATAES132A_BUS_SPEED); i2c_configure(ataes132a->i2c, i2c_cfg); diff --git a/drivers/i2c/CMakeLists.txt b/drivers/i2c/CMakeLists.txt index 4349e0ef8a9..0d77a5a184a 100644 --- a/drivers/i2c/CMakeLists.txt +++ b/drivers/i2c/CMakeLists.txt @@ -52,4 +52,4 @@ zephyr_library_sources_ifdef(CONFIG_I2C_TEST i2c_test.c) zephyr_library_sources_ifdef(CONFIG_USERSPACE i2c_handlers.c) -add_subdirectory_ifdef(CONFIG_I2C_SLAVE slave) +add_subdirectory_ifdef(CONFIG_I2C_TARGET target) diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig index fbda5d4dc3d..ace9dde8bc8 100644 --- a/drivers/i2c/Kconfig +++ b/drivers/i2c/Kconfig @@ -34,7 +34,7 @@ source "drivers/i2c/Kconfig.b91" source "drivers/i2c/Kconfig.cc13xx_cc26xx" source "drivers/i2c/Kconfig.dw" source "drivers/i2c/Kconfig.esp32" -source "drivers/i2c/slave/Kconfig" +source "drivers/i2c/target/Kconfig" source "drivers/i2c/Kconfig.gpio" source "drivers/i2c/Kconfig.xec" source "drivers/i2c/Kconfig.nrfx" diff --git a/drivers/i2c/Kconfig.stm32 b/drivers/i2c/Kconfig.stm32 index 1bb27be667a..77b3afeda3e 100644 --- a/drivers/i2c/Kconfig.stm32 +++ b/drivers/i2c/Kconfig.stm32 @@ -17,7 +17,7 @@ config I2C_STM32_V1 bool default $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_I2C_V1)) select USE_STM32_LL_I2C - select I2C_STM32_INTERRUPT if I2C_SLAVE + select I2C_STM32_INTERRUPT if I2C_TARGET help Driver variant matching `st,stm32-i2c-v1` compatible. @@ -26,10 +26,10 @@ config I2C_STM32_V2 default $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_I2C_V2)) select USE_STM32_LL_I2C select USE_STM32_LL_RCC if SOC_SERIES_STM32F0X || SOC_SERIES_STM32F3X - select I2C_STM32_INTERRUPT if I2C_SLAVE + select I2C_STM32_INTERRUPT if I2C_TARGET help Driver variant matching `st,stm32-i2c-v2` compatible. - If I2C_SLAVE is enabled it selects I2C_STM32_INTERRUPT, since slave mode + If I2C_TARGET is enabled it selects I2C_STM32_INTERRUPT, since target mode is only supported by this driver with interrupts enabled. config I2C_STM32_INTERRUPT diff --git a/drivers/i2c/i2c_b91.c b/drivers/i2c/i2c_b91.c index 2623ce3b9f9..d140c534ced 100644 --- a/drivers/i2c/i2c_b91.c +++ b/drivers/i2c/i2c_b91.c @@ -41,7 +41,7 @@ static int i2c_b91_configure(const struct device *dev, uint32_t dev_config) } /* check I2C Master/Slave configuration */ - if (!(dev_config & I2C_MODE_MASTER)) { + if (!(dev_config & I2C_MODE_CONTROLLER)) { LOG_ERR("I2C slave is not implemented"); return -ENOTSUP; } @@ -124,7 +124,7 @@ static int i2c_b91_init(const struct device *dev) int status = 0; const struct i2c_b91_cfg *cfg = dev->config; struct i2c_b91_data *data = dev->data; - uint32_t dev_config = (I2C_MODE_MASTER | i2c_map_dt_bitrate(cfg->bitrate)); + uint32_t dev_config = (I2C_MODE_CONTROLLER | i2c_map_dt_bitrate(cfg->bitrate)); /* init mutex */ k_sem_init(&data->mutex, 1, 1); diff --git a/drivers/i2c/i2c_cc13xx_cc26xx.c b/drivers/i2c/i2c_cc13xx_cc26xx.c index 7f980bc763c..4184e9eea55 100644 --- a/drivers/i2c/i2c_cc13xx_cc26xx.c +++ b/drivers/i2c/i2c_cc13xx_cc26xx.c @@ -245,7 +245,7 @@ static int i2c_cc13xx_cc26xx_configure(const struct device *dev, } /* Support for slave mode has not been implemented */ - if (!(dev_config & I2C_MODE_MASTER)) { + if (!(dev_config & I2C_MODE_CONTROLLER)) { LOG_ERR("Slave mode is not supported"); return -EIO; } @@ -407,7 +407,7 @@ static int i2c_cc13xx_cc26xx_init(const struct device *dev) } cfg = i2c_map_dt_bitrate(DT_INST_PROP(0, clock_frequency)); - err = i2c_cc13xx_cc26xx_configure(dev, cfg | I2C_MODE_MASTER); + err = i2c_cc13xx_cc26xx_configure(dev, cfg | I2C_MODE_CONTROLLER); if (err) { LOG_ERR("Failed to configure"); return err; diff --git a/drivers/i2c/i2c_cc32xx.c b/drivers/i2c/i2c_cc32xx.c index b7df185597e..bcff6b42b3b 100644 --- a/drivers/i2c/i2c_cc32xx.c +++ b/drivers/i2c/i2c_cc32xx.c @@ -84,7 +84,7 @@ static int i2c_cc32xx_configure(const struct device *dev, uint32_t base = DEV_BASE(dev); uint32_t bitrate_id; - if (!(dev_config_raw & I2C_MODE_MASTER)) { + if (!(dev_config_raw & I2C_MODE_CONTROLLER)) { return -EINVAL; } @@ -347,7 +347,7 @@ static int i2c_cc32xx_init(const struct device *dev) /* Set to default configuration: */ bitrate_cfg = i2c_map_dt_bitrate(config->bitrate); - error = i2c_cc32xx_configure(dev, I2C_MODE_MASTER | bitrate_cfg); + error = i2c_cc32xx_configure(dev, I2C_MODE_CONTROLLER | bitrate_cfg); if (error) { return error; } diff --git a/drivers/i2c/i2c_dw.c b/drivers/i2c/i2c_dw.c index 93738ae1bdd..0da2ff5c600 100644 --- a/drivers/i2c/i2c_dw.c +++ b/drivers/i2c/i2c_dw.c @@ -191,7 +191,7 @@ static inline void i2c_dw_transfer_complete(const struct device *dev) k_sem_give(&dw->device_sync_sem); } -#ifdef CONFIG_I2C_SLAVE +#ifdef CONFIG_I2C_TARGET static inline uint8_t i2c_dw_read_byte_non_blocking(const struct device *dev); static inline void i2c_dw_write_byte_non_blocking(const struct device *dev, uint8_t data); static void i2c_dw_slave_read_clear_intr_bits(const struct device *dev); @@ -275,8 +275,8 @@ static void i2c_dw_isr(const struct device *port) } } else { -#ifdef CONFIG_I2C_SLAVE - const struct i2c_slave_callbacks *slave_cb = dw->slave_cfg->callbacks; +#ifdef CONFIG_I2C_TARGET + const struct i2c_target_callbacks *slave_cb = dw->slave_cfg->callbacks; uint32_t slave_activity = test_bit_status_activity(reg_base); uint8_t data; @@ -338,7 +338,7 @@ static int i2c_dw_setup(const struct device *dev, uint16_t slave_address) value = read_clr_intr(reg_base); /* Set master or slave mode - (initialization = slave) */ - if (I2C_MODE_MASTER & dw->app_config) { + if (I2C_MODE_CONTROLLER & dw->app_config) { /* * Make sure to set both the master_mode and slave_disable_bit * to both 0 or both 1 @@ -432,7 +432,7 @@ static int i2c_dw_setup(const struct device *dev, uint16_t slave_address) * bit in ic_tar register would control whether the DW_apb_i2c starts * its transfers in 7-bit or 10-bit addressing mode. */ - if (I2C_MODE_MASTER & dw->app_config) { + if (I2C_MODE_CONTROLLER & dw->app_config) { if (I2C_ADDR_10_BITS & dw->app_config) { ic_tar.bits.ic_10bitaddr_master = 1U; } else { @@ -654,12 +654,12 @@ static int i2c_dw_runtime_configure(const struct device *dev, uint32_t config) * currently. This "hack" forces us to always be configured for master * mode, until we can verify that Slave mode works correctly. */ - dw->app_config |= I2C_MODE_MASTER; + dw->app_config |= I2C_MODE_CONTROLLER; return rc; } -#ifdef CONFIG_I2C_SLAVE +#ifdef CONFIG_I2C_TARGET static inline uint8_t i2c_dw_read_byte_non_blocking(const struct device *dev) { uint32_t reg_base = get_regs(dev); @@ -735,7 +735,7 @@ static int i2c_dw_set_slave_mode(const struct device *dev, uint8_t addr) } static int i2c_dw_slave_register(const struct device *dev, - struct i2c_slave_config *cfg) + struct i2c_target_config *cfg) { struct i2c_dw_dev_config * const dw = dev->data; uint32_t reg_base = get_regs(dev); @@ -753,7 +753,7 @@ static int i2c_dw_slave_register(const struct device *dev, } static int i2c_dw_slave_unregister(const struct device *dev, - struct i2c_slave_config *cfg) + struct i2c_target_config *cfg) { struct i2c_dw_dev_config * const dw = dev->data; int ret; @@ -770,7 +770,7 @@ static void i2c_dw_slave_read_clear_intr_bits(const struct device *dev) union ic_interrupt_register intr_stat; uint32_t reg_base = get_regs(dev); - const struct i2c_slave_callbacks *slave_cb = dw->slave_cfg->callbacks; + const struct i2c_target_callbacks *slave_cb = dw->slave_cfg->callbacks; intr_stat.raw = read_intr_stat(reg_base); @@ -822,15 +822,15 @@ static void i2c_dw_slave_read_clear_intr_bits(const struct device *dev) dw->state = I2C_DW_STATE_READY; } } -#endif /* CONFIG_I2C_SLAVE */ +#endif /* CONFIG_I2C_TARGET */ static const struct i2c_driver_api funcs = { .configure = i2c_dw_runtime_configure, .transfer = i2c_dw_transfer, -#ifdef CONFIG_I2C_SLAVE - .slave_register = i2c_dw_slave_register, - .slave_unregister = i2c_dw_slave_unregister, -#endif /* CONFIG_I2C_SLAVE */ +#ifdef CONFIG_I2C_TARGET + .target_register = i2c_dw_slave_register, + .target_unregister = i2c_dw_slave_unregister, +#endif /* CONFIG_I2C_TARGET */ }; static int i2c_dw_initialize(const struct device *dev) @@ -892,7 +892,7 @@ static int i2c_dw_initialize(const struct device *dev) rom->config_func(dev); - dw->app_config = I2C_MODE_MASTER | i2c_map_dt_bitrate(rom->bitrate); + dw->app_config = I2C_MODE_CONTROLLER | i2c_map_dt_bitrate(rom->bitrate); if (i2c_dw_runtime_configure(dev, dw->app_config) != 0) { LOG_DBG("I2C: Cannot set default configuration"); diff --git a/drivers/i2c/i2c_dw.h b/drivers/i2c/i2c_dw.h index 90a3c028ec7..e36b0779148 100644 --- a/drivers/i2c/i2c_dw.h +++ b/drivers/i2c/i2c_dw.h @@ -119,7 +119,7 @@ struct i2c_dw_dev_config { uint8_t xfr_flags; bool support_hs_mode; - struct i2c_slave_config *slave_cfg; + struct i2c_target_config *slave_cfg; }; #define Z_REG_READ(__sz) sys_read##__sz diff --git a/drivers/i2c/i2c_emul.c b/drivers/i2c/i2c_emul.c index cc8d3c0fb53..51045711795 100644 --- a/drivers/i2c/i2c_emul.c +++ b/drivers/i2c/i2c_emul.c @@ -114,7 +114,7 @@ static int i2c_emul_init(const struct device *dev) rc = emul_init_for_bus_from_list(dev, list); /* Set config to an uninitialized state */ - data->config = (I2C_MODE_MASTER | i2c_map_dt_bitrate(data->bitrate)); + data->config = (I2C_MODE_CONTROLLER | i2c_map_dt_bitrate(data->bitrate)); return rc; } diff --git a/drivers/i2c/i2c_esp32.c b/drivers/i2c/i2c_esp32.c index d5a69fffab0..d68becd68cb 100644 --- a/drivers/i2c/i2c_esp32.c +++ b/drivers/i2c/i2c_esp32.c @@ -253,7 +253,7 @@ static int i2c_esp32_configure(const struct device *dev, uint32_t dev_config) const struct i2c_esp32_config *config = dev->config; struct i2c_esp32_data *data = (struct i2c_esp32_data *const)(dev)->data; - if (!(dev_config & I2C_MODE_MASTER)) { + if (!(dev_config & I2C_MODE_CONTROLLER)) { LOG_ERR("Only I2C Master mode supported."); return -ENOTSUP; } @@ -763,7 +763,7 @@ static int IRAM_ATTR i2c_esp32_init(const struct device *dev) }, \ .irq_source = ETS_I2C_EXT##idx##_INTR_SOURCE, \ .bitrate = I2C_FREQUENCY(idx), \ - .default_config = I2C_MODE_MASTER, \ + .default_config = I2C_MODE_CONTROLLER, \ }; \ I2C_DEVICE_DT_DEFINE(DT_NODELABEL(i2c##idx), \ i2c_esp32_init, \ diff --git a/drivers/i2c/i2c_gd32.c b/drivers/i2c/i2c_gd32.c index 36fbdf36d2f..aa704029980 100644 --- a/drivers/i2c/i2c_gd32.c +++ b/drivers/i2c/i2c_gd32.c @@ -686,7 +686,7 @@ static int i2c_gd32_init(const struct device *dev) bitrate_cfg = i2c_map_dt_bitrate(cfg->bitrate); - i2c_gd32_configure(dev, I2C_MODE_MASTER | bitrate_cfg); + i2c_gd32_configure(dev, I2C_MODE_CONTROLLER | bitrate_cfg); return 0; } diff --git a/drivers/i2c/i2c_gecko.c b/drivers/i2c/i2c_gecko.c index b7f03d5a38f..952082c4e4f 100644 --- a/drivers/i2c/i2c_gecko.c +++ b/drivers/i2c/i2c_gecko.c @@ -78,7 +78,7 @@ static int i2c_gecko_configure(const struct device *dev, I2C_Init_TypeDef i2cInit = I2C_INIT_DEFAULT; uint32_t baudrate; - if (!(I2C_MODE_MASTER & dev_config_raw)) { + if (!(I2C_MODE_CONTROLLER & dev_config_raw)) { return -EINVAL; } @@ -180,7 +180,7 @@ static int i2c_gecko_init(const struct device *dev) bitrate_cfg = i2c_map_dt_bitrate(config->bitrate); - error = i2c_gecko_configure(dev, I2C_MODE_MASTER | bitrate_cfg); + error = i2c_gecko_configure(dev, I2C_MODE_CONTROLLER | bitrate_cfg); if (error) { return error; } diff --git a/drivers/i2c/i2c_gpio.c b/drivers/i2c/i2c_gpio.c index 157212dc2b9..b1316693262 100644 --- a/drivers/i2c/i2c_gpio.c +++ b/drivers/i2c/i2c_gpio.c @@ -145,7 +145,7 @@ static int i2c_gpio_init(const struct device *dev) bitrate_cfg = i2c_map_dt_bitrate(config->bitrate); err = i2c_bitbang_configure(&context->bitbang, - I2C_MODE_MASTER | bitrate_cfg); + I2C_MODE_CONTROLLER | bitrate_cfg); if (err) { LOG_ERR("failed to configure I2C bitbang (err %d)", err); return err; diff --git a/drivers/i2c/i2c_handlers.c b/drivers/i2c/i2c_handlers.c index 124731f2ec6..fca385ee27b 100644 --- a/drivers/i2c/i2c_handlers.c +++ b/drivers/i2c/i2c_handlers.c @@ -71,19 +71,19 @@ static inline int z_vrfy_i2c_transfer(const struct device *dev, } #include -static inline int z_vrfy_i2c_slave_driver_register(const struct device *dev) +static inline int z_vrfy_i2c_target_driver_register(const struct device *dev) { Z_OOPS(Z_SYSCALL_OBJ(dev, K_OBJ_DRIVER_I2C)); - return z_impl_i2c_slave_driver_register(dev); + return z_impl_i2c_target_driver_register(dev); } -#include +#include -static inline int z_vrfy_i2c_slave_driver_unregister(const struct device *dev) +static inline int z_vrfy_i2c_target_driver_unregister(const struct device *dev) { Z_OOPS(Z_SYSCALL_OBJ(dev, K_OBJ_DRIVER_I2C)); - return z_impl_i2c_slave_driver_unregister(dev); + return z_impl_i2c_target_driver_unregister(dev); } -#include +#include static inline int z_vrfy_i2c_recover_bus(const struct device *dev) { diff --git a/drivers/i2c/i2c_imx.c b/drivers/i2c/i2c_imx.c index 457bd250d1b..6b9f1a9067d 100644 --- a/drivers/i2c/i2c_imx.c +++ b/drivers/i2c/i2c_imx.c @@ -128,7 +128,7 @@ static int i2c_imx_configure(const struct device *dev, struct i2c_master_transfer *transfer = &data->transfer; uint32_t baudrate; - if (!(I2C_MODE_MASTER & dev_config_raw)) { + if (!(I2C_MODE_CONTROLLER & dev_config_raw)) { return -EINVAL; } @@ -349,7 +349,7 @@ static int i2c_imx_init(const struct device *dev) bitrate_cfg = i2c_map_dt_bitrate(config->bitrate); - error = i2c_imx_configure(dev, I2C_MODE_MASTER | bitrate_cfg); + error = i2c_imx_configure(dev, I2C_MODE_CONTROLLER | bitrate_cfg); if (error) { return error; } diff --git a/drivers/i2c/i2c_ite_enhance.c b/drivers/i2c/i2c_ite_enhance.c index d8460049159..dc3ee178654 100644 --- a/drivers/i2c/i2c_ite_enhance.c +++ b/drivers/i2c/i2c_ite_enhance.c @@ -240,7 +240,7 @@ static int i2c_enhance_configure(const struct device *dev, const struct i2c_enhance_config *config = dev->config; struct i2c_enhance_data *const data = dev->data; - if (!(I2C_MODE_MASTER & dev_config_raw)) { + if (!(I2C_MODE_CONTROLLER & dev_config_raw)) { return -EINVAL; } @@ -276,7 +276,7 @@ static int i2c_enhance_get_config(const struct device *dev, uint32_t *dev_config return -ERANGE; } - *dev_config = (I2C_MODE_MASTER | speed); + *dev_config = (I2C_MODE_CONTROLLER | speed); return 0; } @@ -624,7 +624,7 @@ static int i2c_enhance_init(const struct device *dev) bitrate_cfg = I2C_SPEED_DT << I2C_SPEED_SHIFT; } - error = i2c_enhance_configure(dev, I2C_MODE_MASTER | bitrate_cfg); + error = i2c_enhance_configure(dev, I2C_MODE_CONTROLLER | bitrate_cfg); data->i2ccs = I2C_CH_NORMAL; if (error) { diff --git a/drivers/i2c/i2c_ite_it8xxx2.c b/drivers/i2c/i2c_ite_it8xxx2.c index b7d5d1ed5f9..4afd6c61cd3 100644 --- a/drivers/i2c/i2c_ite_it8xxx2.c +++ b/drivers/i2c/i2c_ite_it8xxx2.c @@ -212,7 +212,7 @@ static int i2c_it8xxx2_configure(const struct device *dev, struct i2c_it8xxx2_data *const data = dev->data; uint32_t freq_set; - if (!(I2C_MODE_MASTER & dev_config_raw)) { + if (!(I2C_MODE_CONTROLLER & dev_config_raw)) { return -EINVAL; } @@ -266,7 +266,7 @@ static int i2c_it8xxx2_get_config(const struct device *dev, return -ERANGE; } - *dev_config = (I2C_MODE_MASTER | speed); + *dev_config = (I2C_MODE_CONTROLLER | speed); return 0; } @@ -656,7 +656,7 @@ static int i2c_it8xxx2_init(const struct device *dev) bitrate_cfg = I2C_SPEED_DT << I2C_SPEED_SHIFT; } - error = i2c_it8xxx2_configure(dev, I2C_MODE_MASTER | bitrate_cfg); + error = i2c_it8xxx2_configure(dev, I2C_MODE_CONTROLLER | bitrate_cfg); data->i2ccs = I2C_CH_NORMAL; if (error) { diff --git a/drivers/i2c/i2c_ll_stm32.c b/drivers/i2c/i2c_ll_stm32.c index 8fd742bf587..9bb7b262d15 100644 --- a/drivers/i2c/i2c_ll_stm32.c +++ b/drivers/i2c/i2c_ll_stm32.c @@ -190,9 +190,9 @@ static int i2c_stm32_transfer(const struct device *dev, struct i2c_msg *msg, static const struct i2c_driver_api api_funcs = { .configure = i2c_stm32_runtime_configure, .transfer = i2c_stm32_transfer, -#if defined(CONFIG_I2C_SLAVE) - .slave_register = i2c_stm32_slave_register, - .slave_unregister = i2c_stm32_slave_unregister, +#if defined(CONFIG_I2C_TARGET) + .target_register = i2c_stm32_target_register, + .target_unregister = i2c_stm32_target_unregister, #endif }; @@ -271,7 +271,7 @@ static int i2c_stm32_init(const struct device *dev) bitrate_cfg = i2c_map_dt_bitrate(cfg->bitrate); - ret = i2c_stm32_runtime_configure(dev, I2C_MODE_MASTER | bitrate_cfg); + ret = i2c_stm32_runtime_configure(dev, I2C_MODE_CONTROLLER | bitrate_cfg); if (ret < 0) { LOG_ERR("i2c: failure initializing"); return ret; diff --git a/drivers/i2c/i2c_ll_stm32.h b/drivers/i2c/i2c_ll_stm32.h index 5ae96f4fa52..237e8f7c76f 100644 --- a/drivers/i2c/i2c_ll_stm32.h +++ b/drivers/i2c/i2c_ll_stm32.h @@ -61,9 +61,9 @@ struct i2c_stm32_data { unsigned int len; uint8_t *buf; } current; -#ifdef CONFIG_I2C_SLAVE +#ifdef CONFIG_I2C_TARGET bool master_active; - struct i2c_slave_config *slave_cfg; + struct i2c_target_config *slave_cfg; bool slave_attached; #endif }; @@ -83,11 +83,9 @@ void stm32_i2c_error_isr(void *arg); void stm32_i2c_combined_isr(void *arg); #endif -#ifdef CONFIG_I2C_SLAVE -int i2c_stm32_slave_register(const struct device *dev, - struct i2c_slave_config *config); -int i2c_stm32_slave_unregister(const struct device *dev, - struct i2c_slave_config *config); +#ifdef CONFIG_I2C_TARGET +int i2c_stm32_target_register(const struct device *dev, struct i2c_target_config *config); +int i2c_stm32_target_unregister(const struct device *dev, struct i2c_target_config *config); #endif #endif /* ZEPHYR_DRIVERS_I2C_I2C_LL_STM32_H_ */ diff --git a/drivers/i2c/i2c_ll_stm32_v1.c b/drivers/i2c/i2c_ll_stm32_v1.c index e3f1c97ddc1..ca69d2c3d95 100644 --- a/drivers/i2c/i2c_ll_stm32_v1.c +++ b/drivers/i2c/i2c_ll_stm32_v1.c @@ -124,7 +124,7 @@ static void stm32_i2c_master_finish(const struct device *dev) stm32_i2c_disable_transfer_interrupts(dev); #endif -#if defined(CONFIG_I2C_SLAVE) +#if defined(CONFIG_I2C_TARGET) struct i2c_stm32_data *data = dev->data; data->master_active = false; if (!data->slave_attached) { @@ -161,7 +161,7 @@ static inline void msg_init(const struct device *dev, struct i2c_msg *msg, data->current.is_err = 0U; data->current.is_nack = 0U; data->current.msg = msg; -#if defined(CONFIG_I2C_SLAVE) +#if defined(CONFIG_I2C_TARGET) data->master_active = true; #endif data->slave_address = slave; @@ -420,13 +420,13 @@ static inline void handle_btf(const struct device *dev) } -#if defined(CONFIG_I2C_SLAVE) +#if defined(CONFIG_I2C_TARGET) static void stm32_i2c_slave_event(const struct device *dev) { const struct i2c_stm32_config *cfg = dev->config; struct i2c_stm32_data *data = dev->data; I2C_TypeDef *i2c = cfg->i2c; - const struct i2c_slave_callbacks *slave_cb = + const struct i2c_target_callbacks *slave_cb = data->slave_cfg->callbacks; if (LL_I2C_IsActiveFlag_TXE(i2c) && LL_I2C_IsActiveFlag_BTF(i2c)) { @@ -472,8 +472,7 @@ static void stm32_i2c_slave_event(const struct device *dev) } /* Attach and start I2C as slave */ -int i2c_stm32_slave_register(const struct device *dev, - struct i2c_slave_config *config) +int i2c_stm32_target_register(const struct device *dev, struct i2c_target_config *config) { const struct i2c_stm32_config *cfg = dev->config; struct i2c_stm32_data *data = dev->data; @@ -518,8 +517,7 @@ int i2c_stm32_slave_register(const struct device *dev, return 0; } -int i2c_stm32_slave_unregister(const struct device *dev, - struct i2c_slave_config *config) +int i2c_stm32_target_unregister(const struct device *dev, struct i2c_target_config *config) { const struct i2c_stm32_config *cfg = dev->config; struct i2c_stm32_data *data = dev->data; @@ -547,7 +545,7 @@ int i2c_stm32_slave_unregister(const struct device *dev, return 0; } -#endif /* defined(CONFIG_I2C_SLAVE) */ +#endif /* defined(CONFIG_I2C_TARGET) */ void stm32_i2c_event_isr(void *arg) { @@ -556,7 +554,7 @@ void stm32_i2c_event_isr(void *arg) struct i2c_stm32_data *data = dev->data; I2C_TypeDef *i2c = cfg->i2c; -#if defined(CONFIG_I2C_SLAVE) +#if defined(CONFIG_I2C_TARGET) if (data->slave_attached && !data->master_active) { stm32_i2c_slave_event(dev); return; @@ -585,7 +583,7 @@ void stm32_i2c_error_isr(void *arg) struct i2c_stm32_data *data = dev->data; I2C_TypeDef *i2c = cfg->i2c; -#if defined(CONFIG_I2C_SLAVE) +#if defined(CONFIG_I2C_TARGET) if (data->slave_attached && !data->master_active) { /* No need for a slave error function right now. */ return; diff --git a/drivers/i2c/i2c_ll_stm32_v2.c b/drivers/i2c/i2c_ll_stm32_v2.c index ff76229d313..89512d8c5c1 100644 --- a/drivers/i2c/i2c_ll_stm32_v2.c +++ b/drivers/i2c/i2c_ll_stm32_v2.c @@ -58,7 +58,7 @@ static inline void msg_init(const struct device *dev, struct i2c_msg *msg, LL_I2C_SetTransferRequest(i2c, transfer); LL_I2C_SetTransferSize(i2c, msg->len); -#if defined(CONFIG_I2C_SLAVE) +#if defined(CONFIG_I2C_TARGET) data->master_active = true; #endif LL_I2C_Enable(i2c); @@ -101,7 +101,7 @@ static void stm32_i2c_master_mode_end(const struct device *dev) stm32_i2c_disable_transfer_interrupts(dev); -#if defined(CONFIG_I2C_SLAVE) +#if defined(CONFIG_I2C_TARGET) data->master_active = false; if (!data->slave_attached) { LL_I2C_Disable(i2c); @@ -112,13 +112,13 @@ static void stm32_i2c_master_mode_end(const struct device *dev) k_sem_give(&data->device_sync_sem); } -#if defined(CONFIG_I2C_SLAVE) +#if defined(CONFIG_I2C_TARGET) static void stm32_i2c_slave_event(const struct device *dev) { const struct i2c_stm32_config *cfg = dev->config; struct i2c_stm32_data *data = dev->data; I2C_TypeDef *i2c = cfg->i2c; - const struct i2c_slave_callbacks *slave_cb = + const struct i2c_target_callbacks *slave_cb = data->slave_cfg->callbacks; if (LL_I2C_IsActiveFlag_TXIS(i2c)) { @@ -177,9 +177,9 @@ static void stm32_i2c_slave_event(const struct device *dev) } } -/* Attach and start I2C as slave */ -int i2c_stm32_slave_register(const struct device *dev, - struct i2c_slave_config *config) +/* Attach and start I2C as target */ +int i2c_stm32_target_register(const struct device *dev, + struct i2c_target_config *config) { const struct i2c_stm32_config *cfg = dev->config; struct i2c_stm32_data *data = dev->data; @@ -224,8 +224,8 @@ int i2c_stm32_slave_register(const struct device *dev, return 0; } -int i2c_stm32_slave_unregister(const struct device *dev, - struct i2c_slave_config *config) +int i2c_stm32_target_unregister(const struct device *dev, + struct i2c_target_config *config) { const struct i2c_stm32_config *cfg = dev->config; struct i2c_stm32_data *data = dev->data; @@ -257,7 +257,7 @@ int i2c_stm32_slave_unregister(const struct device *dev, return 0; } -#endif /* defined(CONFIG_I2C_SLAVE) */ +#endif /* defined(CONFIG_I2C_TARGET) */ static void stm32_i2c_event(const struct device *dev) { @@ -265,7 +265,7 @@ static void stm32_i2c_event(const struct device *dev) struct i2c_stm32_data *data = dev->data; I2C_TypeDef *i2c = cfg->i2c; -#if defined(CONFIG_I2C_SLAVE) +#if defined(CONFIG_I2C_TARGET) if (data->slave_attached && !data->master_active) { stm32_i2c_slave_event(dev); return; @@ -328,7 +328,7 @@ static int stm32_i2c_error(const struct device *dev) struct i2c_stm32_data *data = dev->data; I2C_TypeDef *i2c = cfg->i2c; -#if defined(CONFIG_I2C_SLAVE) +#if defined(CONFIG_I2C_TARGET) if (data->slave_attached && !data->master_active) { /* No need for a slave error function right now. */ return 0; diff --git a/drivers/i2c/i2c_lpc11u6x.c b/drivers/i2c/i2c_lpc11u6x.c index 379645d74ae..15336e5a976 100644 --- a/drivers/i2c/i2c_lpc11u6x.c +++ b/drivers/i2c/i2c_lpc11u6x.c @@ -121,7 +121,7 @@ static int lpc11u6x_i2c_transfer(const struct device *dev, } static int lpc11u6x_i2c_slave_register(const struct device *dev, - struct i2c_slave_config *cfg) + struct i2c_target_config *cfg) { const struct lpc11u6x_i2c_config *dev_cfg = dev->config; struct lpc11u6x_i2c_data *data = dev->data; @@ -131,7 +131,7 @@ static int lpc11u6x_i2c_slave_register(const struct device *dev, return -EINVAL; } - if (cfg->flags & I2C_SLAVE_FLAGS_ADDR_10_BITS) { + if (cfg->flags & I2C_TARGET_FLAGS_ADDR_10_BITS) { return -ENOTSUP; } @@ -155,7 +155,7 @@ exit: static int lpc11u6x_i2c_slave_unregister(const struct device *dev, - struct i2c_slave_config *cfg) + struct i2c_target_config *cfg) { const struct lpc11u6x_i2c_config *dev_cfg = dev->config; struct lpc11u6x_i2c_data *data = dev->data; @@ -349,8 +349,8 @@ static int lpc11u6x_i2c_init(const struct device *dev) static const struct i2c_driver_api i2c_api = { .configure = lpc11u6x_i2c_configure, .transfer = lpc11u6x_i2c_transfer, - .slave_register = lpc11u6x_i2c_slave_register, - .slave_unregister = lpc11u6x_i2c_slave_unregister, + .target_register = lpc11u6x_i2c_slave_register, + .target_unregister = lpc11u6x_i2c_slave_unregister, }; #define LPC11U6X_I2C_INIT(idx) \ diff --git a/drivers/i2c/i2c_lpc11u6x.h b/drivers/i2c/i2c_lpc11u6x.h index 5b6a3ec5344..39d7bd217ed 100644 --- a/drivers/i2c/i2c_lpc11u6x.h +++ b/drivers/i2c/i2c_lpc11u6x.h @@ -86,7 +86,7 @@ struct lpc11u6x_i2c_current_transfer { struct lpc11u6x_i2c_data { struct lpc11u6x_i2c_current_transfer transfer; - struct i2c_slave_config *slave; + struct i2c_target_config *slave; struct k_sem completion; struct k_mutex mutex; }; diff --git a/drivers/i2c/i2c_mchp_xec.c b/drivers/i2c/i2c_mchp_xec.c index 3334d44e9e2..3af84c36bb2 100644 --- a/drivers/i2c/i2c_mchp_xec.c +++ b/drivers/i2c/i2c_mchp_xec.c @@ -62,7 +62,7 @@ struct i2c_xec_data { uint32_t speed_id; const struct device *sda_gpio; const struct device *scl_gpio; - struct i2c_slave_config *slave_cfg; + struct i2c_target_config *slave_cfg; bool slave_attached; bool slave_read; }; @@ -177,7 +177,7 @@ static void cleanup_registers(uint32_t ba) cfg &= ~MCHP_I2C_SMB_CFG_FLUSH_SRBUF_WO; } -#ifdef CONFIG_I2C_SLAVE +#ifdef CONFIG_I2C_TARGET static void restart_slave(uint32_t ba) { MCHP_I2C_SMB_CTRL_WO(ba) = MCHP_I2C_SMB_CTRL_PIN | @@ -328,7 +328,7 @@ static int i2c_xec_configure(const struct device *dev, struct i2c_xec_data *data = (struct i2c_xec_data *const) (dev->data); - if (!(dev_config_raw & I2C_MODE_MASTER)) { + if (!(dev_config_raw & I2C_MODE_CONTROLLER)) { return -ENOTSUP; } @@ -658,7 +658,7 @@ static int i2c_xec_transfer(const struct device *dev, struct i2c_msg *msgs, { int ret = 0; -#ifdef CONFIG_I2C_SLAVE +#ifdef CONFIG_I2C_TARGET struct i2c_xec_data *data = dev->data; if (data->slave_attached) { @@ -689,11 +689,11 @@ static int i2c_xec_transfer(const struct device *dev, struct i2c_msg *msgs, static void i2c_xec_bus_isr(const struct device *dev) { -#ifdef CONFIG_I2C_SLAVE +#ifdef CONFIG_I2C_TARGET const struct i2c_xec_config *config = (const struct i2c_xec_config *const) (dev->config); struct i2c_xec_data *data = dev->data; - const struct i2c_slave_callbacks *slave_cb = data->slave_cfg->callbacks; + const struct i2c_target_callbacks *slave_cb = data->slave_cfg->callbacks; uint32_t ba = config->base_addr; uint32_t status; @@ -773,9 +773,9 @@ clear_iag: #endif } -#ifdef CONFIG_I2C_SLAVE +#ifdef CONFIG_I2C_TARGET static int i2c_xec_slave_register(const struct device *dev, - struct i2c_slave_config *config) + struct i2c_target_config *config) { const struct i2c_xec_config *cfg = dev->config; struct i2c_xec_data *data = dev->data; @@ -818,7 +818,7 @@ static int i2c_xec_slave_register(const struct device *dev, } static int i2c_xec_slave_unregister(const struct device *dev, - struct i2c_slave_config *config) + struct i2c_target_config *config) { const struct i2c_xec_config *cfg = dev->config; struct i2c_xec_data *data = dev->data; @@ -838,7 +838,7 @@ static int i2c_xec_slave_unregister(const struct device *dev, static const struct i2c_driver_api i2c_xec_driver_api = { .configure = i2c_xec_configure, .transfer = i2c_xec_transfer, -#ifdef CONFIG_I2C_SLAVE +#ifdef CONFIG_I2C_TARGET .slave_register = i2c_xec_slave_register, .slave_unregister = i2c_xec_slave_unregister, #endif @@ -868,14 +868,14 @@ static int i2c_xec_init(const struct device *dev) /* Default configuration */ ret = i2c_xec_configure(dev, - I2C_MODE_MASTER | + I2C_MODE_CONTROLLER | I2C_SPEED_SET(I2C_SPEED_STANDARD)); if (ret) { LOG_ERR("%s configure failed %d", dev->name, ret); return ret; } -#ifdef CONFIG_I2C_SLAVE +#ifdef CONFIG_I2C_TARGET const struct i2c_xec_config *config = (const struct i2c_xec_config *const) (dev->config); diff --git a/drivers/i2c/i2c_mchp_xec_v2.c b/drivers/i2c/i2c_mchp_xec_v2.c index 3842ba638c4..63e43b4fc89 100644 --- a/drivers/i2c/i2c_mchp_xec_v2.c +++ b/drivers/i2c/i2c_mchp_xec_v2.c @@ -97,7 +97,7 @@ struct i2c_xec_data { uint8_t state; uint8_t read_discard; uint8_t speed_id; - struct i2c_slave_config *target_cfg; + struct i2c_target_config *target_cfg; bool target_attached; bool target_read; uint32_t i2c_compl; @@ -247,7 +247,7 @@ static int i2c_xec_reset_config(const struct device *dev) * enable in the configuration register. */ regs->OWN_ADDR = EC_OWN_I2C_ADDR | (EC_OWN_I2C_ADDR << 8); -#ifdef CONFIG_I2C_SLAVE +#ifdef CONFIG_I2C_TARGET if (data->target_cfg) { regs->OWN_ADDR = data->target_cfg->address; } @@ -402,7 +402,7 @@ recov_exit: return ret; } -#ifdef CONFIG_I2C_SLAVE +#ifdef CONFIG_I2C_TARGET /* * Restart I2C controller as target for ACK of address match. * Setting PIN clears all status in I2C.Status register except NBB. @@ -571,7 +571,7 @@ static int i2c_xec_configure(const struct device *dev, struct i2c_xec_data *data = (struct i2c_xec_data *const) (dev->data); - if (!(dev_config_raw & I2C_MODE_MASTER)) { + if (!(dev_config_raw & I2C_MODE_CONTROLLER)) { return -ENOTSUP; } @@ -776,7 +776,7 @@ static int i2c_xec_transfer(const struct device *dev, struct i2c_msg *msgs, struct i2c_xec_data *data = dev->data; int ret = 0; -#ifdef CONFIG_I2C_SLAVE +#ifdef CONFIG_I2C_TARGET if (data->target_attached) { LOG_ERR("Device is registered as target"); return -EBUSY; @@ -804,11 +804,11 @@ static int i2c_xec_transfer(const struct device *dev, struct i2c_msg *msgs, static void i2c_xec_bus_isr(const struct device *dev) { -#ifdef CONFIG_I2C_SLAVE +#ifdef CONFIG_I2C_TARGET const struct i2c_xec_config *cfg = (const struct i2c_xec_config *const) (dev->config); struct i2c_xec_data *data = dev->data; - const struct i2c_slave_callbacks *target_cb = + const struct i2c_target_callbacks *target_cb = data->target_cfg->callbacks; struct i2c_smb_regs *regs = (struct i2c_smb_regs *)cfg->base_addr; int ret; @@ -972,9 +972,9 @@ clear_iag: #endif } -#ifdef CONFIG_I2C_SLAVE +#ifdef CONFIG_I2C_TARGET static int i2c_xec_target_register(const struct device *dev, - struct i2c_slave_config *config) + struct i2c_target_config *config) { const struct i2c_xec_config *cfg = dev->config; struct i2c_xec_data *data = dev->data; @@ -1015,7 +1015,7 @@ static int i2c_xec_target_register(const struct device *dev, } static int i2c_xec_target_unregister(const struct device *dev, - struct i2c_slave_config *config) + struct i2c_target_config *config) { const struct i2c_xec_config *cfg = dev->config; struct i2c_xec_data *data = dev->data; @@ -1036,9 +1036,9 @@ static int i2c_xec_target_unregister(const struct device *dev, static const struct i2c_driver_api i2c_xec_driver_api = { .configure = i2c_xec_configure, .transfer = i2c_xec_transfer, -#ifdef CONFIG_I2C_SLAVE - .slave_register = i2c_xec_target_register, - .slave_unregister = i2c_xec_target_unregister, +#ifdef CONFIG_I2C_TARGET + .target_register = i2c_xec_target_register, + .target_unregister = i2c_xec_target_unregister, #endif }; @@ -1066,12 +1066,12 @@ static int i2c_xec_init(const struct device *dev) } /* Default configuration */ - ret = i2c_xec_configure(dev, I2C_MODE_MASTER | bitrate_cfg); + ret = i2c_xec_configure(dev, I2C_MODE_CONTROLLER | bitrate_cfg); if (ret) { return ret; } -#ifdef CONFIG_I2C_SLAVE +#ifdef CONFIG_I2C_TARGET const struct i2c_xec_config *config = (const struct i2c_xec_config *const) (dev->config); diff --git a/drivers/i2c/i2c_mcux.c b/drivers/i2c/i2c_mcux.c index 990d8a35b8f..5eef8260d97 100644 --- a/drivers/i2c/i2c_mcux.c +++ b/drivers/i2c/i2c_mcux.c @@ -47,7 +47,7 @@ static int i2c_mcux_configure(const struct device *dev, uint32_t clock_freq; uint32_t baudrate; - if (!(I2C_MODE_MASTER & dev_config_raw)) { + if (!(I2C_MODE_CONTROLLER & dev_config_raw)) { return -EINVAL; } @@ -207,7 +207,7 @@ static int i2c_mcux_init(const struct device *dev) return error; } - error = i2c_mcux_configure(dev, I2C_MODE_MASTER | bitrate_cfg); + error = i2c_mcux_configure(dev, I2C_MODE_CONTROLLER | bitrate_cfg); if (error) { return error; } diff --git a/drivers/i2c/i2c_mcux_flexcomm.c b/drivers/i2c/i2c_mcux_flexcomm.c index dcb54082d9e..dc135191333 100644 --- a/drivers/i2c/i2c_mcux_flexcomm.c +++ b/drivers/i2c/i2c_mcux_flexcomm.c @@ -35,9 +35,9 @@ struct mcux_flexcomm_data { i2c_master_handle_t handle; struct k_sem device_sync_sem; status_t callback_status; -#ifdef CONFIG_I2C_SLAVE +#ifdef CONFIG_I2C_TARGET i2c_slave_handle_t target_handle; - struct i2c_slave_config *target_cfg; + struct i2c_target_config *target_cfg; bool target_attached; bool first_read; bool first_write; @@ -53,7 +53,7 @@ static int mcux_flexcomm_configure(const struct device *dev, uint32_t clock_freq; uint32_t baudrate; - if (!(I2C_MODE_MASTER & dev_config_raw)) { + if (!(I2C_MODE_CONTROLLER & dev_config_raw)) { return -EINVAL; } @@ -179,12 +179,12 @@ static int mcux_flexcomm_transfer(const struct device *dev, return 0; } -#if defined(CONFIG_I2C_SLAVE) +#if defined(CONFIG_I2C_TARGET) static void i2c_target_transfer_callback(I2C_Type *base, volatile i2c_slave_transfer_t *transfer, void *userData) { struct mcux_flexcomm_data *data = userData; - const struct i2c_slave_callbacks *target_cb = data->target_cfg->callbacks; + const struct i2c_target_callbacks *target_cb = data->target_cfg->callbacks; static uint8_t rxVal, txVal; ARG_UNUSED(base); @@ -239,7 +239,7 @@ static void i2c_target_transfer_callback(I2C_Type *base, } int mcux_flexcomm_target_register(const struct device *dev, - struct i2c_slave_config *target_config) + struct i2c_target_config *target_config) { const struct mcux_flexcomm_config *config = dev->config; struct mcux_flexcomm_data *data = dev->data; @@ -282,7 +282,7 @@ int mcux_flexcomm_target_register(const struct device *dev, } int mcux_flexcomm_target_unregister(const struct device *dev, - struct i2c_slave_config *target_config) + struct i2c_target_config *target_config) { const struct mcux_flexcomm_config *config = dev->config; struct mcux_flexcomm_data *data = dev->data; @@ -307,7 +307,7 @@ static void mcux_flexcomm_isr(const struct device *dev) struct mcux_flexcomm_data *data = dev->data; I2C_Type *base = config->base; -#if defined(CONFIG_I2C_SLAVE) +#if defined(CONFIG_I2C_TARGET) if (data->target_attached) { I2C_SlaveTransferHandleIRQ(base, &data->target_handle); return; @@ -349,7 +349,7 @@ static int mcux_flexcomm_init(const struct device *dev) bitrate_cfg = i2c_map_dt_bitrate(config->bitrate); - error = mcux_flexcomm_configure(dev, I2C_MODE_MASTER | bitrate_cfg); + error = mcux_flexcomm_configure(dev, I2C_MODE_CONTROLLER | bitrate_cfg); if (error) { return error; } @@ -362,9 +362,9 @@ static int mcux_flexcomm_init(const struct device *dev) static const struct i2c_driver_api mcux_flexcomm_driver_api = { .configure = mcux_flexcomm_configure, .transfer = mcux_flexcomm_transfer, -#if defined(CONFIG_I2C_SLAVE) - .slave_register = mcux_flexcomm_target_register, - .slave_unregister = mcux_flexcomm_target_unregister, +#if defined(CONFIG_I2C_TARGET) + .target_register = mcux_flexcomm_target_register, + .target_unregister = mcux_flexcomm_target_unregister, #endif }; diff --git a/drivers/i2c/i2c_mcux_lpi2c.c b/drivers/i2c/i2c_mcux_lpi2c.c index 019f54cd20a..fb7f42f8f6a 100644 --- a/drivers/i2c/i2c_mcux_lpi2c.c +++ b/drivers/i2c/i2c_mcux_lpi2c.c @@ -65,7 +65,7 @@ static int mcux_lpi2c_configure(const struct device *dev, uint32_t baudrate; int ret; - if (!(I2C_MODE_MASTER & dev_config_raw)) { + if (!(I2C_MODE_CONTROLLER & dev_config_raw)) { return -EINVAL; } @@ -329,7 +329,7 @@ static int mcux_lpi2c_init(const struct device *dev) bitrate_cfg = i2c_map_dt_bitrate(config->bitrate); - error = mcux_lpi2c_configure(dev, I2C_MODE_MASTER | bitrate_cfg); + error = mcux_lpi2c_configure(dev, I2C_MODE_CONTROLLER | bitrate_cfg); if (error) { return error; } diff --git a/drivers/i2c/i2c_nios2.c b/drivers/i2c/i2c_nios2.c index 05be4924f5a..b3ebd3a9f44 100644 --- a/drivers/i2c/i2c_nios2.c +++ b/drivers/i2c/i2c_nios2.c @@ -33,7 +33,7 @@ i2c_nios2_configure(const struct device *dev, uint32_t dev_config) int32_t rc = 0; k_sem_take(&data->sem_lock, K_FOREVER); - if (!(I2C_MODE_MASTER & dev_config)) { + if (!(I2C_MODE_CONTROLLER & dev_config)) { LOG_ERR("i2c config mode error\n"); rc = -EINVAL; goto i2c_cfg_err; @@ -173,7 +173,7 @@ static int i2c_nios2_init(const struct device *dev) k_sem_init(&data->sem_lock, 1, 1); rc = i2c_nios2_configure(dev, - I2C_MODE_MASTER | + I2C_MODE_CONTROLLER | I2C_SPEED_SET(I2C_SPEED_STANDARD)); if (rc) { LOG_ERR("i2c configure failed %d\n", rc); diff --git a/drivers/i2c/i2c_npcx_port.c b/drivers/i2c/i2c_npcx_port.c index b458e36d081..fc89ffb5943 100644 --- a/drivers/i2c/i2c_npcx_port.c +++ b/drivers/i2c/i2c_npcx_port.c @@ -62,7 +62,7 @@ static int i2c_npcx_port_configure(const struct device *dev, return -EIO; } - if (!(dev_config & I2C_MODE_MASTER)) { + if (!(dev_config & I2C_MODE_CONTROLLER)) { return -ENOTSUP; } @@ -87,7 +87,7 @@ static int i2c_npcx_port_get_config(const struct device *dev, uint32_t *dev_conf ret = npcx_i2c_ctrl_get_speed(config->i2c_ctrl, &speed); if (!ret) { - *dev_config = (I2C_MODE_MASTER | speed); + *dev_config = (I2C_MODE_CONTROLLER | speed); } return ret; @@ -139,7 +139,7 @@ static int i2c_npcx_port_init(const struct device *dev) /* Setup initial i2c configuration */ - i2c_config = (I2C_MODE_MASTER | i2c_map_dt_bitrate(config->bitrate)); + i2c_config = (I2C_MODE_CONTROLLER | i2c_map_dt_bitrate(config->bitrate)); ret = i2c_npcx_port_configure(dev, i2c_config); if (ret != 0) { return ret; diff --git a/drivers/i2c/i2c_rcar.c b/drivers/i2c/i2c_rcar.c index 6e58a6da6ff..77528f34767 100644 --- a/drivers/i2c/i2c_rcar.c +++ b/drivers/i2c/i2c_rcar.c @@ -270,7 +270,7 @@ static int i2c_rcar_configure(const struct device *dev, uint32_t dev_config) uint8_t cdf, scgd; /* We only support Master mode */ - if ((dev_config & I2C_MODE_MASTER) != I2C_MODE_MASTER) { + if ((dev_config & I2C_MODE_CONTROLLER) != I2C_MODE_CONTROLLER) { return -ENOTSUP; } @@ -330,7 +330,7 @@ static int i2c_rcar_init(const struct device *dev) bitrate_cfg = i2c_map_dt_bitrate(config->bitrate); - ret = i2c_rcar_configure(dev, I2C_MODE_MASTER | bitrate_cfg); + ret = i2c_rcar_configure(dev, I2C_MODE_CONTROLLER | bitrate_cfg); if (ret != 0) { return ret; } diff --git a/drivers/i2c/i2c_rv32m1_lpi2c.c b/drivers/i2c/i2c_rv32m1_lpi2c.c index 105da661eed..0ea924220be 100644 --- a/drivers/i2c/i2c_rv32m1_lpi2c.c +++ b/drivers/i2c/i2c_rv32m1_lpi2c.c @@ -50,7 +50,7 @@ static int rv32m1_lpi2c_configure(const struct device *dev, uint32_t clk_freq; int err; - if (!(I2C_MODE_MASTER & dev_config)) { + if (!(I2C_MODE_CONTROLLER & dev_config)) { /* Slave mode not supported - yet */ LOG_ERR("Slave mode not supported"); return -ENOTSUP; @@ -236,7 +236,7 @@ static int rv32m1_lpi2c_init(const struct device *dev) data); dev_cfg = i2c_map_dt_bitrate(config->bitrate); - err = rv32m1_lpi2c_configure(dev, dev_cfg | I2C_MODE_MASTER); + err = rv32m1_lpi2c_configure(dev, dev_cfg | I2C_MODE_CONTROLLER); if (err) { LOG_ERR("Could not configure controller (err %d)", err); return err; diff --git a/drivers/i2c/i2c_sam0.c b/drivers/i2c/i2c_sam0.c index 4c0b20a490d..49f145d3cc9 100644 --- a/drivers/i2c/i2c_sam0.c +++ b/drivers/i2c/i2c_sam0.c @@ -668,7 +668,7 @@ static int i2c_sam0_configure(const struct device *dev, uint32_t config) SercomI2cm *i2c = cfg->regs; int retval; - if (!(config & I2C_MODE_MASTER)) { + if (!(config & I2C_MODE_CONTROLLER)) { return -EINVAL; } diff --git a/drivers/i2c/i2c_sam4l_twim.c b/drivers/i2c/i2c_sam4l_twim.c index b6ffdca36e0..2232d9a36ea 100644 --- a/drivers/i2c/i2c_sam4l_twim.c +++ b/drivers/i2c/i2c_sam4l_twim.c @@ -167,7 +167,7 @@ static int i2c_sam_twim_configure(const struct device *dev, uint32_t config) uint32_t bitrate; int ret; - if (!(config & I2C_MODE_MASTER)) { + if (!(config & I2C_MODE_CONTROLLER)) { LOG_ERR("Master Mode is not enabled"); return -EIO; } @@ -571,7 +571,7 @@ static int i2c_sam_twim_initialize(const struct device *dev) bitrate_cfg = i2c_map_dt_bitrate(cfg->bitrate); - ret = i2c_sam_twim_configure(dev, I2C_MODE_MASTER | bitrate_cfg); + ret = i2c_sam_twim_configure(dev, I2C_MODE_CONTROLLER | bitrate_cfg); if (ret < 0) { LOG_ERR("Failed to initialize %s device", dev->name); return ret; diff --git a/drivers/i2c/i2c_sam_twi.c b/drivers/i2c/i2c_sam_twi.c index b5df2b46735..681f49966a6 100644 --- a/drivers/i2c/i2c_sam_twi.c +++ b/drivers/i2c/i2c_sam_twi.c @@ -107,7 +107,7 @@ static int i2c_sam_twi_configure(const struct device *dev, uint32_t config) uint32_t bitrate; int ret; - if (!(config & I2C_MODE_MASTER)) { + if (!(config & I2C_MODE_CONTROLLER)) { LOG_ERR("Master Mode is not enabled"); return -EIO; } @@ -332,7 +332,7 @@ static int i2c_sam_twi_initialize(const struct device *dev) bitrate_cfg = i2c_map_dt_bitrate(dev_cfg->bitrate); - ret = i2c_sam_twi_configure(dev, I2C_MODE_MASTER | bitrate_cfg); + ret = i2c_sam_twi_configure(dev, I2C_MODE_CONTROLLER | bitrate_cfg); if (ret < 0) { LOG_ERR("Failed to initialize %s device", dev->name); return ret; diff --git a/drivers/i2c/i2c_sam_twihs.c b/drivers/i2c/i2c_sam_twihs.c index 1d25adb5fdb..640a3bbb5fc 100644 --- a/drivers/i2c/i2c_sam_twihs.c +++ b/drivers/i2c/i2c_sam_twihs.c @@ -105,7 +105,7 @@ static int i2c_sam_twihs_configure(const struct device *dev, uint32_t config) uint32_t bitrate; int ret; - if (!(config & I2C_MODE_MASTER)) { + if (!(config & I2C_MODE_CONTROLLER)) { LOG_ERR("Master Mode is not enabled"); return -EIO; } @@ -303,7 +303,7 @@ static int i2c_sam_twihs_initialize(const struct device *dev) bitrate_cfg = i2c_map_dt_bitrate(dev_cfg->bitrate); - ret = i2c_sam_twihs_configure(dev, I2C_MODE_MASTER | bitrate_cfg); + ret = i2c_sam_twihs_configure(dev, I2C_MODE_CONTROLLER | bitrate_cfg); if (ret < 0) { LOG_ERR("Failed to initialize %s device", dev->name); return ret; diff --git a/drivers/i2c/i2c_sifive.c b/drivers/i2c/i2c_sifive.c index 69c9b2ba2ef..671139bd266 100644 --- a/drivers/i2c/i2c_sifive.c +++ b/drivers/i2c/i2c_sifive.c @@ -243,7 +243,7 @@ static int i2c_sifive_configure(const struct device *dev, uint32_t dev_config) I2C_REG(config, REG_PRESCALE_HIGH)); /* Support I2C Master mode only */ - if (!(dev_config & I2C_MODE_MASTER)) { + if (!(dev_config & I2C_MODE_CONTROLLER)) { LOG_ERR("I2C only supports operation as master"); return -ENOTSUP; } @@ -305,7 +305,7 @@ static int i2c_sifive_init(const struct device *dev) uint32_t dev_config = 0U; int rc = 0; - dev_config = (I2C_MODE_MASTER | i2c_map_dt_bitrate(config->f_bus)); + dev_config = (I2C_MODE_CONTROLLER | i2c_map_dt_bitrate(config->f_bus)); rc = i2c_sifive_configure(dev, dev_config); if (rc != 0) { diff --git a/drivers/i2c/slave/CMakeLists.txt b/drivers/i2c/slave/CMakeLists.txt deleted file mode 100644 index 8645d483033..00000000000 --- a/drivers/i2c/slave/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -zephyr_library_sources_ifdef(CONFIG_I2C_EEPROM_SLAVE eeprom_slave.c) diff --git a/drivers/i2c/slave/Kconfig b/drivers/i2c/slave/Kconfig deleted file mode 100644 index 6c2aa00445d..00000000000 --- a/drivers/i2c/slave/Kconfig +++ /dev/null @@ -1,24 +0,0 @@ -# I2C Slave configuration options - -# Copyright (c) 2017 BayLibre, SAS -# SPDX-License-Identifier: Apache-2.0 - -# -# I2C options -# -menuconfig I2C_SLAVE - bool "I2C Slave Drivers" - help - Enable I2C Slave Driver Configuration - -if I2C_SLAVE - -config I2C_SLAVE_INIT_PRIORITY - int "Init priority" - default 60 - help - I2C Slave device driver initialization priority. - -source "drivers/i2c/slave/Kconfig.eeprom" - -endif # I2C_SLAVE diff --git a/drivers/i2c/slave/Kconfig.eeprom b/drivers/i2c/slave/Kconfig.eeprom deleted file mode 100644 index d854c2525dd..00000000000 --- a/drivers/i2c/slave/Kconfig.eeprom +++ /dev/null @@ -1,9 +0,0 @@ -# I2C EEPROM Slave configuration options - -# Copyright (c) 2017 BayLibre, SAS -# SPDX-License-Identifier: Apache-2.0 - -config I2C_EEPROM_SLAVE - bool "I2C Slave EEPROM driver" - help - Enable virtual I2C Slave EEPROM driver diff --git a/drivers/i2c/slave/eeprom_slave.c b/drivers/i2c/slave/eeprom_slave.c deleted file mode 100644 index 04b7d1a883d..00000000000 --- a/drivers/i2c/slave/eeprom_slave.c +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Copyright (c) 2017 BayLibre, SAS - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#define DT_DRV_COMPAT atmel_at24 - -#include -#include -#include -#include -#include -#include - -#define LOG_LEVEL CONFIG_I2C_LOG_LEVEL -#include -LOG_MODULE_REGISTER(i2c_slave); - -struct i2c_eeprom_slave_data { - struct i2c_slave_config config; - uint32_t buffer_size; - uint8_t *buffer; - uint32_t buffer_idx; - bool first_write; -}; - -struct i2c_eeprom_slave_config { - struct i2c_dt_spec bus; - uint32_t buffer_size; - uint8_t *buffer; -}; - -int eeprom_slave_program(const struct device *dev, const uint8_t *eeprom_data, - unsigned int length) -{ - struct i2c_eeprom_slave_data *data = dev->data; - - if (length > data->buffer_size) { - return -EINVAL; - } - - memcpy(data->buffer, eeprom_data, length); - - return 0; -} - -int eeprom_slave_read(const struct device *dev, uint8_t *eeprom_data, - unsigned int offset) -{ - struct i2c_eeprom_slave_data *data = dev->data; - - if (!data || offset >= data->buffer_size) { - return -EINVAL; - } - - *eeprom_data = data->buffer[offset]; - - return 0; -} - -static int eeprom_slave_write_requested(struct i2c_slave_config *config) -{ - struct i2c_eeprom_slave_data *data = CONTAINER_OF(config, - struct i2c_eeprom_slave_data, - config); - - LOG_DBG("eeprom: write req"); - - data->first_write = true; - - return 0; -} - -static int eeprom_slave_read_requested(struct i2c_slave_config *config, - uint8_t *val) -{ - struct i2c_eeprom_slave_data *data = CONTAINER_OF(config, - struct i2c_eeprom_slave_data, - config); - - *val = data->buffer[data->buffer_idx]; - - LOG_DBG("eeprom: read req, val=0x%x", *val); - - /* Increment will be done in the read_processed callback */ - - return 0; -} - -static int eeprom_slave_write_received(struct i2c_slave_config *config, - uint8_t val) -{ - struct i2c_eeprom_slave_data *data = CONTAINER_OF(config, - struct i2c_eeprom_slave_data, - config); - - LOG_DBG("eeprom: write done, val=0x%x", val); - - /* In case EEPROM wants to be R/O, return !0 here could trigger - * a NACK to the I2C controller, support depends on the - * I2C controller support - */ - - if (data->first_write) { - data->buffer_idx = val; - data->first_write = false; - } else { - data->buffer[data->buffer_idx++] = val; - } - - data->buffer_idx = data->buffer_idx % data->buffer_size; - - return 0; -} - -static int eeprom_slave_read_processed(struct i2c_slave_config *config, - uint8_t *val) -{ - struct i2c_eeprom_slave_data *data = CONTAINER_OF(config, - struct i2c_eeprom_slave_data, - config); - - /* Increment here */ - data->buffer_idx = (data->buffer_idx + 1) % data->buffer_size; - - *val = data->buffer[data->buffer_idx]; - - LOG_DBG("eeprom: read done, val=0x%x", *val); - - /* Increment will be done in the next read_processed callback - * In case of STOP, the byte won't be taken in account - */ - - return 0; -} - -static int eeprom_slave_stop(struct i2c_slave_config *config) -{ - struct i2c_eeprom_slave_data *data = CONTAINER_OF(config, - struct i2c_eeprom_slave_data, - config); - - LOG_DBG("eeprom: stop"); - - data->first_write = true; - - return 0; -} - -static int eeprom_slave_register(const struct device *dev) -{ - const struct i2c_eeprom_slave_config *cfg = dev->config; - struct i2c_eeprom_slave_data *data = dev->data; - - return i2c_slave_register(cfg->bus.bus, &data->config); -} - -static int eeprom_slave_unregister(const struct device *dev) -{ - const struct i2c_eeprom_slave_config *cfg = dev->config; - struct i2c_eeprom_slave_data *data = dev->data; - - return i2c_slave_unregister(cfg->bus.bus, &data->config); -} - -static const struct i2c_slave_driver_api api_funcs = { - .driver_register = eeprom_slave_register, - .driver_unregister = eeprom_slave_unregister, -}; - -static const struct i2c_slave_callbacks eeprom_callbacks = { - .write_requested = eeprom_slave_write_requested, - .read_requested = eeprom_slave_read_requested, - .write_received = eeprom_slave_write_received, - .read_processed = eeprom_slave_read_processed, - .stop = eeprom_slave_stop, -}; - -static int i2c_eeprom_slave_init(const struct device *dev) -{ - struct i2c_eeprom_slave_data *data = dev->data; - const struct i2c_eeprom_slave_config *cfg = dev->config; - - if (!device_is_ready(cfg->bus.bus)) { - LOG_ERR("I2C controller device not ready"); - return -ENODEV; - } - - data->buffer_size = cfg->buffer_size; - data->buffer = cfg->buffer; - data->config.address = cfg->bus.addr; - data->config.callbacks = &eeprom_callbacks; - - return 0; -} - -#define I2C_EEPROM_INIT(inst) \ - static struct i2c_eeprom_slave_data \ - i2c_eeprom_slave_##inst##_dev_data; \ - \ - static uint8_t \ - i2c_eeprom_slave_##inst##_buffer[(DT_INST_PROP(inst, size))]; \ - \ - static const struct i2c_eeprom_slave_config \ - i2c_eeprom_slave_##inst##_cfg = { \ - .bus = I2C_DT_SPEC_INST_GET(inst), \ - .buffer_size = DT_INST_PROP(inst, size), \ - .buffer = i2c_eeprom_slave_##inst##_buffer \ - }; \ - \ - DEVICE_DT_INST_DEFINE(inst, \ - &i2c_eeprom_slave_init, \ - NULL, \ - &i2c_eeprom_slave_##inst##_dev_data, \ - &i2c_eeprom_slave_##inst##_cfg, \ - POST_KERNEL, \ - CONFIG_I2C_SLAVE_INIT_PRIORITY, \ - &api_funcs); - -DT_INST_FOREACH_STATUS_OKAY(I2C_EEPROM_INIT) diff --git a/drivers/i2c/target/CMakeLists.txt b/drivers/i2c/target/CMakeLists.txt new file mode 100644 index 00000000000..d74c75140d6 --- /dev/null +++ b/drivers/i2c/target/CMakeLists.txt @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: Apache-2.0 + +zephyr_library_sources_ifdef(CONFIG_I2C_EEPROM_TARGET eeprom_target.c) diff --git a/drivers/i2c/target/Kconfig b/drivers/i2c/target/Kconfig new file mode 100644 index 00000000000..679bdc98f4d --- /dev/null +++ b/drivers/i2c/target/Kconfig @@ -0,0 +1,24 @@ +# I2C Target configuration options + +# Copyright (c) 2017 BayLibre, SAS +# SPDX-License-Identifier: Apache-2.0 + +# +# I2C options +# +menuconfig I2C_TARGET + bool "I2C Target Drivers" + help + Enable I2C Target Driver Configuration + +if I2C_TARGET + +config I2C_TARGET_INIT_PRIORITY + int "Init priority" + default 60 + help + I2C Target device driver initialization priority. + +source "drivers/i2c/target/Kconfig.eeprom" + +endif # I2C_TARGET diff --git a/drivers/i2c/target/Kconfig.eeprom b/drivers/i2c/target/Kconfig.eeprom new file mode 100644 index 00000000000..34e2e82274e --- /dev/null +++ b/drivers/i2c/target/Kconfig.eeprom @@ -0,0 +1,9 @@ +# I2C EEPROM Target configuration options + +# Copyright (c) 2017 BayLibre, SAS +# SPDX-License-Identifier: Apache-2.0 + +config I2C_EEPROM_TARGET + bool "I2C Target EEPROM driver" + help + Enable virtual I2C Target EEPROM driver diff --git a/drivers/i2c/target/eeprom_target.c b/drivers/i2c/target/eeprom_target.c new file mode 100644 index 00000000000..9d97ed1fd51 --- /dev/null +++ b/drivers/i2c/target/eeprom_target.c @@ -0,0 +1,221 @@ +/* + * Copyright (c) 2017 BayLibre, SAS + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#define DT_DRV_COMPAT atmel_at24 + +#include +#include +#include +#include +#include +#include + +#define LOG_LEVEL CONFIG_I2C_LOG_LEVEL +#include +LOG_MODULE_REGISTER(i2c_target); + +struct i2c_eeprom_target_data { + struct i2c_target_config config; + uint32_t buffer_size; + uint8_t *buffer; + uint32_t buffer_idx; + bool first_write; +}; + +struct i2c_eeprom_target_config { + struct i2c_dt_spec bus; + uint32_t buffer_size; + uint8_t *buffer; +}; + +int eeprom_target_program(const struct device *dev, const uint8_t *eeprom_data, + unsigned int length) +{ + struct i2c_eeprom_target_data *data = dev->data; + + if (length > data->buffer_size) { + return -EINVAL; + } + + memcpy(data->buffer, eeprom_data, length); + + return 0; +} + +int eeprom_target_read(const struct device *dev, uint8_t *eeprom_data, + unsigned int offset) +{ + struct i2c_eeprom_target_data *data = dev->data; + + if (!data || offset >= data->buffer_size) { + return -EINVAL; + } + + *eeprom_data = data->buffer[offset]; + + return 0; +} + +static int eeprom_target_write_requested(struct i2c_target_config *config) +{ + struct i2c_eeprom_target_data *data = CONTAINER_OF(config, + struct i2c_eeprom_target_data, + config); + + LOG_DBG("eeprom: write req"); + + data->first_write = true; + + return 0; +} + +static int eeprom_target_read_requested(struct i2c_target_config *config, + uint8_t *val) +{ + struct i2c_eeprom_target_data *data = CONTAINER_OF(config, + struct i2c_eeprom_target_data, + config); + + *val = data->buffer[data->buffer_idx]; + + LOG_DBG("eeprom: read req, val=0x%x", *val); + + /* Increment will be done in the read_processed callback */ + + return 0; +} + +static int eeprom_target_write_received(struct i2c_target_config *config, + uint8_t val) +{ + struct i2c_eeprom_target_data *data = CONTAINER_OF(config, + struct i2c_eeprom_target_data, + config); + + LOG_DBG("eeprom: write done, val=0x%x", val); + + /* In case EEPROM wants to be R/O, return !0 here could trigger + * a NACK to the I2C controller, support depends on the + * I2C controller support + */ + + if (data->first_write) { + data->buffer_idx = val; + data->first_write = false; + } else { + data->buffer[data->buffer_idx++] = val; + } + + data->buffer_idx = data->buffer_idx % data->buffer_size; + + return 0; +} + +static int eeprom_target_read_processed(struct i2c_target_config *config, + uint8_t *val) +{ + struct i2c_eeprom_target_data *data = CONTAINER_OF(config, + struct i2c_eeprom_target_data, + config); + + /* Increment here */ + data->buffer_idx = (data->buffer_idx + 1) % data->buffer_size; + + *val = data->buffer[data->buffer_idx]; + + LOG_DBG("eeprom: read done, val=0x%x", *val); + + /* Increment will be done in the next read_processed callback + * In case of STOP, the byte won't be taken in account + */ + + return 0; +} + +static int eeprom_target_stop(struct i2c_target_config *config) +{ + struct i2c_eeprom_target_data *data = CONTAINER_OF(config, + struct i2c_eeprom_target_data, + config); + + LOG_DBG("eeprom: stop"); + + data->first_write = true; + + return 0; +} + +static int eeprom_target_register(const struct device *dev) +{ + const struct i2c_eeprom_target_config *cfg = dev->config; + struct i2c_eeprom_target_data *data = dev->data; + + return i2c_target_register(cfg->bus.bus, &data->config); +} + +static int eeprom_target_unregister(const struct device *dev) +{ + const struct i2c_eeprom_target_config *cfg = dev->config; + struct i2c_eeprom_target_data *data = dev->data; + + return i2c_target_unregister(cfg->bus.bus, &data->config); +} + +static const struct i2c_target_driver_api api_funcs = { + .driver_register = eeprom_target_register, + .driver_unregister = eeprom_target_unregister, +}; + +static const struct i2c_target_callbacks eeprom_callbacks = { + .write_requested = eeprom_target_write_requested, + .read_requested = eeprom_target_read_requested, + .write_received = eeprom_target_write_received, + .read_processed = eeprom_target_read_processed, + .stop = eeprom_target_stop, +}; + +static int i2c_eeprom_target_init(const struct device *dev) +{ + struct i2c_eeprom_target_data *data = dev->data; + const struct i2c_eeprom_target_config *cfg = dev->config; + + if (!device_is_ready(cfg->bus.bus)) { + LOG_ERR("I2C controller device not ready"); + return -ENODEV; + } + + data->buffer_size = cfg->buffer_size; + data->buffer = cfg->buffer; + data->config.address = cfg->bus.addr; + data->config.callbacks = &eeprom_callbacks; + + return 0; +} + +#define I2C_EEPROM_INIT(inst) \ + static struct i2c_eeprom_target_data \ + i2c_eeprom_target_##inst##_dev_data; \ + \ + static uint8_t \ + i2c_eeprom_target_##inst##_buffer[(DT_INST_PROP(inst, size))]; \ + \ + static const struct i2c_eeprom_target_config \ + i2c_eeprom_target_##inst##_cfg = { \ + .bus = I2C_DT_SPEC_INST_GET(inst), \ + .buffer_size = DT_INST_PROP(inst, size), \ + .buffer = i2c_eeprom_target_##inst##_buffer \ + }; \ + \ + DEVICE_DT_INST_DEFINE(inst, \ + &i2c_eeprom_target_init, \ + NULL, \ + &i2c_eeprom_target_##inst##_dev_data, \ + &i2c_eeprom_target_##inst##_cfg, \ + POST_KERNEL, \ + CONFIG_I2C_TARGET_INIT_PRIORITY, \ + &api_funcs); + +DT_INST_FOREACH_STATUS_OKAY(I2C_EEPROM_INIT) diff --git a/drivers/sensor/bmg160/bmg160.c b/drivers/sensor/bmg160/bmg160.c index 0445b73d6fa..a867ced0e70 100644 --- a/drivers/sensor/bmg160/bmg160.c +++ b/drivers/sensor/bmg160/bmg160.c @@ -27,7 +27,7 @@ static inline int bmg160_bus_config(const struct device *dev) const struct bmg160_device_config *dev_cfg = dev->config; uint32_t i2c_cfg; - i2c_cfg = I2C_MODE_MASTER | I2C_SPEED_SET(BMG160_BUS_SPEED); + i2c_cfg = I2C_MODE_CONTROLLER | I2C_SPEED_SET(BMG160_BUS_SPEED); return i2c_configure(dev_cfg->i2c.bus, i2c_cfg); } diff --git a/drivers/sensor/hp206c/hp206c.c b/drivers/sensor/hp206c/hp206c.c index 73ae0d99626..b4458726f83 100644 --- a/drivers/sensor/hp206c/hp206c.c +++ b/drivers/sensor/hp206c/hp206c.c @@ -26,7 +26,7 @@ static inline int hp206c_bus_config(const struct device *dev) const struct hp206c_device_config *cfg = dev->config; uint32_t i2c_cfg; - i2c_cfg = I2C_MODE_MASTER | I2C_SPEED_SET(I2C_SPEED_STANDARD); + i2c_cfg = I2C_MODE_CONTROLLER | I2C_SPEED_SET(I2C_SPEED_STANDARD); return i2c_configure(cfg->i2c.bus, i2c_cfg); } diff --git a/drivers/video/ov2640.c b/drivers/video/ov2640.c index 7643edcb3a1..b9419034100 100644 --- a/drivers/video/ov2640.c +++ b/drivers/video/ov2640.c @@ -1048,7 +1048,7 @@ static int ov2640_init_0(const struct device *dev) return -EINVAL; } - uint32_t i2c_cfg = I2C_MODE_MASTER | + uint32_t i2c_cfg = I2C_MODE_CONTROLLER | I2C_SPEED_SET(I2C_SPEED_STANDARD); if (i2c_configure(drv_data->i2c, i2c_cfg)) { diff --git a/include/zephyr/drivers/i2c.h b/include/zephyr/drivers/i2c.h index ee13a9cd718..6ce48e19a89 100644 --- a/include/zephyr/drivers/i2c.h +++ b/include/zephyr/drivers/i2c.h @@ -58,8 +58,11 @@ extern "C" { /** Use 10-bit addressing. DEPRECATED - Use I2C_MSG_ADDR_10_BITS instead. */ #define I2C_ADDR_10_BITS BIT(0) -/** Controller to act as Controller. */ -#define I2C_MODE_MASTER BIT(4) +/** Peripheral to act as Controller. */ +#define I2C_MODE_CONTROLLER BIT(4) + +/** @deprecated Use I2C_MODE_CONTROLLER instead. */ +#define I2C_MODE_MASTER __DEPRECATED_MACRO BIT(4) /** * @brief Complete I2C DT information @@ -162,7 +165,7 @@ struct i2c_msg { * These are for internal use only, so skip these in * public documentation. */ -struct i2c_slave_config; +struct i2c_target_config; typedef int (*i2c_api_configure_t)(const struct device *dev, uint32_t dev_config); @@ -172,27 +175,27 @@ typedef int (*i2c_api_full_io_t)(const struct device *dev, struct i2c_msg *msgs, uint8_t num_msgs, uint16_t addr); -typedef int (*i2c_api_slave_register_t)(const struct device *dev, - struct i2c_slave_config *cfg); -typedef int (*i2c_api_slave_unregister_t)(const struct device *dev, - struct i2c_slave_config *cfg); +typedef int (*i2c_api_target_register_t)(const struct device *dev, + struct i2c_target_config *cfg); +typedef int (*i2c_api_target_unregister_t)(const struct device *dev, + struct i2c_target_config *cfg); typedef int (*i2c_api_recover_bus_t)(const struct device *dev); __subsystem struct i2c_driver_api { i2c_api_configure_t configure; i2c_api_get_config_t get_config; i2c_api_full_io_t transfer; - i2c_api_slave_register_t slave_register; - i2c_api_slave_unregister_t slave_unregister; + i2c_api_target_register_t target_register; + i2c_api_target_unregister_t target_unregister; i2c_api_recover_bus_t recover_bus; }; -typedef int (*i2c_slave_api_register_t)(const struct device *dev); -typedef int (*i2c_slave_api_unregister_t)(const struct device *dev); +typedef int (*i2c_target_api_register_t)(const struct device *dev); +typedef int (*i2c_target_api_unregister_t)(const struct device *dev); -struct i2c_slave_driver_api { - i2c_slave_api_register_t driver_register; - i2c_slave_api_unregister_t driver_unregister; +struct i2c_target_driver_api { + i2c_target_api_register_t driver_register; + i2c_target_api_unregister_t driver_unregister; }; /** @@ -200,7 +203,7 @@ struct i2c_slave_driver_api { */ /** Target device responds to 10-bit addressing. */ -#define I2C_SLAVE_FLAGS_ADDR_10_BITS BIT(0) +#define I2C_TARGET_FLAGS_ADDR_10_BITS BIT(0) /** @brief Function called when a write to the device is initiated. * @@ -217,8 +220,8 @@ struct i2c_slave_driver_api { * * @return 0 if the write is accepted, or a negative error code. */ -typedef int (*i2c_slave_write_requested_cb_t)( - struct i2c_slave_config *config); +typedef int (*i2c_target_write_requested_cb_t)( + struct i2c_target_config *config); /** @brief Function called when a write to the device is continued. * @@ -238,8 +241,8 @@ typedef int (*i2c_slave_write_requested_cb_t)( * @return 0 if more data can be accepted, or a negative error * code. */ -typedef int (*i2c_slave_write_received_cb_t)( - struct i2c_slave_config *config, uint8_t val); +typedef int (*i2c_target_write_received_cb_t)( + struct i2c_target_config *config, uint8_t val); /** @brief Function called when a read from the device is initiated. * @@ -260,8 +263,8 @@ typedef int (*i2c_slave_write_received_cb_t)( * * @return 0 if more data can be requested, or a negative error code. */ -typedef int (*i2c_slave_read_requested_cb_t)( - struct i2c_slave_config *config, uint8_t *val); +typedef int (*i2c_target_read_requested_cb_t)( + struct i2c_target_config *config, uint8_t *val); /** @brief Function called when a read from the device is continued. * @@ -282,8 +285,8 @@ typedef int (*i2c_slave_read_requested_cb_t)( * * @return 0 if data has been provided, or a negative error code. */ -typedef int (*i2c_slave_read_processed_cb_t)( - struct i2c_slave_config *config, uint8_t *val); +typedef int (*i2c_target_read_processed_cb_t)( + struct i2c_target_config *config, uint8_t *val); /** @brief Function called when a stop condition is observed after a * start condition addressed to a particular device. @@ -299,7 +302,7 @@ typedef int (*i2c_slave_read_processed_cb_t)( * * @return Ignored. */ -typedef int (*i2c_slave_stop_cb_t)(struct i2c_slave_config *config); +typedef int (*i2c_target_stop_cb_t)(struct i2c_target_config *config); /** @brief Structure providing callbacks to be implemented for devices * that supports the I2C target API. @@ -307,37 +310,37 @@ typedef int (*i2c_slave_stop_cb_t)(struct i2c_slave_config *config); * This structure may be shared by multiple devices that implement the * same API at different addresses on the bus. */ -struct i2c_slave_callbacks { - i2c_slave_write_requested_cb_t write_requested; - i2c_slave_read_requested_cb_t read_requested; - i2c_slave_write_received_cb_t write_received; - i2c_slave_read_processed_cb_t read_processed; - i2c_slave_stop_cb_t stop; +struct i2c_target_callbacks { + i2c_target_write_requested_cb_t write_requested; + i2c_target_read_requested_cb_t read_requested; + i2c_target_write_received_cb_t write_received; + i2c_target_read_processed_cb_t read_processed; + i2c_target_stop_cb_t stop; }; /** @brief Structure describing a device that supports the I2C * target API. * - * Instances of this are passed to the i2c_slave_register() and - * i2c_slave_unregister() functions to indicate addition and removal + * Instances of this are passed to the i2c_target_register() and + * i2c_target_unregister() functions to indicate addition and removal * of a target device, respective. * * Fields other than @c node must be initialized by the module that * implements the device behavior prior to passing the object - * reference to i2c_slave_register(). + * reference to i2c_target_register(). */ -struct i2c_slave_config { +struct i2c_target_config { /** Private, do not modify */ sys_snode_t node; - /** Flags for the target device defined by I2C_SLAVE_FLAGS_* constants */ + /** Flags for the target device defined by I2C_TARGET_FLAGS_* constants */ uint8_t flags; /** Address for this target device */ uint16_t address; /** Callback functions */ - const struct i2c_slave_callbacks *callbacks; + const struct i2c_target_callbacks *callbacks; }; #if defined(CONFIG_I2C_STATS) || defined(__DOXYGEN__) @@ -668,17 +671,17 @@ static inline int z_impl_i2c_recover_bus(const struct device *dev) * @retval -EIO General input / output error. * @retval -ENOSYS If target mode is not implemented */ -static inline int i2c_slave_register(const struct device *dev, - struct i2c_slave_config *cfg) +static inline int i2c_target_register(const struct device *dev, + struct i2c_target_config *cfg) { const struct i2c_driver_api *api = (const struct i2c_driver_api *)dev->api; - if (api->slave_register == NULL) { + if (api->target_register == NULL) { return -ENOSYS; } - return api->slave_register(dev, cfg); + return api->target_register(dev, cfg); } /** @@ -697,24 +700,24 @@ static inline int i2c_slave_register(const struct device *dev, * @retval -EINVAL If parameters are invalid * @retval -ENOSYS If target mode is not implemented */ -static inline int i2c_slave_unregister(const struct device *dev, - struct i2c_slave_config *cfg) +static inline int i2c_target_unregister(const struct device *dev, + struct i2c_target_config *cfg) { const struct i2c_driver_api *api = (const struct i2c_driver_api *)dev->api; - if (api->slave_unregister == NULL) { + if (api->target_unregister == NULL) { return -ENOSYS; } - return api->slave_unregister(dev, cfg); + return api->target_unregister(dev, cfg); } /** * @brief Instructs the I2C Target device to register itself to the I2C Controller * * This routine instructs the I2C Target device to register itself to the I2C - * Controller via its parent controller's i2c_slave_register() API. + * Controller via its parent controller's i2c_target_register() API. * * @param dev Pointer to the device structure for the I2C target * device (not itself an I2C controller). @@ -723,12 +726,12 @@ static inline int i2c_slave_unregister(const struct device *dev, * @retval -EINVAL If parameters are invalid * @retval -EIO General input / output error. */ -__syscall int i2c_slave_driver_register(const struct device *dev); +__syscall int i2c_target_driver_register(const struct device *dev); -static inline int z_impl_i2c_slave_driver_register(const struct device *dev) +static inline int z_impl_i2c_target_driver_register(const struct device *dev) { - const struct i2c_slave_driver_api *api = - (const struct i2c_slave_driver_api *)dev->api; + const struct i2c_target_driver_api *api = + (const struct i2c_target_driver_api *)dev->api; return api->driver_register(dev); } @@ -738,7 +741,7 @@ static inline int z_impl_i2c_slave_driver_register(const struct device *dev) * Controller * * This routine instructs the I2C Target device to unregister itself from the I2C - * Controller via its parent controller's i2c_slave_register() API. + * Controller via its parent controller's i2c_target_register() API. * * @param dev Pointer to the device structure for the I2C target * device (not itself an I2C controller). @@ -746,12 +749,12 @@ static inline int z_impl_i2c_slave_driver_register(const struct device *dev) * @retval 0 Is successful * @retval -EINVAL If parameters are invalid */ -__syscall int i2c_slave_driver_unregister(const struct device *dev); +__syscall int i2c_target_driver_unregister(const struct device *dev); -static inline int z_impl_i2c_slave_driver_unregister(const struct device *dev) +static inline int z_impl_i2c_target_driver_unregister(const struct device *dev) { - const struct i2c_slave_driver_api *api = - (const struct i2c_slave_driver_api *)dev->api; + const struct i2c_target_driver_api *api = + (const struct i2c_target_driver_api *)dev->api; return api->driver_unregister(dev); } @@ -1203,19 +1206,19 @@ void i2c_dump_msgs(const char *name, const struct i2c_msg *msgs, uint8_t num_msgs, uint16_t addr); struct i2c_client_config { - char *i2c_master; + char *i2c_controller; uint16_t i2c_addr; }; #define I2C_DECLARE_CLIENT_CONFIG struct i2c_client_config i2c_client -#define I2C_CLIENT(_master, _addr) \ +#define I2C_CLIENT(_controller, _addr) \ .i2c_client = { \ - .i2c_master = (_master), \ + .i2c_controller = (_controller), \ .i2c_addr = (_addr), \ } -#define I2C_GET_MASTER(_conf) ((_conf)->i2c_client.i2c_master) +#define I2C_GET_CONTROLLER(_conf) ((_conf)->i2c_client.i2c_controller) #define I2C_GET_ADDR(_conf) ((_conf)->i2c_client.i2c_addr) #ifdef __cplusplus diff --git a/include/zephyr/drivers/i2c/slave/eeprom.h b/include/zephyr/drivers/i2c/target/eeprom.h similarity index 66% rename from include/zephyr/drivers/i2c/slave/eeprom.h rename to include/zephyr/drivers/i2c/target/eeprom.h index 02deaf71636..2d2a554a7f3 100644 --- a/include/zephyr/drivers/i2c/slave/eeprom.h +++ b/include/zephyr/drivers/i2c/target/eeprom.h @@ -1,7 +1,7 @@ /** * @file * - * @brief Public APIs for the I2C EEPROM Slave driver. + * @brief Public APIs for the I2C EEPROM Target driver. */ /* @@ -9,12 +9,12 @@ * * SPDX-License-Identifier: Apache-2.0 */ -#ifndef ZEPHYR_INCLUDE_DRIVERS_I2C_SLAVE_EEPROM_H_ -#define ZEPHYR_INCLUDE_DRIVERS_I2C_SLAVE_EEPROM_H_ +#ifndef ZEPHYR_INCLUDE_DRIVERS_I2C_TARGET_EEPROM_H_ +#define ZEPHYR_INCLUDE_DRIVERS_I2C_TARGET_EEPROM_H_ /** - * @brief I2C EEPROM Slave Driver API - * @defgroup i2c_eeprom_slave_api I2C EEPROM Slave Driver API + * @brief I2C EEPROM Target Driver API + * @defgroup i2c_eeprom_target_api I2C EEPROM Target Driver API * @ingroup io_interfaces * @{ */ @@ -29,7 +29,7 @@ * @retval 0 If successful. * @retval -EINVAL Invalid data size */ -int eeprom_slave_program(const struct device *dev, const uint8_t *eeprom_data, +int eeprom_target_program(const struct device *dev, const uint8_t *eeprom_data, unsigned int length); /** @@ -42,11 +42,11 @@ int eeprom_slave_program(const struct device *dev, const uint8_t *eeprom_data, * @retval 0 If successful. * @retval -EINVAL Invalid data pointer or offset */ -int eeprom_slave_read(const struct device *dev, uint8_t *eeprom_data, +int eeprom_target_read(const struct device *dev, uint8_t *eeprom_data, unsigned int offset); /** * @} */ -#endif /* ZEPHYR_INCLUDE_DRIVERS_I2C_SLAVE_EEPROM_H_ */ +#endif /* ZEPHYR_INCLUDE_DRIVERS_I2C_TARGET_EEPROM_H_ */ diff --git a/tests/boards/altera_max10/i2c_master/src/i2c_master.c b/tests/boards/altera_max10/i2c_master/src/i2c_master.c index 85149e5bbdd..13e0b463870 100644 --- a/tests/boards/altera_max10/i2c_master/src/i2c_master.c +++ b/tests/boards/altera_max10/i2c_master/src/i2c_master.c @@ -67,7 +67,7 @@ static int test_i2c_adv7513(void) { const struct device *i2c_dev = device_get_binding(DT_LABEL(DT_INST(0, altr_nios2_i2c))); - uint32_t i2c_cfg = I2C_SPEED_SET(I2C_SPEED_STANDARD) | I2C_MODE_MASTER; + uint32_t i2c_cfg = I2C_SPEED_SET(I2C_SPEED_STANDARD) | I2C_MODE_CONTROLLER; uint8_t data; if (!i2c_dev) { diff --git a/tests/boards/mec15xxevb_assy6853/i2c_api/src/main.c b/tests/boards/mec15xxevb_assy6853/i2c_api/src/main.c index c903b96688b..2cdb0bf2cd9 100644 --- a/tests/boards/mec15xxevb_assy6853/i2c_api/src/main.c +++ b/tests/boards/mec15xxevb_assy6853/i2c_api/src/main.c @@ -28,7 +28,7 @@ void test_i2c_pca95xx(void) { int32_t ret; uint8_t datas[3]; - uint32_t i2c_cfg = I2C_SPEED_SET(I2C_SPEED_STANDARD) | I2C_MODE_MASTER; + uint32_t i2c_cfg = I2C_SPEED_SET(I2C_SPEED_STANDARD) | I2C_MODE_CONTROLLER; /* get i2c device */ const struct device *i2c_dev = device_get_binding(I2C_DEV_NAME); diff --git a/tests/drivers/eeprom/src/main.c b/tests/drivers/eeprom/src/main.c index f0f728e5033..335da37bbb0 100644 --- a/tests/drivers/eeprom/src/main.c +++ b/tests/drivers/eeprom/src/main.c @@ -196,7 +196,7 @@ static void run_tests_on_eeprom(const char *label_eeprom, const char *label_i2c) if (i2c != NULL) { /* If the test is using I2C, configure it */ k_object_access_grant(i2c, k_current_get()); - i2c_configure(i2c, I2C_MODE_MASTER | + i2c_configure(i2c, I2C_MODE_CONTROLLER | I2C_SPEED_SET(I2C_SPEED_STANDARD)); } } diff --git a/tests/drivers/i2c/i2c_api/src/test_i2c.c b/tests/drivers/i2c/i2c_api/src/test_i2c.c index 0d3aee6f205..6e525ae8527 100644 --- a/tests/drivers/i2c/i2c_api/src/test_i2c.c +++ b/tests/drivers/i2c/i2c_api/src/test_i2c.c @@ -26,7 +26,7 @@ #error "Please set the correct I2C device" #endif -uint32_t i2c_cfg = I2C_SPEED_SET(I2C_SPEED_STANDARD) | I2C_MODE_MASTER; +uint32_t i2c_cfg = I2C_SPEED_SET(I2C_SPEED_STANDARD) | I2C_MODE_CONTROLLER; static int test_gy271(void) { diff --git a/tests/drivers/i2c/i2c_slave_api/Kconfig b/tests/drivers/i2c/i2c_slave_api/Kconfig deleted file mode 100644 index 39fe2bc3ce2..00000000000 --- a/tests/drivers/i2c/i2c_slave_api/Kconfig +++ /dev/null @@ -1,7 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -mainmenu "I2C Slave API Test" - -source "Kconfig.zephyr" - -source "tests/drivers/i2c/i2c_slave_api/common/Kconfig" diff --git a/tests/drivers/i2c/i2c_slave_api/boards/rpi_pico.conf b/tests/drivers/i2c/i2c_slave_api/boards/rpi_pico.conf deleted file mode 100644 index 9f1a61ddd97..00000000000 --- a/tests/drivers/i2c/i2c_slave_api/boards/rpi_pico.conf +++ /dev/null @@ -1,2 +0,0 @@ -CONFIG_I2C=y -CONFIG_I2C_SLAVE=y diff --git a/tests/drivers/i2c/i2c_slave_api/CMakeLists.txt b/tests/drivers/i2c/i2c_target_api/CMakeLists.txt similarity index 100% rename from tests/drivers/i2c/i2c_slave_api/CMakeLists.txt rename to tests/drivers/i2c/i2c_target_api/CMakeLists.txt diff --git a/tests/drivers/i2c/i2c_target_api/Kconfig b/tests/drivers/i2c/i2c_target_api/Kconfig new file mode 100644 index 00000000000..a6343c815b3 --- /dev/null +++ b/tests/drivers/i2c/i2c_target_api/Kconfig @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: Apache-2.0 + +mainmenu "I2C Target API Test" + +source "Kconfig.zephyr" + +source "tests/drivers/i2c/i2c_target_api/common/Kconfig" diff --git a/tests/drivers/i2c/i2c_slave_api/README.txt b/tests/drivers/i2c/i2c_target_api/README.txt similarity index 76% rename from tests/drivers/i2c/i2c_slave_api/README.txt rename to tests/drivers/i2c/i2c_target_api/README.txt index 316ebcec31b..4624da97c5e 100644 --- a/tests/drivers/i2c/i2c_slave_api/README.txt +++ b/tests/drivers/i2c/i2c_target_api/README.txt @@ -1,19 +1,19 @@ -I2C Slave API test +I2C Target API test ################## .. note: See :ref:`coding_guideline_inclusive_language` for information about plans to change the terminology used in this API. -This test verifies I2C slave driver implementations using two I2C +This test verifies I2C target driver implementations using two I2C controllers on a common bus. The test is supported by a test-specific -driver that simulates an EEPROM with an I2C bus slave interface. Data +driver that simulates an EEPROM with an I2C bus target interface. Data is pre-loaded into the simulated devices outside the I2C API, and the Zephyr application issues commands to one controller that are responded to by the simulated EEPROM connected through the other controller. This test was originally designed for I2C controllers that support both -master and slave behavior simultaneously. This is not true of all +controller and target behavior simultaneously. This is not true of all I2C controllers, so this behavior is now opt-in using CONFIG_APP_DUAL_ROLE_I2C. However, the devicetree still must provide a second EEPROM just to identify the bus. @@ -22,11 +22,11 @@ In slightly more detail the test has these phases: * Use API specific to the simulated EEPROM to pre-populate the simulated devices with device-specific content. -* Register a simulated EEPROM as a I2C slave device on a bus. If +* Register a simulated EEPROM as a I2C target device on a bus. If CONFIG_APP_DUAL_ROLE_I2C is selected, register both. -* Issue commands on one bus controller (operating as the bus master) and - verify that the data supplied by the other controller (slave) match +* Issue commands on one bus controller (operating as the bus controller) and + verify that the data supplied by the other controller (target) match the expected values given the content known to be present on the simulated device. If CONFIG_APP_DUAL_ROLE_I2C is selected, do this with the roles reversed. diff --git a/tests/drivers/i2c/i2c_slave_api/boards/mec1501modular_assy6885.overlay b/tests/drivers/i2c/i2c_target_api/boards/mec1501modular_assy6885.overlay similarity index 100% rename from tests/drivers/i2c/i2c_slave_api/boards/mec1501modular_assy6885.overlay rename to tests/drivers/i2c/i2c_target_api/boards/mec1501modular_assy6885.overlay diff --git a/tests/drivers/i2c/i2c_slave_api/boards/nucleo_f091rc.conf b/tests/drivers/i2c/i2c_target_api/boards/nucleo_f091rc.conf similarity index 100% rename from tests/drivers/i2c/i2c_slave_api/boards/nucleo_f091rc.conf rename to tests/drivers/i2c/i2c_target_api/boards/nucleo_f091rc.conf diff --git a/tests/drivers/i2c/i2c_slave_api/boards/nucleo_f091rc.overlay b/tests/drivers/i2c/i2c_target_api/boards/nucleo_f091rc.overlay similarity index 100% rename from tests/drivers/i2c/i2c_slave_api/boards/nucleo_f091rc.overlay rename to tests/drivers/i2c/i2c_target_api/boards/nucleo_f091rc.overlay diff --git a/tests/drivers/i2c/i2c_slave_api/boards/nucleo_g071rb.conf b/tests/drivers/i2c/i2c_target_api/boards/nucleo_g071rb.conf similarity index 100% rename from tests/drivers/i2c/i2c_slave_api/boards/nucleo_g071rb.conf rename to tests/drivers/i2c/i2c_target_api/boards/nucleo_g071rb.conf diff --git a/tests/drivers/i2c/i2c_slave_api/boards/nucleo_g071rb.overlay b/tests/drivers/i2c/i2c_target_api/boards/nucleo_g071rb.overlay similarity index 100% rename from tests/drivers/i2c/i2c_slave_api/boards/nucleo_g071rb.overlay rename to tests/drivers/i2c/i2c_target_api/boards/nucleo_g071rb.overlay diff --git a/tests/drivers/i2c/i2c_slave_api/boards/nucleo_l476rg.conf b/tests/drivers/i2c/i2c_target_api/boards/nucleo_l476rg.conf similarity index 100% rename from tests/drivers/i2c/i2c_slave_api/boards/nucleo_l476rg.conf rename to tests/drivers/i2c/i2c_target_api/boards/nucleo_l476rg.conf diff --git a/tests/drivers/i2c/i2c_slave_api/boards/nucleo_l476rg.overlay b/tests/drivers/i2c/i2c_target_api/boards/nucleo_l476rg.overlay similarity index 100% rename from tests/drivers/i2c/i2c_slave_api/boards/nucleo_l476rg.overlay rename to tests/drivers/i2c/i2c_target_api/boards/nucleo_l476rg.overlay diff --git a/tests/drivers/i2c/i2c_target_api/boards/rpi_pico.conf b/tests/drivers/i2c/i2c_target_api/boards/rpi_pico.conf new file mode 100644 index 00000000000..f3d64527b85 --- /dev/null +++ b/tests/drivers/i2c/i2c_target_api/boards/rpi_pico.conf @@ -0,0 +1,2 @@ +CONFIG_I2C=y +CONFIG_I2C_TARGET=y diff --git a/tests/drivers/i2c/i2c_slave_api/boards/rpi_pico.overlay b/tests/drivers/i2c/i2c_target_api/boards/rpi_pico.overlay similarity index 100% rename from tests/drivers/i2c/i2c_slave_api/boards/rpi_pico.overlay rename to tests/drivers/i2c/i2c_target_api/boards/rpi_pico.overlay diff --git a/tests/drivers/i2c/i2c_slave_api/boards/stm32f072b_disco.conf b/tests/drivers/i2c/i2c_target_api/boards/stm32f072b_disco.conf similarity index 100% rename from tests/drivers/i2c/i2c_slave_api/boards/stm32f072b_disco.conf rename to tests/drivers/i2c/i2c_target_api/boards/stm32f072b_disco.conf diff --git a/tests/drivers/i2c/i2c_slave_api/boards/stm32f072b_disco.overlay b/tests/drivers/i2c/i2c_target_api/boards/stm32f072b_disco.overlay similarity index 100% rename from tests/drivers/i2c/i2c_slave_api/boards/stm32f072b_disco.overlay rename to tests/drivers/i2c/i2c_target_api/boards/stm32f072b_disco.overlay diff --git a/tests/drivers/i2c/i2c_slave_api/common/CMakeLists.txt b/tests/drivers/i2c/i2c_target_api/common/CMakeLists.txt similarity index 100% rename from tests/drivers/i2c/i2c_slave_api/common/CMakeLists.txt rename to tests/drivers/i2c/i2c_target_api/common/CMakeLists.txt diff --git a/tests/drivers/i2c/i2c_slave_api/common/Kconfig b/tests/drivers/i2c/i2c_target_api/common/Kconfig similarity index 64% rename from tests/drivers/i2c/i2c_slave_api/common/Kconfig rename to tests/drivers/i2c/i2c_target_api/common/Kconfig index faa12792c01..b516534a8e1 100644 --- a/tests/drivers/i2c/i2c_slave_api/common/Kconfig +++ b/tests/drivers/i2c/i2c_target_api/common/Kconfig @@ -1,14 +1,14 @@ -# I2C slave tests common configuration options +# I2C target tests common configuration options # Copyright (c) 2017 BayLibre, SAS # SPDX-License-Identifier: Apache-2.0 config I2C_VIRTUAL - bool "Virtual I2C Driver for Slave development" + bool "Virtual I2C Driver for Target development" depends on I2C help This driver exposes a virtual I2C driver used to debug virtual - I2C slave drivers. + I2C target drivers. config I2C_VIRTUAL_NAME string "Virtual Port device name" @@ -16,4 +16,4 @@ config I2C_VIRTUAL_NAME depends on I2C_VIRTUAL config APP_DUAL_ROLE_I2C - bool "Test with combined master/slave behavior" + bool "Test with combined controller/target behavior" diff --git a/tests/drivers/i2c/i2c_slave_api/common/i2c_virtual.c b/tests/drivers/i2c/i2c_target_api/common/i2c_virtual.c similarity index 77% rename from tests/drivers/i2c/i2c_slave_api/common/i2c_virtual.c rename to tests/drivers/i2c/i2c_target_api/common/i2c_virtual.c index 47180b2bd9c..d8833b69c0a 100644 --- a/tests/drivers/i2c/i2c_slave_api/common/i2c_virtual.c +++ b/tests/drivers/i2c/i2c_target_api/common/i2c_virtual.c @@ -16,7 +16,7 @@ LOG_MODULE_DECLARE(main); struct i2c_virtual_data { - sys_slist_t slaves; + sys_slist_t targets; }; int i2c_virtual_runtime_configure(const struct device *dev, uint32_t config) @@ -24,17 +24,17 @@ int i2c_virtual_runtime_configure(const struct device *dev, uint32_t config) return 0; } -static struct i2c_slave_config *find_address(struct i2c_virtual_data *data, +static struct i2c_target_config *find_address(struct i2c_virtual_data *data, uint16_t address, bool is_10bit) { - struct i2c_slave_config *cfg = NULL; + struct i2c_target_config *cfg = NULL; sys_snode_t *node; bool search_10bit; - SYS_SLIST_FOR_EACH_NODE(&data->slaves, node) { - cfg = CONTAINER_OF(node, struct i2c_slave_config, node); + SYS_SLIST_FOR_EACH_NODE(&data->targets, node) { + cfg = CONTAINER_OF(node, struct i2c_target_config, node); - search_10bit = (cfg->flags & I2C_SLAVE_FLAGS_ADDR_10_BITS); + search_10bit = (cfg->flags & I2C_TARGET_FLAGS_ADDR_10_BITS); if (cfg->address == address && search_10bit == is_10bit) { return cfg; @@ -44,9 +44,9 @@ static struct i2c_slave_config *find_address(struct i2c_virtual_data *data, return NULL; } -/* Attach I2C slaves */ -int i2c_virtual_slave_register(const struct device *dev, - struct i2c_slave_config *config) +/* Attach I2C targets */ +int i2c_virtual_target_register(const struct device *dev, + struct i2c_target_config *config) { struct i2c_virtual_data *data = dev->data; @@ -56,18 +56,18 @@ int i2c_virtual_slave_register(const struct device *dev, /* Check the address is unique */ if (find_address(data, config->address, - (config->flags & I2C_SLAVE_FLAGS_ADDR_10_BITS))) { + (config->flags & I2C_TARGET_FLAGS_ADDR_10_BITS))) { return -EINVAL; } - sys_slist_append(&data->slaves, &config->node); + sys_slist_append(&data->targets, &config->node); return 0; } -int i2c_virtual_slave_unregister(const struct device *dev, - struct i2c_slave_config *config) +int i2c_virtual_target_unregister(const struct device *dev, + struct i2c_target_config *config) { struct i2c_virtual_data *data = dev->data; @@ -75,7 +75,7 @@ int i2c_virtual_slave_unregister(const struct device *dev, return -EINVAL; } - if (!sys_slist_find_and_remove(&data->slaves, &config->node)) { + if (!sys_slist_find_and_remove(&data->targets, &config->node)) { return -EINVAL; } @@ -84,7 +84,7 @@ int i2c_virtual_slave_unregister(const struct device *dev, static int i2c_virtual_msg_write(const struct device *dev, struct i2c_msg *msg, - struct i2c_slave_config *config, + struct i2c_target_config *config, bool prev_write) { unsigned int len = 0U; @@ -118,7 +118,7 @@ error: } static int i2c_virtual_msg_read(const struct device *dev, struct i2c_msg *msg, - struct i2c_slave_config *config) + struct i2c_target_config *config) { unsigned int len = msg->len; uint8_t *buf = msg->buf; @@ -147,15 +147,15 @@ static int i2c_virtual_msg_read(const struct device *dev, struct i2c_msg *msg, #define OPERATION(msg) (((struct i2c_msg *) msg)->flags & I2C_MSG_RW_MASK) static int i2c_virtual_transfer(const struct device *dev, struct i2c_msg *msg, - uint8_t num_msgs, uint16_t slave) + uint8_t num_msgs, uint16_t target) { struct i2c_virtual_data *data = dev->data; struct i2c_msg *current, *next; - struct i2c_slave_config *cfg; + struct i2c_target_config *cfg; bool is_write = false; int ret = 0; - cfg = find_address(data, slave, (msg->flags & I2C_SLAVE_FLAGS_ADDR_10_BITS)); + cfg = find_address(data, target, (msg->flags & I2C_TARGET_FLAGS_ADDR_10_BITS)); if (!cfg) { return -EIO; } @@ -207,15 +207,15 @@ static int i2c_virtual_transfer(const struct device *dev, struct i2c_msg *msg, static const struct i2c_driver_api api_funcs = { .configure = i2c_virtual_runtime_configure, .transfer = i2c_virtual_transfer, - .slave_register = i2c_virtual_slave_register, - .slave_unregister = i2c_virtual_slave_unregister, + .target_register = i2c_virtual_target_register, + .target_unregister = i2c_virtual_target_unregister, }; static int i2c_virtual_init(const struct device *dev) { struct i2c_virtual_data *data = dev->data; - sys_slist_init(&data->slaves); + sys_slist_init(&data->targets); return 0; } diff --git a/tests/drivers/i2c/i2c_slave_api/prj.conf b/tests/drivers/i2c/i2c_target_api/prj.conf similarity index 70% rename from tests/drivers/i2c/i2c_slave_api/prj.conf rename to tests/drivers/i2c/i2c_target_api/prj.conf index 3c467d02195..b79f33ce0a9 100644 --- a/tests/drivers/i2c/i2c_slave_api/prj.conf +++ b/tests/drivers/i2c/i2c_target_api/prj.conf @@ -3,6 +3,6 @@ CONFIG_I2C_LOG_LEVEL_INF=y CONFIG_BOOT_BANNER=y CONFIG_ZTEST=y CONFIG_I2C=y -CONFIG_I2C_SLAVE=y -CONFIG_I2C_EEPROM_SLAVE=y +CONFIG_I2C_TARGET=y +CONFIG_I2C_EEPROM_TARGET=y CONFIG_I2C_VIRTUAL=y diff --git a/tests/drivers/i2c/i2c_slave_api/src/main.c b/tests/drivers/i2c/i2c_target_api/src/main.c similarity index 90% rename from tests/drivers/i2c/i2c_slave_api/src/main.c rename to tests/drivers/i2c/i2c_target_api/src/main.c index 62a4bf02646..d1dea7f4903 100644 --- a/tests/drivers/i2c/i2c_slave_api/src/main.c +++ b/tests/drivers/i2c/i2c_target_api/src/main.c @@ -14,7 +14,7 @@ #include #include -#include +#include #include @@ -132,7 +132,7 @@ static int run_program_read(const struct device *i2c, uint8_t addr, return 0; } -void test_eeprom_slave(void) +void test_eeprom_target(void) { const char *label_0 = DT_LABEL(NODE_EP0); const struct device *eeprom_0 = device_get_binding(label_0); @@ -167,29 +167,29 @@ void test_eeprom_slave(void) /* Program differentiable data into the two devices through a back door * that doesn't use I2C. */ - ret = eeprom_slave_program(eeprom_0, eeprom_0_data, TEST_DATA_SIZE); + ret = eeprom_target_program(eeprom_0, eeprom_0_data, TEST_DATA_SIZE); zassert_equal(ret, 0, "Failed to program EEPROM %s", label_0); if (IS_ENABLED(CONFIG_APP_DUAL_ROLE_I2C)) { - ret = eeprom_slave_program(eeprom_1, eeprom_1_data, + ret = eeprom_target_program(eeprom_1, eeprom_1_data, TEST_DATA_SIZE); zassert_equal(ret, 0, "Failed to program EEPROM %s", label_1); } - /* Attach each EEPROM to its owning bus as a slave device. */ - ret = i2c_slave_driver_register(eeprom_0); + /* Attach each EEPROM to its owning bus as a target device. */ + ret = i2c_target_driver_register(eeprom_0); zassert_equal(ret, 0, "Failed to register EEPROM %s", label_0); if (IS_ENABLED(CONFIG_APP_DUAL_ROLE_I2C)) { - ret = i2c_slave_driver_register(eeprom_1); + ret = i2c_target_driver_register(eeprom_1); zassert_equal(ret, 0, "Failed to register EEPROM %s", label_1); } - /* The simulated EP0 is configured to be accessed as a slave device + /* The simulated EP0 is configured to be accessed as a target device * at addr_0 on i2c_0 and should expose eeprom_0_data. The validation * uses i2c_1 as a bus master to access this device, which works because * i2c_0 and i2_c have their SDA (SCL) pins shorted (they are on the * same physical bus). Thus in these calls i2c_1 is a master device - * operating on the slave address addr_0. + * operating on the target address addr_0. * * Similarly validation of EP1 uses i2c_0 as a master with addr_1 and * eeprom_1_data for validation. @@ -226,11 +226,11 @@ void test_eeprom_slave(void) } /* Detach EEPROM */ - ret = i2c_slave_driver_unregister(eeprom_0); + ret = i2c_target_driver_unregister(eeprom_0); zassert_equal(ret, 0, "Failed to unregister EEPROM %s", label_0); if (IS_ENABLED(CONFIG_APP_DUAL_ROLE_I2C)) { - ret = i2c_slave_driver_unregister(eeprom_1); + ret = i2c_target_driver_unregister(eeprom_1); zassert_equal(ret, 0, "Failed to unregister EEPROM %s", label_1); } @@ -238,6 +238,6 @@ void test_eeprom_slave(void) void test_main(void) { - ztest_test_suite(test_eeprom_slave, ztest_unit_test(test_eeprom_slave)); - ztest_run_test_suite(test_eeprom_slave); + ztest_test_suite(test_eeprom_target, ztest_unit_test(test_eeprom_target)); + ztest_run_test_suite(test_eeprom_target); } diff --git a/tests/drivers/i2c/i2c_slave_api/testcase.yaml b/tests/drivers/i2c/i2c_target_api/testcase.yaml similarity index 87% rename from tests/drivers/i2c/i2c_slave_api/testcase.yaml rename to tests/drivers/i2c/i2c_target_api/testcase.yaml index f84ff4a9dbc..2f95362d39f 100644 --- a/tests/drivers/i2c/i2c_slave_api/testcase.yaml +++ b/tests/drivers/i2c/i2c_target_api/testcase.yaml @@ -6,7 +6,7 @@ common: fixture: i2c_bus_short tests: - drivers.i2c.slave_api.dual_role: + drivers.i2c.target_api.dual_role: platform_allow: nucleo_f091rc stm32f072b_disco nucleo_g071rb rpi_pico extra_configs: - CONFIG_APP_DUAL_ROLE_I2C=y