Commit Graph

1183 Commits

Author SHA1 Message Date
Johan Hedberg
4bd61408c7 drivers: i2c: gecko: Add PINCTRL dependency
This driver should use PINCTRL on all Series 2 boards.

Signed-off-by: Johan Hedberg <johan.hedberg@silabs.com>
2024-11-26 15:42:02 -05:00
TOKITA Hiroshi
88149afff7 soc: raspberrypi: Drop PINCTRL from Kconfig.defconfig
The `Kconfig.defconfig` is not good place for put `select PINCTRL`.
Drop `select PINCTL` from `Kconfig.defconfig` and add it at each
driver's Kconfig.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
2024-11-25 14:42:01 +01:00
Florian Weber
7adeac1b12 drivers: i2c: tca9544a
Extend tca954x (tca9546a, tca9548a) driver to support tca9544a i2c MUX.
(different bitmask and flag for enable bit in register)

Signed-off-by: Florian Weber <Florian.Weber@live.de>
2024-11-22 22:47:17 +00:00
Dhruv Menon
20678f9ad5 doc: i2c: Update I2C specification link
The prior link to the I2C specification was broken and no longer
accessible. Updated the link to a valid and current URL

Signed-off-by: Dhruv Menon <dhruvmenon1104@gmail.com>
2024-11-21 09:17:50 +01:00
cyliang tw
355d032baa boards: nuvoton: numaker: Drop PINCTRL from board defconfig
To remove CONFIG_PINCTRL from board side for numaker boards.
The Drivers using Pinctrl should be turning Pinctrl on
instead of the responsibility of the board.

Fixes #78619

Signed-off-by: cyliang tw <cyliang@nuvoton.com>
2024-11-20 08:23:58 -05:00
Jerzy Kasenberg
e6c9e9a2dd i2c: target: eeprom_target: Fix buffer write
When larger buffer index was introduced only function:
eeprom_target_write_received() was updated to handle
address-width = 16

This adds the same functionality when buffered API is used,
enabled by CONFIG_I2C_TARGET_BUFFER_MODE.

Signed-off-by: Jerzy Kasenberg <jerzy.kasenberg@codecoup.pl>
2024-11-20 08:23:37 -05:00
Dane Wagner
2f3a70ea4e drivers: i2c: Call correct I2C device definition macros
If CONFIG_I2C_STATS is enabled, the device state for all I2C controller
drivers must contain the I2C stats. This space is allocated by calling
Z_I2C_INIT_FN as part of the device definition; this is done automatically
when using I2C_DEVICE_DT_DEFINE instead of DEVICE_DT_DEFINE. If space
for statistics is not properly allocated but CONFIG_I2C_STATS is enabled,
an unexpected write to memory outside of the stats region may occur on
an I2C transfer. This commit uses I2C_DEVICE_DT_DEFINE or
I2C_DEVICE_DT_INST_DEFINE for all in-tree SPI controller drivers that do
not already.

Signed-off-by: Dane Wagner <dane.wagner@gmail.com>
2024-11-18 19:29:42 -05:00
Jan Kowalewski
42889628a9 drivers: i2c: Introduce I2C timeout for SAM0
Adds configurable timeout for I2C transactions for SAM0 SoCs.

Signed-off-by: Jan Kowalewski <jkowalewski@cthings.co>
2024-11-16 15:07:11 -05:00
Erwan Gouriou
4a94a33164 drivers: i2c: stm32: LL API C filers are not required
From some reason, STM32 I2C drivers selected the compilation of
C files of the I2C LL API.
This is actually not required, so remove this dependency.

Signed-off-by: Erwan Gouriou <erwan.gouriou@st.com>
2024-11-16 14:06:21 -05:00
Francois Ramu
c7cbe91760 drivers: i2c: stm32 I2C V2 handles i2c_target processed_cb return code
Check the return code of the i2c_target_read/write callback function
is 0 before continuing the transmit/receive operation on I2C target
When Transmitting: 0 if data has been provided, then continue
When address matches: 0 if the write is accepted or
if more data can be requested depending on the transfer direction.

Signed-off-by: Francois Ramu <francois.ramu@st.com>
2024-11-08 11:38:02 -06:00
Jun Lin
69e85b25fe board: npcx: remove CONFIG_PINCTRL from defconfig of npcx boards
The CONFIG_PINCTRL is removed from the board's defconfig files.
Drivers which use pin control function should add "select PINCTRL"
in their Kconfig files.

