Devicetree
 help / color / mirror / Atom feed
* [PATCH 0/3] i3c: master: amd: Add IBI and hot-join support
@ 2026-08-14 11:51 Shubham Patil
  2026-08-14 11:51 ` [PATCH 1/3] dt-bindings: i3c: xlnx: Add IBI and hot-join capability properties Shubham Patil
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Shubham Patil @ 2026-08-14 11:51 UTC (permalink / raw)
  To: Alexandre Belloni, Frank Li, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley
  Cc: linux-i3c, devicetree, linux-kernel, Shubham Patil

This series adds In-Band Interrupt (IBI) and Hot-Join support to the AMD
AXI I3C master controller driver.

An In-Band Interrupt (IBI) replaces the dedicated interrupt pin an I2C
slave would otherwise need. When the bus is idle, a target wanting
attention pulls SDA low to generate a START, then drives its own dynamic
address with RnW=1 during the arbitrated address header. The controller
either ACKs the request, accepting the interrupt and optionally reading a
Mandatory Data Byte and payload, or NACKs it. The interrupt therefore
travels in band on SDA/SCL, saving a wire per device.

Hot-Join (HJ) lets a target that was not present at boot join a running
bus, after being powered up later or physically attached. Having no
dynamic address yet, it arbitrates using the reserved Hot-Join address;
the controller ACKs that and runs dynamic address assignment to enumerate
it. The same hardware arbitrates and ACKs it as an IBI.

Both features are synthesis-time options in the IP, so patch 1 adds two
boolean device tree properties, "xlnx,ibi-capable" and "xlnx,hj-capable",
to describe what a design implements. Hot-Join requests are ACKed by the
IBI machinery, so hj-capable depends on ibi-capable and the binding
enforces that. The controller interrupt only carries IBI and Hot-Join
events, so it is required only for ibi-capable designs. The driver
assembles its ops at probe from the capability flags.

Patch 2 adds IBI support. The IBI ACK enable and its interrupt mask are
controller-wide rather than per-target, so they are armed on the first
target to enable IBIs and disarmed on the last to disable them, with
per-target control left on the bus via ENEC/DISEC. IBIs also share the
response and read FIFOs with normal transfers and are distinguished only
by the reserved TID 0x0F, so the transfer path identifies IBI responses
by TID and discards them along with their payload. A raced IBI is
dropped rather than deferred.

Patch 3 adds Hot-Join. ENTDAA needs bus traffic and can sleep, so it
cannot run in the hard IRQ handler; the Hot-Join event is therefore
deferred to a work item that runs the re-enumeration.

Shubham Patil (3):
  dt-bindings: i3c: xlnx: Add IBI and hot-join capability properties
  i3c: master: amd: Add support for in-band interrupts
  i3c: master: amd: Add hot-join support

 .../bindings/i3c/xlnx,axi-i3c-1.0.yaml        |  23 +
 drivers/i3c/master/amd-i3c-master.c           | 593 +++++++++++++++++-
 2 files changed, 596 insertions(+), 20 deletions(-)


base-commit: 320722812708d34c11c2d067a018fcbeec6b64aa
-- 
2.34.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2026-08-14 17:07 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-14 11:51 [PATCH 0/3] i3c: master: amd: Add IBI and hot-join support Shubham Patil
2026-08-14 11:51 ` [PATCH 1/3] dt-bindings: i3c: xlnx: Add IBI and hot-join capability properties Shubham Patil
2026-08-14 15:38   ` Conor Dooley
2026-08-14 17:07   ` Frank Li
2026-08-14 11:51 ` [PATCH 2/3] i3c: master: amd: Add support for in-band interrupts Shubham Patil
2026-08-14 12:05   ` sashiko-bot
2026-08-14 11:51 ` [PATCH 3/3] i3c: master: amd: Add hot-join support Shubham Patil
2026-08-14 12:05   ` sashiko-bot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox