]> git.ipfire.org Git - thirdparty/u-boot.git/commit
Introduce the Generic System Interconnect Subsystem
authorNeil Armstrong <neil.armstrong@linaro.org>
Thu, 20 Nov 2025 08:12:52 +0000 (09:12 +0100)
committerNeil Armstrong <neil.armstrong@linaro.org>
Thu, 20 Nov 2025 08:17:58 +0000 (09:17 +0100)
commit60a99d5ca374c83c0118f2634a7fcf4cc707b965
tree245cf232f7a3e37f522ab84a22d4fecd79cee9d6
parenta264c0454b8ddd8c5ac0ed29623c72f65ec4d53f
Introduce the Generic System Interconnect Subsystem

Let's introduce the Generic System Interconnect subsystem based on
the counterpart Linux framework which is used to vote for bandwidth
across multiple SoC busses.

Documentation for the Linux Generic System Interconnect Subsystem can
be found at [1].

Each bus endpoints are materialised as "nodes" which are linked together,
and the DT will specify a pair of nodes to enable and set a bandwidth
on the route between those endpoints.

The hardware resources that provide those nodes and provides the way
to vote for the bandwidth are called "providers".

The Interconnect uclass code is heavily based on the Linux one, with
some small differences:
- nodes are allocated as udevices instead of Linux idr_alloc()
- tag management is minimal, only normal xlate is supported
- getting nodes states at probe is not implemented
- providers are probed on demand while the nodes links are traversed
- nodes are populated on bind
- id management is simplified, static IDs and dynamics IDs can be used
- identical consume API as Linux, only implementation differs

Fully tested with associated DM test suite.

[1] https://docs.kernel.org/driver-api/interconnect.html

Link: https://patch.msgid.link/20251120-topic-interconnect-next-v5-1-e8a82720da5d@linaro.org
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
doc/api/index.rst
doc/api/interconnect.rst [new file with mode: 0644]
drivers/Kconfig
drivers/Makefile
drivers/interconnect/Kconfig [new file with mode: 0644]
drivers/interconnect/Makefile [new file with mode: 0644]
drivers/interconnect/interconnect-uclass.c [new file with mode: 0644]
include/dm/uclass-id.h
include/interconnect-uclass.h [new file with mode: 0644]
include/interconnect.h [new file with mode: 0644]