Commit graph

144 commits

Author SHA1 Message Date
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
Ryan McClelland
f9ba776fb4 drivers: i3c: shell: fix typos for enec/disec/rstact errors
Fix typos for enec/disec/rstact typos.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-10-21 18:52:15 -05:00
Ryan McClelland
f17b15525b drivers: i3c: shell: fix kconfig def for ibi
Fix kconfig def for ibi where it is missing the CONFIG_.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-10-21 18:52:15 -05:00
Ryan McClelland
434bed5c6f drivers: i3c: shell: fix reference on pointer arg for null check
A reference was missing for checking for null on devices.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-10-21 18:52:15 -05:00
Ryan McClelland
0068b61672 drivers: i3c: shell: fixup typos
There were some copy and paste errors that were easily missed where the
wrong print out would happen of an argument with `info` and an extra
autocompelete would happen with the `speed` command.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-10-21 18:52:15 -05:00
Alvis Sun
578fbca78d soc: nuvoton: reg: add i3c target registers and soc functions
As title.

Signed-off-by: Alvis Sun <yfsun@nuvoton.com>
2024-10-21 12:36:21 +02:00
Ryan McClelland
f2d549d55b drivers: i3c: cdns: fixup attachment and addr assignment for daa
The ENTDAA does not have a way to assign DA that are with a PID. It will
assign DAs that were in it's RRs in the order that they win arbitration.
Assign only available addresses in to it's RRs before ENTDAA.

Cleanup the attach api to no longer require a addr argument and remove
the helper function `i3c_determine_default_addr`. This now looks at if
it has a static address or if it already has a dynamic address (such as
from DEFTGTS) and will register the address if either exist with
precidence of dynamic addr over static addr.

This also fixes up the look up for if a device already has a dynamic
addr to find which pos of the RRs is it is in.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-10-10 20:22:01 -04:00
Naveen Gangadharan
175407c9cc drivers: i3c: cadence: fix HDR-DDR write failures due to M1 errors
Fix M1 errors seen with HDR-DDR writes, M1 errors we seen between CRC
and HDR exit sequence. The fix was to set Bit-8 of HDR-DDR CRC TXFIFO
word.

Signed-off-by: Naveen Gangadharan <naveeng1001@meta.com>
2024-10-10 10:07:00 +02:00
Ryan McClelland
ae63c62f0e drivers: i3c: implement support for ibi thr interrupts
Some IBI TIR packets can be larger than the ibi data fifo size
which can prevent it from receiving the full packet. This adds
a data struct in to the driver data where data can be pushed
to as data is being transfered.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-10-05 14:04:25 -04:00
Ryan McClelland
31e821bef6 drivers: i3c: cdns: grab mutex before adjusting prescalers
Grab the mutex before adjusting the prescalers to make sure no
transaction is on going.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-10-05 14:04:25 -04:00
Ryan McClelland
9c48f7eb37 drivers: i3c: cdns: correct sda push pull hold time
correct the comments and timing for the sda push-pull hold time
configuration.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-10-05 14:04:25 -04:00
Ryan McClelland
22571f32bf drivers: i3c: shell: add shell cmd for ccc setbuscon
Add a i3c shell command for the i3c ccc setbuscon.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-09-30 16:56:04 -05:00
Ryan McClelland
901044f1e7 drivers: i3c: add ccc setbuscon
Add helpers and defines for the i3c ccc setbuscon.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-09-30 16:56:04 -05:00
Ryan McClelland
507e8170fa drivers: i3c: shell: fixup rstact
Both #78823 and #78807 merged at around the same time. This made it so
the shell didn't compile when #78823 was stacked on top as it did not run
with the test build. This fixes the compile issues.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-09-30 16:56:04 -05:00
Ryan McClelland
7e21f2e1ce drivers: i3c: shell: add parse args func for rstact
Add the parse args function for the rstact

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-09-30 16:56:04 -05:00
Ryan McClelland
d00684b28e drivers: i3c: shell: add ibi disable/enable commands
Add shell commands for the `i3c_ibi_enable` and `i3c_ibi_disable` apis.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-09-28 08:16:13 -05:00
Ryan McClelland
00b6443a55 drivers: i3c: add additional option to setdasa
struct i3c_ccc_address is intended to match the output where the address
is left shifted by 1 for SETDASA and SETNEWDA. Require the operations
calling it to shift the data.

add an additional parameter for the setdasa function which will allow for
the da to be configured rather than being hard coded.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-09-26 03:34:16 -04:00
Ryan McClelland
bc3390111e drivers: i3c: shell: add helper function to parse args
There is a lot of repeated code for parsing arguments. Add a function
to do the same in every place.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-09-25 04:04:13 -04:00
Ryan McClelland
e602590931 drivers: i3c: add iterate through i3c/i2c devices macros
Add i3c_bus_for_each_i3cdev and i3c_bus_for_each_i2cdev to more easily
iterate through each i3c or i2c device on the bus.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-09-25 04:04:13 -04:00
Ryan McClelland
32f0a15486 drivers: i3c: shell: add ccc rstact shell command
Add a shell command for rstact format 2 and 3.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-09-25 04:03:04 -04:00
Ryan McClelland
e20b556fb4 drivers: i3c: add rstact format 2 and 3 helpers
Add rstact direct write and direct read formats helper functions.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-09-25 04:03:04 -04:00
Mahesh Mahadevan
f1b57f6d8a drivers: i3c: Move clocking code out of NXP I3C driver
The clocking code present inside the NXP I3C is SoC specific.
This has been moved to the SoC folder which makes this driver
more flexible to clock architecture variations between SoC's
and SDK driver clock API variations.

Signed-off-by: Mahesh Mahadevan <mahesh.mahadevan@nxp.com>
2024-09-24 09:21:28 -04:00
Naveen Gangadharan
27d5528174 drivers: i3c: cadence: fix tx_fifo width for target mode on REV_ID 1.7
Cadence I3C target FIFO width has been increased to 4 bytes in i3c
hardware REV_ID 1.7. Writing 1 byte to 4 byte FIFOs can cause
unintentional padding for bytes written from TX threshold interrupt
handler. Fixed the target callback to handle tx width of i3c target
writes to FIFO, by using run time rev_id check.

Signed-off-by: Naveen Gangadharan <naveeng1001@meta.com>
2024-09-23 10:02:01 +02: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
Ryan McClelland
b0442e24f1 drivers: i3c: shell: record getcaps in to desc from shell
Record the getcaps values in to the i3c desc from the shell command.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-09-17 20:06:13 -04:00
Ryan McClelland
d2b0f70ddc drivers: i3c: add helper for if target is controller capable
Add the function, i3c_device_is_controller_capable, to determine if
a target is controller capable.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-09-17 20:06:13 -04:00
Ryan McClelland
93dc6113bc drivers: i3c: fix static addr for deftgts AC
The Active Controller data struct for static addr is to always be
0x7E. This is so the active controller can be identified according
to section 5.1.9.3.7 of the I3C v1.1.1 Specification.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-09-17 20:06:13 -04:00
Ryan McClelland
a338f7c710 drivers: i3c: shell: add hdr ddr shell commands
Add read and write hdr ddr shell commands.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-09-17 20:06:13 -04:00
Ryan McClelland
d6bff46d99 drivers: i3c: shell: add ibi shell commands
This adds ibi commands for hot-join, controller request, and target
interrupt request.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-09-17 20:06:13 -04:00
Ryan McClelland
86f7ccf10a drivers: i3c: shell: add i3c speed command
Add a shell command to set the i3c scl speed.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-09-17 20:06:13 -04:00