Commit Graph

1285 Commits

Author SHA1 Message Date
Ayush Singh
4c3491d8a4 drivers: i2c: omap: Fix for RAM MMIO
- RAM MMIO is initialized using DEVICE_MMIO_MAP. So add it to init code.

Signed-off-by: Ayush Singh <ayush@beagleboard.org>
2025-05-23 11:04:00 +02:00
Ayush Singh
d4ee678fe3 drivers: i2c: omap: Use non-named mmio macros
- Since only one mmio region is used, use the non-named macros

Signed-off-by: Ayush Singh <ayush@beagleboard.org>
2025-05-23 11:04:00 +02:00
Ayush Singh
9db744ba06 drivers: i2c: omap: Use DEVICE_MMIO macro for registers
- Use DEVICE_MMIO_* macros for getting the registers.
- These macros automatically used the proper RAM/ROM address.

Signed-off-by: Ayush Singh <ayush@beagleboard.org>
2025-05-23 11:04:00 +02:00
Yuval Peress
6c73b5813f i2c: npcx: Loosen requirements for target registration
Allow NPCX_I2C_ERROR_RECOVERY as a valid state when registering a
target.

Signed-off-by: Yuval Peress <peress@google.com>
2025-05-22 23:57:08 +02:00
Yuval Peress
270c98bc23 i2c: npcx: Improve error logging
Add the device name to the error logs so we can differentiate which
device caused the error and not just which port.

Signed-off-by: Yuval Peress <peress@google.com>
2025-05-22 23:57:08 +02:00
Yuval Peress
27f6bc861c i2c: npcx: Remove erroneous debug messages
When enabling I2C debug logging these messages make it impossible to
see what's going on.

Signed-off-by: Yuval Peress <peress@google.com>
2025-05-22 23:57:08 +02:00
Guillaume Gautier
b2f8496389 drivers: i2c: stm32 i2cv1 controller driver using rtio
Adds the simplest possible I2Cv1 controller driver for STM32 with the RTIO
interface. Currently only interrupt driven transfers are supported.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2025-05-22 20:56:28 +02:00
Guillaume Gautier
e8bd35e305 drivers: i2c: stm32 i2cv2 controller driver using rtio
Adds the simplest possible I2Cv2 controller driver for STM32 with the RTIO
interface. Currently only interrupt driven transfers are supported.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
Co-authored-by: Tom Burdick <thomas.burdick@intel.com>
2025-05-22 20:56:28 +02:00
Guillaume Gautier
2397a6322f drivers: i2c: move functions to a common file
In preparation of the introduction of the STM32 I2Cv2 RTIO driver, move
some functions that are used in both drivers into a common file.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2025-05-22 20:56:28 +02:00
Guillaume Gautier
0c59977195 drivers: i2c: renaming, formatting and clean up
Rename all functions and macros starting by stm32_i2c_* to i2c_stm32_* to
harmonize the driver.
Reformat some indents for better alignment.
Remove i2c_stm32_get_config function declaration from header since it is
not used.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2025-05-22 20:56:28 +02:00
Alberto Escolar Piedras
5d31bce072 drivers/i2c/i2c_ambiq: Fix code compliance issues
Fix 4 issues detected by checkpatch

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2025-05-21 12:35:28 +02:00
Burak Babaoglu
9de258c50f drivers: i2c: Update driver to enable I2C for MAX32650 SoC
This commit adds new wrapper functions into driver to handle
differences of MAX32650 SoC.

Signed-off-by: Burak Babaoglu <burak.babaoglu@analog.com>
2025-05-14 11:03:22 +01:00
Hao Luo
d89c61bd64 drivers: iom: define ambiq spi/i2c dma mode as a binding property
Changed to define ambiq spi/i2c dma mode as a binding property
instead of kconfig macros, making it more flexible for different
spi/i2c instances.

Signed-off-by: Hao Luo <hluo@ambiq.com>
2025-05-13 16:23:26 +02:00
Swift Tian
389103dfec drivers: ambiq: rework ambiq spi and i2c drivers cache handling
1. rework IOM cmdq buffer instantiation
2. rework spi and i2c cache handling as it is incorrect.
3. buffers need to be aligned with DCACHE on

Signed-off-by: Swift Tian <swift.tian@ambiq.com>
2025-05-08 14:00:52 +02:00
Tim Lin
f7d381fef1 drivers/i2c: Add I2C driver of it51xxx
Implement the functions of I2C host and target.
I2CM: supports nine hosts and each one able located at I2C interface
      0~12.
      supports two 32 bytes dedicated FIFO mode for read and write.
