[PATCH 0/8] i3c: mipi-i3c-hci: Add Aspeed AST2700 support

Billy Tsai billy_tsai at aspeedtech.com
Tue Sep 1 04:35:27 PDT 2026


The Aspeed AST2700 SoC integrates an I3C host controller based on the
MIPI I3C HCI v1.1 programming model, extended with an in-house control
block and a PHY programming window. Both extra register regions are
advertised through a standard HCI vendor extended capability. This
series teaches the existing mipi-i3c-hci driver to drive the AST2700
controller without forking the driver.

The AST2700 specifics are expressed in two ways:

 - Deviations from generic HCI protocol behavior are expressed as
   individual quirks in the match data: the existing
   HCI_QUIRK_DMA_ABORT_REQUIRES_PIO_RESET, plus three new quirks for
   address-indexed DAT slots (HCI_QUIRK_DAT_INDEX_IS_ADDR), 64-bit DMA
   addressing (HCI_QUIRK_DMA_64BIT) and clearing the TX start threshold
   in DMA mode (HCI_QUIRK_TX_START_THLD).

 - Everything that depends on the ASPEED vendor capability actually
   being present -- programming the vendor register blocks (master
   mode init, PHY timing, the interrupt summary path, the IBI
   termination threshold and the DAA index registers), and selecting
   the IRQ handler and IRQF_SHARED at request_irq() time -- is keyed to
   is_aspeed(), a single explicit check set from the devicetree
   compatible in probe().

Generic MIPI I3C HCI controllers are unaffected.

The series is organised as follows:

 - Patch 1 documents the devicetree binding.

 - Patches 2-4 add the generic HCI quirks AST2700 needs --
   address-indexed DAT slots, 64-bit DMA addressing, and clearing the
   TX start threshold in DMA mode -- with no AST2700-specific code yet;
   nothing sets these quirks until patch 5.

 - Patch 5 ties it together: it recognizes the ASPEED vendor extended
   capability, brings the controller up for transfers (master mode,
   PHY timing, reset/clock resources, the interrupt summary path,
   master clock stall), and enables the quirks from patches 2-4 plus
   HCI_QUIRK_DMA_ABORT_REQUIRES_PIO_RESET for the
   "aspeed,ast2700-i3c-hci" compatible.

 - Patch 6 adds the IBI termination threshold, a safeguard against a
   misbehaving device that never terminates a payload IBI on its own.

 - Patches 7-8 tune bus behaviour: PIO TX queue utilization, and the
   PHY's built-in pull-ups for boards without external resistors.

Tested on an AST2700 EVB: the controller probes in DMA/PIO mode,
completes DAA and runs CCC, IBI and private transfers.

Assisted-by: Claude:claude-fable-5
Signed-off-by: Billy Tsai <billy_tsai at aspeedtech.com>
---
Billy Tsai (8):
      dt-bindings: i3c: Document the AST2700 I3C controller
      i3c: mipi-i3c-hci: Support address-indexed DAT slots
      i3c: mipi-i3c-hci: Add a quirk for 64-bit DMA addressing
      i3c: mipi-i3c-hci: Add a quirk to clear the TX start threshold
      i3c: mipi-i3c-hci: Add support for the AST2700 I3C controller
      i3c: mipi-i3c-hci: Program AST2700 IBI termination threshold
      i3c: mipi-i3c-hci: Improve AST2700 PIO TX queue utilization
      i3c: mipi-i3c-hci: Support the AST2700 internal pull-ups

 .../bindings/i3c/aspeed,ast2700-i3c-hci.yaml       | 133 +++++++
 drivers/i3c/master/mipi-i3c-hci/Makefile           |   2 +-
 drivers/i3c/master/mipi-i3c-hci/cmd_v1.c           |  56 ++-
 drivers/i3c/master/mipi-i3c-hci/core.c             | 229 ++++++++++--
 drivers/i3c/master/mipi-i3c-hci/dat.h              |   5 +-
 drivers/i3c/master/mipi-i3c-hci/dat_v1.c           |  63 +++-
 drivers/i3c/master/mipi-i3c-hci/ext_caps.c         |  15 +
 drivers/i3c/master/mipi-i3c-hci/ext_caps.h         |   1 +
 drivers/i3c/master/mipi-i3c-hci/hci.h              |   3 +
 drivers/i3c/master/mipi-i3c-hci/pio.c              | 122 ++-----
 drivers/i3c/master/mipi-i3c-hci/pio.h              | 109 ++++++
 drivers/i3c/master/mipi-i3c-hci/vendor_aspeed.c    | 383 +++++++++++++++++++++
 drivers/i3c/master/mipi-i3c-hci/vendor_aspeed.h    | 191 ++++++++++
 13 files changed, 1167 insertions(+), 145 deletions(-)
---
base-commit: 97f3c8379f91af507cbc3d491b87633f0583febc
change-id: 20260714-b4-i3c-hci-ast2700-bad726e20c01

Best regards,
-- 
Billy Tsai <billy_tsai at aspeedtech.com>




More information about the linux-arm-kernel mailing list