Commit Graph

173 Commits

Author SHA1 Message Date
Ryan McClelland
248f7971e4 drivers: i3c: stm32: fix ibi build issue
Use the correct 'place' for the hj_pm_lock variable

Signed-off-by: Ryan McClelland <rymcclel@gmail.com>
2025-03-26 07:08:17 +01:00
Ryan McClelland
9628d97ad9 drivers: i3c: remove group addr definition
The i3c group address support is rather very incomplete here. Remove
references to it. This could all easily come back when/if group support
comes in.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-03-26 00:47:00 +01:00
Ryan McClelland
9bce73a6e0 drivers: i3c: cleanup const
There is const used in a few places and some hacks to get around
that const. Just remove the const as well as remove the hacks.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-03-25 08:44:02 +01:00
Ryan McClelland
8bf6dac549 drivers: i3c: dw: add rtio callbacks
Add the missing api callbacks for i3c and i2c rtio.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-03-21 06:31:07 +01:00
Ryan McClelland
28676ae9be drivers: i3c: shell: fix getmxds fmt3 defbyte check
Fix the checking on the getmxds for format 3.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-03-21 06:31:03 +01:00
Ryan McClelland
30b4b1bdf8 drivers: i3c: shell: fix getcaps fmt2 defbyte check
Fix the checking on the getcaps for format 2.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-03-21 06:31:03 +01:00
Corey Wharton
6d01483b01 drivers: i3c: i3c_dw: skip I3C bus init on pure I2C buses
If the bus is only used I2C we can skip I3C bus initialization which
will send a number of unnecessary CCC transactions.

Signed-off-by: Corey Wharton <xodus7@cwharton.com>
2025-03-14 05:47:26 +01:00
Corey Wharton
a19429eb39 drivers: i3c: i3c_dw: make transfer timeout a Kconfig option
The current value of 1s is much too long, default to 100ms instead
which is enough for even a large 4kB FM I2C transfer to finish in
time let alone a typical I3C transfer. Make this configurable in
case projects want to tune this.

Signed-off-by: Corey Wharton <xodus7@cwharton.com>
2025-03-14 05:47:26 +01:00
Corey Wharton
b818a7662d drivers: i3c: i3c_dw: dynamically attach I2C devices on transfer
The maximum number of attached devices is limited by the maximum
number of entries in the device address table. For I3C devices
these have to by allocated permanently when devices are attached
but for I2C devices we can dynamically allocate an entry in the
table on a I2C transfer and free it after the transfer is completed.
This allows the maximum number of I2C + I3C devices on a bus to be
larger than the address table size as long as the number of I3C
devices is maxdevs - 1.

Signed-off-by: Corey Wharton <xodus7@cwharton.com>
2025-03-14 05:47:26 +01:00
Corey Wharton
e330a69aec drivers: i3c: i3c_dw: mark device busy during transfers
Prevent the device from being automatically suspended during transfers.

Signed-off-by: Corey Wharton <xodus7@cwharton.com>
2025-03-14 05:47:26 +01:00
Corey Wharton
6ed98bfc42 drivers: i3c: i3c_dw: add pinctrl support
Adds pinctrl support on init and on PM actions. General PM support is added
to the driver to enable the later.

Signed-off-by: Corey Wharton <xodus7@cwharton.com>
2025-03-14 05:47:26 +01:00
Ren Chen
9388349957 drivers: i3c: ccc: add missing data length for entas
This commit adds the missing data length(=0) for entas ccc.

Signed-off-by: Ren Chen <Ren.Chen@ite.com.tw>
2025-03-07 20:24:04 +01:00
Ren Chen
20dbf4d7a0 drivers: i3c: shell: fix the judgement/argc count for getstatus/ibi tir
The errno for format 2 of the getstatus ccc always returns an error.
The check for the invalid defining byte should use the "AND" operation
instead of "OR." Additionally, the first byte of the ibi tir sending
request is ignored due to the incorrect argument count.
This commit fixes both issues.

Signed-off-by: Ren Chen <Ren.Chen@ite.com.tw>
2025-03-07 20:24:04 +01:00
Ren Chen
373771c062 drivers: i3c: common: fix the setaasa flow
There is an incorrect dynamic address setting for setaasa. The correct
behavior is that the dynamic address should be assigned as a static
address only when the CCC request returns success. This commit fixes the
issue.

