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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>