interconnect: Add generic interconnect driver for Exynos SoCs
authorSylwester Nawrocki <s.nawrocki@samsung.com>
Thu, 12 Nov 2020 14:09:28 +0000 (15:09 +0100)
committerGeorgi Djakov <georgi.djakov@linaro.org>
Mon, 30 Nov 2020 15:26:22 +0000 (17:26 +0200)
commit2f95b9d5cf0b3d15154225e369558a3c6b40e948
treecea7f0b75f6c24834027cd6f120adabf0dfbe0a9
parentbe49d5b2985bca407d130305ad78021d3c17db19
interconnect: Add generic interconnect driver for Exynos SoCs

This patch adds a generic interconnect driver for Exynos SoCs in order
to provide interconnect functionality for each "samsung,exynos-bus"
compatible device.

The SoC topology is a graph (or more specifically, a tree) and its
edges are described by specifying in the 'interconnects' property
the interconnect consumer path for each interconnect provider DT node.

Each bus is now an interconnect provider and an interconnect node as
well (cf. Documentation/interconnect/interconnect.rst), i.e. every bus
registers itself as a node. Node IDs are not hard coded but rather
assigned dynamically at runtime. This approach allows for using this
driver with various Exynos SoCs.

Frequencies requested via the interconnect API for a given node are
propagated to devfreq using dev_pm_qos_update_request(). Please note
that it is not an error when CONFIG_INTERCONNECT is 'n', in which
case all interconnect API functions are no-op.

The samsung,data-clk-ratio DT property is used to specify the ratio
of the interconect bandwidth to the minimum data clock frequency
for each bus.

Due to unspecified relative probing order, -EPROBE_DEFER may be
propagated to ensure that the parent is probed before its children.

Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com>
Tested-by: Chanwoo Choi <cw00.choi@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Artur Świgoń <a.swigon@samsung.com>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Link: https://lore.kernel.org/r/20201112140931.31139-3-s.nawrocki@samsung.com
Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
drivers/interconnect/Kconfig
drivers/interconnect/Makefile
drivers/interconnect/samsung/Kconfig [new file with mode: 0644]
drivers/interconnect/samsung/Makefile [new file with mode: 0644]
drivers/interconnect/samsung/exynos.c [new file with mode: 0644]