bus: add driver for initializing the SSC bus on (some) qcom SoCs
authorMichael Srba <Michael.Srba@seznam.cz>
Mon, 11 Apr 2022 07:21:55 +0000 (09:21 +0200)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Tue, 19 Apr 2022 18:03:57 +0000 (13:03 -0500)
commit97d485edc1d9902c9ae3b2242144abdf85edd4c1
tree19acfa42005fdd6f808bafce853367017290d2b1
parent0b9fe9b7792f31674fbc8eb165c3b22a32d0a434
bus: add driver for initializing the SSC bus on (some) qcom SoCs

Add bindings for the AHB bus which exposes the SSC (Snapdragon Sensor Core)
block in the global address space. This bus (and the SSC block itself) is
present on certain qcom SoCs.

In typical configuration, this bus (as some of the clocks and registers
that we need to manipulate) is not accessible to Linux, and the resources
on this bus are indirectly accessed by communicating with a hexagon CPU
core residing in the SSC block. In this configuration, the hypervisor is
the one performing the bus initialization for the purposes of bringing
the hexagon CPU core out of reset.

However, it is possible to change the configuration, in which case this
driver will initialize the bus.

In combination with drivers for resources on the SSC bus, this driver can
aid in debugging, and for example with a TLMM driver can be used to
directly access SSC-dedicated GPIO pins, removing the need to commit
to a particular usecase during hw design.

Finally, until open firmware for the hexagon core is available, this
approach allows for using sensors hooked up to SSC-dedicated GPIO pins
on mainline Linux simply by utilizing the existing in-tree drivers for
these sensors.

Signed-off-by: Michael Srba <Michael.Srba@seznam.cz>
Reviewed-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20220411072156.24451-5-michael.srba@seznam.cz
drivers/bus/Kconfig
drivers/bus/Makefile
drivers/bus/qcom-ssc-block-bus.c [new file with mode: 0644]