I2CS: supports three targets and each one able located at I2C
      interface 0~8.
      supports 16 bytes dedicated FIFO mode that only supports write or
      read mode and the maximum buffer size is 256 bytes.
      support non-FIFO write to shared FIFO read mode. The maximum
      shared FIFO size for read is 256 bytes.
The APIs test include: i2c_write(), i2c_read(), i2c_burst_read(),
                       i2c_burst_write(), i2c_write_read()

Signed-off-by: Tim Lin <tim2.lin@ite.corp-partner.google.com>
2025-04-29 16:48:06 +02:00
Bjarki Arge Andreasen
4bd1de02bb drivers: i2c: nrfx_twi_rtio: support RTIO_OP_AWAIT
Add support for RTIO_OP_AWAIT.

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
2025-04-29 16:47:26 +02:00
Bjarki Arge Andreasen
61e838b246 drivers: i2c: nrfx_twim_rtio: support RTIO_OP_AWAIT
Add support for RTIO_OP_AWAIT.

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
2025-04-29 16:47:26 +02:00
Derek Snell
5ff676f9fa drivers: i2c_mcux_flexcomm: adds PM TURN_ON low-power recovery support
Enables Sleep mode (PM3) in RW61x.

Signed-off-by: Derek Snell <derek.snell@nxp.com>
2025-04-25 18:59:57 +02:00
Simon Gilbert
5c04df9127 i2c: stm32: add DMA callback stubs to avoid nullptr calls in ISR context
Add stub functions for the I2C DMA callbacks, which are invoked
during or upon completion of DMA-based I2C transactions. Without
these, NULL pointer calls occur on DMA transfer complete or error
events, leading to faults within ISR context.

Signed-off-by: Simon Gilbert <srdgilbert@gmail.com>
2025-04-22 15:04:11 +02:00
Simon Gilbert
4348be608d i2c: stm32: add missing DMA configuration fields
Add missing fields for DMA tx and rx configuration macros

Signed-off-by: Simon Gilbert <srdgilbert@gmail.com>
2025-04-22 15:04:11 +02:00
Tahsin Mutlugun
c1c31e68b5 drivers: i2c_rtio: max32: Inform the rtio executor on errors
Call i2c_rtio_complete with a non-zero status code in case of an error
so that application does not get stuck waiting for the completion queue
event. An example to this situation could be an I2C target device
responding with a NACK to a read or write request by the controller.

Signed-off-by: Tahsin Mutlugun <Tahsin.Mutlugun@analog.com>
2025-04-22 12:10:12 +02:00
Steven Chang
95edcf70fc driver: i2c: ene_kb1200 i2c slave address
Fix slave address,
Notify transfer completion via semaphore

Signed-off-by: Steven Chang <steven@ene.com.tw>
2025-04-22 09:58:32 +02:00
Brandon Hurst
7ae44ec850 drivers: i2c: i2c_max32.c: Fix handling of 0-length I2C scan transactions
The I2C shell allows a user to input "i2c scan i2c0" for instance, to
scan addresses on the i2c0 bus enabled in DT. This currently causes
an infinite loop when CONFIG_I2C_MAX32_INTERRUPT is enabled.
The infinite loops happens because 0-length transactions
(tx_len == rx_len == 0) not being handled both by the Async
i2c_max32_transfer and by the controller ISR.

This commit makes two changes:
1) [ISR] When an address ACK is received, if there is simply no data to
send or receive, then just give up the semaphore, preventing the
i2c_max32_transfer function from waiting infinitely.
2) [i2c_max32_transfer] After getting the semaphore back, if there is no
data to send or receive, then avoid waiting for the BUSY flag to clear
since clock stretching should not occur by definition for transactions
which merely contain an address ACK.

Signed-off-by: Brandon Hurst <brandon.hurst@analog.com>
2025-04-22 04:34:28 +02:00
Luis Ubieda
a6c76c4dd9 drivers: i2c_rtio: max32: fix i2c_configure to return 0 on success
To comply with the API definition. This was caught by running i2c_ram
test.

Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-04-22 04:33:42 +02:00
Andrei-Edward Popa
e4c2cecb7d drivers: i2c: added wch i2c driver
added i2c driver for wch platforms

Signed-off-by: Andrei-Edward Popa <andrei.popa105@yahoo.com>
2025-04-17 21:17:06 +02:00
Tim Lin
db4344b06b drivers/i2c: ite: Use i2c_bitbang API for bus recovery
Replace the manually implemented GPIO-based I2C recovery logic
with Zephyr's i2c_bitbang API.

Signed-off-by: Tim Lin <tim2.lin@ite.corp-partner.google.com>
2025-04-17 09:06:29 +02:00
Hao Luo
6f4b92d64d soc: ambiq: Optimize the inclusion relationship of header files
Optimized the inclusion relationship of header files