Fixes #78619

Signed-off-by: Jun Lin <CHLin56@nuvoton.com>
2024-11-07 08:59:14 -08:00
Thao Luong
c66dcd52db drivers: Select PINCTRL for renesas RA drivers
Select PINCTRL for drivers: adc, i2c, pwm, serial and spi

Signed-off-by: Thao Luong <thao.luong.uw@renesas.com>
2024-11-06 09:59:32 -08:00
Gerson Fernando Budke
0cc8f93e8a soc: atmel: Drop PINCTRL from Kconfig.defconfig
This Kconfig has wrongly been added to defconfig files. It is not the
right place for it. It has never been the right place for it. Drivers
that need it should select the symbol in their Kconfig entries. Drop
PINCTL from Kconfig.defconfig and add proper select at Kconfig.sam*.

Fixes #78619

Signed-off-by: Gerson Fernando Budke <nandojve@gmail.com>
2024-11-04 13:43:26 -06:00
Gerson Fernando Budke
52d21d7bf0 soc: gd32: Drop PINCTRL from Kconfig.defconfig
This Kconfig has wrongly been added to defconfig files. It is not the
right place for it. It has never been the right place for it. Drivers
that need it should select the symbol in their Kconfig entries. Drop
PINCTL from Kconfig.defconfig and add proper select at Kconfig.gd32.

Fixes #78619

Signed-off-by: Gerson Fernando Budke <nandojve@gmail.com>
2024-11-04 13:40:42 -06:00
Gerard Marull-Paretas
92c3495493 drivers: i2c: nrfx_twi[m]: default to I2C_BITRATE_STANDARD
Instead of forcing a definition in Devicetree. Right now, SoC DT files
contain this default, but it should not be part of SoC DT files.

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
2024-10-29 09:27:05 -07:00
Tom Burdick
24762115d4 i2c: Fix default RTIO handler transactions
Transactions from RTIO should result in single calls to i2c_transfer.
This corrects the default handler to first count the number of
submissions in the transaction, allocate on the stack, and then copy
over each submission to an equivalent i2c_msg.

It also cleans up the helper functions to be infallible, taking only the
submission and msg to copy to.

Signed-off-by: Tom Burdick <thomas.burdick@intel.com>
2024-10-22 18:29:34 -04:00
Tom Burdick
fab01c0c44 i2c: Drop TXRX from default RTIO handler
TXRX is meant specifically to handle a full duplex bus like SPI, I2C is
half duplex meaning only read or write can be performed at once.

Drop TXRX as a supported operation code for the default I2C submission
path.

Signed-off-by: Tom Burdick <thomas.burdick@intel.com>
2024-10-22 18:29:34 -04:00
Hao Luo
8b107ab5f1 drivers: i2c: add bus recovery
Added bus recovery support for ambiq i2c

Signed-off-by: Hao Luo <hluo@ambiq.com>
2024-10-22 20:40:29 +02:00
Hao Luo
a1cd2d6c83 drivers: pm: add pm_policy_state_lock for drivers
Added pm_policy_state_lock to prevent memory power
off during data transfer

Signed-off-by: Hao Luo <hluo@ambiq.com>
2024-10-22 14:14:34 +02:00
Jordan Yates
f443363f16 i2c: nrfx_twim: native RTIO support
Add native support for RTIO to the TWIM hardware IP.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2024-10-21 15:53:05 +02:00
Jordan Yates
627be7d150 i2c: i2c_nrfx_twim: update callback context to dev
Change the callback context to the dev pointer instead of the data
pointer, as the dev pointer is needed by RTIO.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2024-10-21 15:53:05 +02:00
Jordan Yates
0218b36b4a i2c: i2c_nrfx_twim: extract common code
Extract code useful for an RTIO implementation to a separate file.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2024-10-21 15:53:05 +02:00
Mathieu Choplain
6fd1a19868 drivers: i2c: stm32: add support for STM32WB0
Select COMBINED_INTERRUPT mode of operation for STM32WB0 to match the
hardware and allow the driver to build - no other modification required.

Signed-off-by: Mathieu Choplain <mathieu.choplain@st.com>
2024-10-17 10:49:34 -04:00
Hao Luo
e7a64f74a8 drivers: i2c: add runtime put for error path
The previous error path incorrectly returned without
calling runtime put async

