Neil Armstrong 60a99d5ca3 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>
2025-11-20 09:17:58 +01:00
..
2022-02-25 01:41:04 -05:00
2023-09-02 06:03:42 +02:00
2020-10-30 10:56:11 -04:00
2025-08-06 08:37:34 +02:00
2024-10-10 16:02:20 -06:00
2021-01-27 12:52:57 +01:00
2022-06-08 14:00:22 -04:00
2020-06-14 21:07:20 +02:00
2020-11-05 09:11:31 -07:00
2025-04-23 13:19:44 -06:00
2020-10-22 09:54:53 -04:00
2025-04-23 13:19:44 -06:00