AMD Linux I3C driver
Introduction
This page provides information about the AMD I3C driver, which can be found on AMD/Xilinx Git and mainline as amd-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
MIPI I3C Specification v1.1.1 compatible
Two wire serial interface up to 12.5 MHz
Single data rate (SDR) only Primary Controller
SDR only Target
SDR only Secondary Controller (SC)
Support for direct and broadcast common command codes (CCC)
Support for CCC Retry
Legacy inter-integrated circuit (I2C) support as per the MIPI I3C Specification v1.1.1
Dynamic addressing support
In-band interrupt (IBI)
Hot-Join support
Known issues and limitations
IBI and Hot-Join features not supported
Kernel Configuration
The following config options need to be enabled:
CONFIG_AMD_I3C_MASTER
It depends on I3C and HAS_IOMEM
Devicetree
Refer to Documentation/devicetree/bindings/i3c/xlnx,axi-i3c-1.0.yaml for complete description.
Example
The following example shows adding an I3C node to the devicetree:
i3c@80000000 {
compatible = "xlnx,axi-i3c-1.0";
reg = <0x80000000 0x10000>;
clocks = <&zynqmp_clk 71>;
interrupt-parent = <&imux>;
interrupts = <0 89 4>;
#address-cells = <3>;
#size-cells = <0>;
};Test procedure
This section details the getting of values from the sensor interfaced to i3c:
1. Apply above attached client test driver patch to exercise the driver from sysfs
2. Enable the configs:
CONFIG_I3C=y
CONFIG_I3C_CLIENT_TEST=y
3. Build the kernel and boot the target.
# 4.1 Master registered and target enumerated
ls /sys/bus/i3c/devices/
# expect: i3c-0 AND 0-<PID> (e.g. 0-55800000000)
# 4.2 Driver bound + sysfs ready
dmesg | grep -i -E "i3c|axi_i3c|client_test"
# expect: master probe OK, "i3c_client_test with sysfs ready", no probe error
5. DEV=$(echo /sys/bus/i3c/devices/[0-9]*-*)
cd "$DEV"
6. echo "00 01 02 ff" > "$DEV/tx_data"
dmesg | tail -3 #Expected: TX transfer sent 4 bytes., no error.
7. echo 4 > "$DEV/rx_len"
cat "$DEV/rx_data"
dmesg | tail -3 #Expected: 4 bytes returned; dmesg shows NUM_BYTES=4 and RX requested 4, actual_len 4.
Mainline Status
No Mainlined
Changelog
2026.1
None
2025.2
Summary
i3c: master: Add AMD I3C bus controller driver
Commits
16a2a853f1bd -i3c: master: Add AMD I3C bus controller driver
Related Links
linux-xlnx/drivers/i3c/master/dw-i3c-master.c at xilinx-v2024.1 · Xilinx/linux-xlnx