Signed-off-by: Ren Chen <Ren.Chen@ite.com.tw>
2025-03-07 20:24:04 +01:00
Ryan McClelland
b495907ae5 drivers: i3c: cleanup target config descrition and add inline helpers
It shouldn't be possible to just 'enable' target mode of a device.
It is required by the specification to perform a handoff or request to
become a target or controller from the active controller. Not to just flip
a switch internally. Can the parameter from `enable` to `enabled` to report
if it is currently a target or a controller otherwise.

Also, add inline helpers for `i3c_config_get` and `i3c_configure` to ensure
the proper struct is passed in.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-03-07 19:50:08 +01:00
Ryan McClelland
93099e303e drivers: i3c: run clang-format on i3c_common.c
Run clang-formatt on i3c_common.c

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-03-07 19:50:08 +01:00
Benjamin Cabé
ff9fd96036 drivers: fix spelling of "transfer"
s/trasnfer/transfer/

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2025-02-21 11:41:46 +00:00
Ryan McClelland
d225d1525c drivers: i3c: cdns: fix ibi thr write
The dts define for the ibi threshold (watermark) was be written to the
ibi response threshold. Fix it to write to the correct spot.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-02-18 09:56:17 +01:00
Ryan McClelland
1b7de61977 drivers: i3c: cdns: fix up deftgts mem alloc
deftgts could be a different length the second time around. Also, be
more efficient rather than just allocaing the max_devs each time.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-02-18 09:56:17 +01:00
Ryan McClelland
534c4148a9 drivers: i3c: add snps_designware_i3c to i3c shell
add the synopsys designware i3c to the i3c shell.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-02-14 03:02:43 +01:00
Ryan McClelland
e9ea97e92d drivers: i3c: add synopsys designware i3c driver
Add synopsys designware i3c driver

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-02-14 03:02:43 +01:00
Ryan McClelland
653589c558 drivers: i3c: add controller handoff support
Add controller handoff

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-02-11 22:03:32 +01:00
Ryan McClelland
e5ac786ba8 drivers: i3c: shell: record crcaps and crhdly1 in to desc from shell
Record the crcaps and crhdly1 in to the i3c descriptor when calling from
the shell.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-02-11 22:03:32 +01:00
Ryan McClelland
3805ac189a drivers: i3c: shell: add crhdly1 and crcaps to info
Add crhdly1 and crcaps to the info shell command.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-02-11 22:03:32 +01:00
Ryan McClelland
88f5e16edc drivers: i3c: add controller handoff helper
This adds controller handoff according to section 5.1.7.1 of the
I3C specification.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-02-11 22:03:32 +01:00
Ryan McClelland
5f8c302306 drivers: i3c: add controller handoff parameters in to i3c desc
Add the parameters crcaps and crhdly1 in to the i3c device descriptor.
Also, retrieve the values if they are available.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-02-11 22:03:32 +01:00
Ryan McClelland
ad7b4422bc drivers: i3c: shell: add ccc getacccr command
Add the CCC GETACCCR command to the i3c shell.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-02-11 22:03:32 +01:00
Ryan McClelland
982c02d910 drivers: i3c: add ccc getacccr
Add a ccc helper for getacccr

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-02-11 22:03:32 +01:00
Ryan McClelland
5b74f00068 drivers: i3c: stm32: implement hj_response api
Implement the hj_response api for STM32 I3C. This also implements
the PM calls for enabling and disabling runtime PM. For HJ to work
the device must be powered on and be receiving a clock.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-01-27 11:02:34 +01:00
Ryan McClelland
57b3eb6213 drivers: i3c: cdns: fix rr slot lookup when dyn is 0
When attaching a device, it should look up if the dynamic addr is
already attached only, and not by the static addr.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-01-06 20:33:57 +01:00
Ryan McClelland
4991eef14d drivers: i3c: ccc: use SIZEOF_FIELD
Use the SIZEOF_FIELD macro to make things look prettier.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-01-06 20:33:37 +01:00
Ryan McClelland
6e271cfbb7 drivers: i3c: cdns: use SIZEOF_FIELD
Use the SIZEOF_FIELD macro to make things look prettier.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-01-06 20:33:37 +01:00
Ryan McClelland
a7ca9d8e66 drivers: i3c: cdns: report sdr error code
Report the i3c error code in the payload.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-01-06 20:33:37 +01:00
Ryan McClelland
08624b251f drivers: i3c: shell: add shell cmd for ibi hj response
Add a shell command the i3c ibi hj response api.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-01-06 20:33:26 +01:00
Ryan McClelland
71ad773f12 drivers: i3c: cdns: implement api for hj response
Implement the api for ibi hj response

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-01-06 20:33:26 +01:00
Ryan McClelland
b5f447ced2 drivers: i3c: split up i3c_device_basic_info_get
For ENTDAA, BCR and DCR is always transmitted back up to the controller.
When `i3c_bus_init` is done, it does the ENTDAA then it would get the
basic info would get the BCR and DCR again. This was rather reduntant.
This now splits it up so there is a function called
`i3c_device_adv_info_get` which gets the mrl, mwl, getcaps, and the
mxds. `i3c_device_basic_info_get` now only just gets the bcr and dcr.
There is also an inline function called `i3c_device_info_get` which
will get everything.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-01-06 20:33:16 +01:00
Yishai Jaffe
1b4cef325b shell: use shell_device_get_binding
Use shell_device_get_binding() instead of device_get_binding() so that
we get the device based on its name and in addition by its label.

