DesignWare Linux I3C driver

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

image-20241205-093102.png

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:

image-20241205-094033.png

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 Drivers

linux-xlnx/drivers/i3c/master/dw-i3c-master.c at xilinx-v2024.1 · Xilinx/linux-xlnx

© Copyright 2019 - 2022 Xilinx Inc. Privacy Policy