Signed-off-by: Hao Luo <hluo@ambiq.com>
2024-10-16 12:26:17 +02:00
Emilio Benavente
82a192c8a9 boards: nxp: Removing CONFIG_PINCTRL from the boards defconfig
The Drivers using Pinctrl should be turning Pinctrl on
this should not be the responsibility of the board. This
commit removes CONFIG_PINCTRL from the boards side for nxp boards.

Signed-off-by: Emilio Benavente <emilio.benavente@nxp.com>
2024-10-15 19:09:45 -04:00
Romain Pelletant
8ee66a151e drivers: i2c: i2c_gecko: add exclusive access
- Add exclusive and atomic access to resource

Fixes #79110

Signed-off-by: Romain Pelletant <romainp@kickmaker.net>
2024-10-15 19:05:24 +01:00
Tim Lin
7fa962589f ITE: it8xxx2: Remove CONFIG_PINCTRL from soc defconfig file
The driver Kconfig determines whether pinctrl is enabled
instead of soc defconfig.

Signed-off-by: Tim Lin <tim2.lin@ite.corp-partner.google.com>
2024-10-15 13:52:55 +02:00
Ioannis Damigos
6c6a1e550c da1469x: Remove CONFIG_PINCTRL from all defconfig files
Remove CONFIG_PINCTRL from all defconfig files.

Fixes #78619

Signed-off-by: Ioannis Damigos <ioannis.damigos.uj@renesas.com>
2024-10-08 16:57:41 +02:00
Rafael Laya
626174e982 drivers: i2c: Designware IP clang format pass
To reduce lint warnings during code review, it is best
to keep clang-format happy

This commit makes a lint pass to this driver

Signed-off-by: Rafael Laya <rafael_laya97@hotmail.com>
2024-10-07 20:15:54 -04:00
Rafael Laya
bccaeb9c16 drivers: Support Fast Plus Mode in I2C Designware
Adds the right clock settings for Fast Plus Mode
in the i2c Designware driver which the original author
left as a TODO. Similarly, I lack the hardware to test
high-speed mode, and so that mode remains not well
supported.

Signed-off-by: Rafael Laya <rafael_laya97@hotmail.com>
2024-10-07 20:15:54 -04:00
Yong Cong Sin
52a202309b zephyr: bulk update to DT_NODE_HAS_STATUS_OKAY
Change instances of:

DT_NODE_HAS_STATUS(<node_id>, okay)

to

DT_NODE_HAS_STATUS_OKAY(<node_id>)

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
2024-10-03 17:06:52 +01:00
Gerard Marull-Paretas
9f0ebb64a6 drivers: i2c: nrfx_twim: simplify PM by using pm_device_driver_init
- Driver always initializes the device in the suspended state
- If CONFIG_PM_DEVICE_RUNTIME=n, device PM callback will be called with
  RESUME action, thus setting up pins to default state and enabling the
  peripheral

NOTE: when CONFIG_PM_DEVICE=n, the pinctrl sleep state will not be
available (-ENOENT) and so never applied, thus avoiding a pin
suspended->active transition.

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
2024-09-30 17:11:20 +01:00
Ioannis Damigos
d7497507cf i2c_smartbond: Don't set STOP flag to last message
Setting STOP flag to last message it's done by z_impl_i2c_transfer().

Signed-off-by: Ioannis Damigos <ioannis.damigos.uj@renesas.com>
2024-09-28 08:20:41 -05:00
Bill Waters
eb19d32588 drivers: Remove CONFIG_PINCTRL in defconfig files
The CONFIG_PINCTRL setting is removed from the board
_defconfig files.  And "select PINCTRL" is added to
the appropriate driver files.

Signed-off-by: Bill Waters <bill.waters@infineon.com>
2024-09-23 18:08:14 -04:00
Fabio Baltieri
61f4ba27ad drivers: i2c: add an option to skip auto-sending stop on last message
The I2C transfer API has been recently changed to always automatically
set a STOP on the last message, which was well documented but
implemented only by few drivers.

Unfortunately, while documented, this is a change in the current
behavior and it turns out that some applications depended on it for some
complex operations.

Add a flag to temporarily restore the old behavior, buying time to fix
the application code depending on this.

Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
2024-09-23 14:07:49 +01:00
Quy Tran
c17a8d3e84 drivers: i2c: change to use IRQ_CONNECT in Renesas RA i2c driver
Change to use IRQ_CONNECT instead of IRQ_DIRECT_CONNECT