Signed-off-by: Yishai Jaffe <yishai1999@gmail.com>
2024-12-18 15:32:10 +01:00
Ryan McClelland
f888e781ba drivers: i3c: stm32: add api call for default handler
add api calls for the default handlers for i3c rtio

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-12-16 20:54:42 +01:00
Ryan McClelland
622732e854 drivers: i3c: npcx: add api call for default handler
add api calls for the default handlers for i3c rtio

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-12-16 20:54:42 +01:00
Ryan McClelland
b7492cb671 drivers: i3c: mcux: add api call for default handler
add api calls for the default handlers for i2c and i3c rtio

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-12-16 20:54:42 +01:00
Ryan McClelland
ee0abb15b0 drivers: i3c: cdns: add api call for default handler
add api calls for the default handlers for i2c and i3c rtio

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-12-16 20:54:42 +01:00
Ryan McClelland
0e5916f8e4 drivers: i3c: add i3c-rtio
This adds rtio along with a default handler for i3c

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-12-16 20:54:42 +01:00
Pieter De Gendt
2d5f1ba9ff drivers: i3c: Place API into iterable section
Add wrapper DEVICE_API macro to all i3c_driver_api instances.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-12-16 18:25:36 +01:00
Ryan McClelland
1050f5375e drivers: i3c: shell: fix argv for rstact
fix the argv for the rstact

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-12-13 20:05:21 +01:00
Sara Touqan
cb56a19a26 shell: Enable I3C shell support for STM32.
This commit introduces support for I3C shell on STM32.

Signed-off-by: Mohammad Badawi <zephyr@exalt.ps>
Signed-off-by: Sara Touqan <zephyr@exalt.ps>
2024-12-12 11:08:12 +01:00
Sara Touqan
10ba888fda drivers: i3c: Support I3C driver for STM32.
This commit introduces support for the I3C driver on STM32, enabling
functionality APIs for I3C controllers.

Signed-off-by: Mohammad Badawi <zephyr@exalt.ps>
Signed-off-by: Sara Touqan <zephyr@exalt.ps>
2024-12-12 11:08:12 +01:00
Alvis Sun
c9a95ddbdd drivers: i3c: npcx: add npcx i3c target driver
As title.

Signed-off-by: Alvis Sun <yfsun@nuvoton.com>
2024-11-25 17:43:41 +01:00
Alvis Sun
bb03d1a472 include: i3c: target_device: add target driver buffer mode
As title.

Signed-off-by: Alvis Sun <yfsun@nuvoton.com>
2024-11-25 17:43:41 +01: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
Ryan McClelland
42da6c9c82 drivers: i3c: shell: fix argc count for setmrl
There is the wrong argc count for the max ibi len for setmrl.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-10-21 18:52:15 -05:00