Signed-off-by: Hao Luo <hluo@ambiq.com>
2025-04-17 09:06:18 +02:00
Luis Ubieda
d7ebf672bd drivers: i2c_rtio: MCUX LPflexcomm determine by inst
Determine if lpflexcomm wrapped lpi2c by instance and connect
irq differently dependending on that to support platforms with
both flexcomm wrapped and unwrapped lpi2c's.

Applying c1286a8d8d425805fcceb3b872325fb4c439a572 to RTIO version.

Authored-by: Declan Snyder <declan.snyder@nxp.com>
Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-04-14 23:06:53 +02:00
Luis Ubieda
c7a00248a6 drivers: i2c_rtio: Use the NXP Flexcomm driver for interrupt handling
The Low Power Flexcomm driver manages the interrupt handling
and provides an API to register interrupt callbacks.
Register the NXP LPI2C interrupt handler.

Applying dca6e64c93f26db254089f20225854bb1f8fe9b4 on RTIO-version.

Authored-by: Mahesh Mahadevan <mahesh.mahadevan@nxp.com>
Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-04-14 23:06:53 +02:00
Luis Ubieda
797772fc41 drivers: i2c_rtio: Use flexcomm interface to manage interrupts
Some NXP SoC's have a FlexComm interface that manages the
interrupts.

Applying 482e39ea9556f53adbb7f67d0d0da3d17bbbae90 on RTIO-version.

Authored-by: Mahesh Mahadevan <mahesh.mahadevan@nxp.com>
Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-04-14 23:06:53 +02:00
Luis Ubieda
0f0bb7e6e9 drivers: i2c_rtio: Use MCUX variations when using instance number
Update the driver to account for variations in the SDK driver
when it uses the instance number instead of the base address.

Applying 49bdcd2ef2fd5c91ab36f08d29e5183df5437843 on RTIO-version.

Co-authored-by: Mahesh Mahadevan <mahesh.mahadevan@nxp.com>
Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-04-14 23:06:53 +02:00
Luis Ubieda
d1b79aa5bc drivers: i2c_nrfx_twi_rtio: Fix multi-writes with OP_TRANSACTION flag
This patch establishes proper handling of RTIO OPs with multiple write
requests in the same transfer (as in: including OP_TRANSACTION flag).
An example of this is captured in test_ram_rtio_write_with_transaction
test). This patch makes that testcase pass for i2c_nrfx_twi_rtio.

Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-04-14 20:04:47 +02:00
Hao Luo
5d62f96d8d drivers: i2c: ambiq: Optimized i2c_ambiq_transfer to handle frame header
Need to send the device address together with data in one transaction,
instead of splitting into two.

Signed-off-by: Hao Luo <hluo@ambiq.com>
2025-04-14 16:07:54 +02:00
Luis Ubieda
ecbe31f59f drivers: i2c_nrfx_twi_rtio: Fix missing completion on i2c_configure
This patch adds the missing completion call to the
RTIO_OP_I2C_CONFIGURE OPs. Without this, the drivers will lock when
calling i2c_configure().

Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-04-11 17:31:53 +02:00
Samuel Chee
4772e183dc drivers: i2c: add pinctrl support to Arm sbcon driver
Adds necessary pinctrl support to Arm SBCon I2C driver.

Signed-off-by: Samuel Chee <samche01@arm.com>
Signed-off-by: Sudan Landge <sudan.landge@arm.com>
2025-04-07 15:18:10 +02:00
Hank Wang
e11634e733 drivers: i2c: tca954x: add support for idle disconnect
Add support for an optional "idle disconnect" feature in the TCA954x
I2C multiplexer. When enabled via the `i2c-mux-idle-disconnect` device
tree property, the driver will disconnect all channels after each
transfer. This helps avoid address conflicts when multiple multiplexers
are present on the same I2C bus.

Even if the I2C transfer fails, the driver will still attempt to
disconnect the channels to ensure the bus is left in a consistent state.
If the disconnect operation itself fails, its error code will be returned
unless the transfer already failed with a different error.

This implementation is inspired by the Linux kernel driver for PCA954x
I2C multiplexers. Special thanks to Ofir Shemesh for valuable suggestion.

Signed-off-by: Hank Wang <wanghanchi2000@gmail.com>
2025-04-04 18:17:07 +02:00
Hao Luo
8b60fa834c drivers: mfd: Add ambiq iom binding file
This commit adds ambiq iom binding file to consolidate
spi and i2c that share the same IO Master module on
Apollo MCUs