Signed-off-by: Quy Tran <quy.tran.pz@renesas.com>
2024-09-23 10:01:26 +02:00
Tim Lin
fd5ecef59e drivers/i2c: it8xxx2: Add a property for maximum time allowed I2C transfer
Add a property of the maximum time allowed for an I2C transfer.

Signed-off-by: Tim Lin <tim2.lin@ite.corp-partner.google.com>
2024-09-18 19:56:43 +01:00
Pisit Sawangvonganan
a9800e2ea7 style: drivers: adjust return usage in void functions
For code clarity, this commit adjusts the use of `return` statements
in functions with a void return type as follows:
- Transform `return foo();` into separate statements:
  `foo();`
  `return;`
- Remove unnecessary `return` statements when
  they don't affect control flow.

Signed-off-by: Pisit Sawangvonganan <pisit@ndrsolution.com>
2024-09-18 09:56:16 +02:00
Lucas Tamborrino
4385785f02 drivers: i2c: esp32: Fix DT node instance.
DT_INST macros were not getting the info from the correct
node.

Signed-off-by: Lucas Tamborrino <lucas.tamborrino@espressif.com>
2024-09-16 20:19:43 +02:00
Fabrice DJIATSA
688c9d3101 drivers: i2c: update i2c driver to integrate stm32u0
- enabled combined interrupt configuration for stm32u0x serie.
- since stm32u0 serie doesn't support SMBUS we need to avoid
use SMBHEN and SMBDEN bits register.

Signed-off-by: Fabrice DJIATSA <fabrice.djiatsa-ext@st.com>
2024-09-11 13:59:54 -04:00
Sylvio Alves
8233b70ece espressif: clean up unused code
Remove all entries that as not being used.
This also update hal to re-enable warning flags
as such as -Wno-unused-variable.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2024-09-09 13:55:39 -04:00
Tom Burdick
1c29f98e68 i2c: nrf_twi: Add cast to const buffer pointers
A warning was issued in the build as the rtio tx and tiny_tx buffer
pointers are now labeled const. The internal API expects mutable buffers
so an explicit cast is needed here to avoid the warning.

Signed-off-by: Tom Burdick <thomas.burdick@intel.com>
2024-09-05 12:41:45 -05:00
Yuval Peress
8974c248cf rtio: Add default i2c submit handler
Use the RTIO work queue to fake the i2c submit calls for drivers which
haven't yet implemented the API. Applications can change the size of
the work queue pool depending on how much traffic they have on the buses.

Signed-off-by: Yuval Peress <peress@google.com>
2024-09-04 21:28:26 +02:00
Jordan Yates
cbc4100eda i2c: i2c_nrfx_twim: init semaphores in init function
Initialise the semaphores in the init function so that a copy of the
data structure does not need to exist in `.data`.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2024-09-04 12:51:40 +02:00
Jordan Yates
4c15cd119b i2c: i2c_nrfx_twim: move msg_buf to config
This is a constant pointer, there is no need for it to be in the mutable
data struct.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2024-09-04 12:51:40 +02:00
Erwan Gouriou
d13f9d9b9b drivers: stm32: Select PINCTRL when required
Select PINCTRL subsystem by drivers which require it.
Prevent the need from enabling this symbol at board or soc level.

Signed-off-by: Erwan Gouriou <erwan.gouriou@st.com>
2024-09-03 14:40:55 +01:00
Jordan Yates
18a964faaa i2c: nrfx_twi: fix RTIO utility functions
Route `configure` and `recover_bus` through the RTIO framework to avoid
race conditions. Update `RTIO_OP_I2C_RECOVER` implementation to actually
recover the bus, instead of triggering a loop.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2024-08-23 08:02:45 -04:00
Raffael Rostagno
90c6106926 drivers: esp32: Interrupts flags configuration
Allows configuring interrupts flags in the device tree for
ESP32 devices.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2024-08-22 14:25:25 -04:00
Raffael Rostagno
bb746cdcc5 drivers: esp32: esp_intr_alloc return condition
Add checks to return value of esp_intr_alloc to avoid drivers init
returning 0 when interrupt allocation fails.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2024-08-22 14:25:25 -04:00
Raffael Rostagno
0b3a34cdca drivers: esp32: Interrupts priority configuration
Allows configuring interrupts priority in the device tree for
ESP32 devices.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2024-08-22 14:25:25 -04:00