DesignWare Linux I3C driver
Introduction
This page provides information about the DesignWare I3C driver, which can be found on AMD/Xilinx Git and mainline as dw-i3c-master.c
The I3C controller supports the v1.0 standard and includes dynamic address assignment, data
transfer to legacy I2C destinations, broadcast, and CCC transfers. The controller can operate as
in the secondary configuration mode.
HW IP Features
Hardware-assisted dynamic Address assignment support
APB3 slave interface for register access
Supports Data transfer to legacy I2C slaves
Supports SDR mode up to 12MHZ
Supports private transfers
Supports slave mode polled transfer
Supports broadcast and direct CCC transfers
Supports Address assignment CCC transfer
Supports threshold configuration for Tx, Rx and Response FIFOs
Known issues and limitations
IBI and hot join features are not tested
Transfers larger than FIFO are not supported with the current driver implementation.
Kernel Configuration
The following config options need to be enabled:
CONFIG_DW_I3C_MASTER
It depends on I3C and HAS_IOMEM
Devicetree
Refer to Documentation/devicetree/bindings/i3c/snps,dw-i3c-master.yaml for complete description.
Example
The following example shows adding an I2C node to the devicetree on versal net:
Test procedure
This section details the getting of values from the sensor interfaced to i3c:
xilinx-vn-p-b2197-00-reva-x-prc-09-reva-20242:/sys/bus/platform/drivers/dw-i3c-master/f1008000.i3c/i3c-1/1-208006c100b/iio:device2# cat in_accel_x_raw
325
Mainline Status
This driver is currently in sync with the mainline kernel driver.
ChangeLog
2025.1
Summary
Annotate struct dw_i3c_xfer with __counted_by
Disable IBI IRQ depends on hot-join and SIR enabling
Add hot-join support
Fix clearing queue thld
Fix IBI intr programming
Remove ibi_capable property
Use new *_enabled clk API
Add optional apb clock
Save timing registers and other values
Add some functions for reusability
Add power management support
Commits
014c9a0 - i3c: dw: Annotate struct dw_i3c_xfer with __counted_by
1020139 - i3c: dw: Disable IBI IRQ depends on hot-join and SIR enabling
1d08326 - i3c: dw: Add hot-join support.
8f2cb03 - i3c: dw: Fix clearing queue thld
64bf145 - i3c: dw: Fix IBI intr programming
d9deb28 - i3c: dw: Remove ibi_capable property
54f5079 - i3c: dw: Use new *_enabled clk API
a0d48eb - i3c: dw: Add optional apb clock
4e89bc4 - i3c: dw: Save timing registers and other values
effd217 - i3c: dw: Add some functions for reusability
62fe9d0 - i3c: dw: Add power management support
2024.2
None
2024.1
None
2023.2
None
2023.1
Summary
Add a module parameter for scl timing
Commits
c0b1954 - i3c: master: dw: Add a module parameter for scl timing
2022.2
None
2022.1
Summary
Drop redundant disec call
Commits
5c34b8e - i3c: master: dw: Drop redundant disec call
Related Links
linux-xlnx/drivers/i3c/master/dw-i3c-master.c at xilinx-v2024.1 · Xilinx/linux-xlnx
© Copyright 2019 - 2022 Xilinx Inc. Privacy Policy