Signed-off-by: Hao Luo <hluo@ambiq.com>
2025-04-02 19:02:56 +02:00
Etienne Carriere
0103de7b51 drivers: i2c: stm32: support DMA when CONFIG_MEM_ATTR=n
Allow STM32 I2C driver v2 to operate with DMA support even when
CONFIG_MEM_ATTR is disabled which happen when CONFIG_ARM_MPU is
intentionally disabled despite the CPU supports MPU.

By the way, remove a #ifdef directive on header files inclusion
that adds noise in the header file inclusion section without any
benefit.

Signed-off-by: Etienne Carriere <etienne.carriere@st.com>
2025-04-02 12:54:50 +02:00
Etienne Carriere
d0d8fa444f drivers: i2c: stm32: don't manage cache aside DMA support
Fix STM32 I2C driver to not call cache management related functions
when DMA is not used. This change fixes an issue introduced by
commit 42c3a78148 ("i2c: stm32: Add cache memory support"). The issue
makes boards embedding this driver with both CONFIG_I2C_STM32_V2_DMA
and CONFIG_ARCH_MPU disabled to fail to build with an error trace message
like the below:
   .../i2c_ll_stm32_v2.c:701: undefined reference to `mem_attr_check_buf'

Fixes: 42c3a78148
Signed-off-by: Etienne Carriere <etienne.carriere@st.com>
2025-03-27 21:33:53 +01:00
Andrzej Kuros
d15c9fe9a6 drivers: i2c_nrfx_twim: add exclusive access API
This commit provides an extension to the i2c_nrfx_twim driver.
It introduces possibility to acquire/release exclusive access to the
i2c bus. While the exclusive access to the i2c bus is acquired
you can access the underlying nrfx_twim driver directly.

Signed-off-by: Andrzej Kuros <andrzej.kuros@nordicsemi.no>
2025-03-27 17:17:32 +01:00
Fin Maaß
2260111cc6 drivers: i2c: litex: add mutex in litei2c
add mutex for the litei2c driver

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-03-27 14:01:11 +01:00
Fin Maaß
f7a0a54c31 drivers: i2c: litex: add driver for litei2c
add driver for litei2c.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-03-27 14:01:11 +01:00
Alvis Sun
79b526f65a drivers: i2c: npcx: add support for multi-address in target mode
This commit introduces support for the NPCX I2C driver to handle up to
8 addresses in target mode

Signed-off-by: Alvis Sun <yfsun@nuvoton.com>
2025-03-25 08:43:52 +01:00
Hao Luo
a460479ff7 drivers: ambiq: Correct peripheral instance calculation
This commit corrected ambiq peripheral instance calculations

Signed-off-by: Hao Luo <hluo@ambiq.com>
2025-03-25 05:59:42 +01:00
Pisit Sawangvonganan
a89060be0d drivers: i2c: shell: use shell_fprintf_normal instead of shell_fprintf
Due to the introduction of `shell_fprintf_normal` in PR #77192, we can
minimize caller overhead by eliminating direct `color` parameter passing.

Signed-off-by: Pisit Sawangvonganan <pisit@ndrsolution.com>
2025-03-25 00:31:48 +01:00
Pisit Sawangvonganan
1991e57814 drivers: i2c: shell: align struct shell * argument name to sh
Aligned the `struct shell *` argument name from `shell_ctx` to `sh`
for consistency with other drivers' usage of `sh`, and to match
the `shell_cmd_handler` argument name.

Signed-off-by: Pisit Sawangvonganan <pisit@ndrsolution.com>
2025-03-25 00:31:48 +01:00
Khoa Tran
d0c0f1d036 drivers: i2c: initial support for i2c sci-b driver on Renesas RA family
First commit to add support for Renesas RA i2c sci-b driver

Signed-off-by: Khoa Tran <khoa.tran.yj@bp.renesas.com>
Signed-off-by: Thao Luong <thao.luong.uw@renesas.com>
2025-03-24 19:22:18 +01:00
Hao Luo
4744d138c2 drivers: ambiq: Change the way to power on ambiq drivers
This commit changes to use ambiq hal power control APIs
to replace the previous register settings to power on
ambiq drivers.

Signed-off-by: Hao Luo <hluo@ambiq.com>
2025-03-24 09:54:17 +01:00
Simon Gilbert
42c3a78148 i2c: stm32: Add cache memory support
Add basic cache memory support

Signed-off-by: Simon Gilbert <srdgilbert@gmail.com>
2025-03-20 12:17:50 +01:00
Simon Gilbert
26a8b36513 i2c: stm32: Added DMA stop for various i2c comms conditions
Added stop DMA fot transmit complete or other master end conditions

Signed-off-by: Simon Gilbert <srdgilbert@gmail.com>
2025-03-20 12:17:50 +01:00