firmware: scmi: Add OP-TEE transport
authorEtienne Carriere <etienne.carriere@linaro.org>
Tue, 9 Nov 2021 16:08:24 +0000 (17:08 +0100)
committerTom Rini <trini@konsulko.com>
Tue, 23 Nov 2021 18:54:43 +0000 (13:54 -0500)
commit48108f3a6aa76218ab8b8a0b76f38629d65e1047
treea23f35a4e99a20ff11561fc3b59c79eae0ca526a
parentfcb41d4db287129aaac3135881b669ad64e12a69
firmware: scmi: Add OP-TEE transport

This change implements an SCMI transport for agent interfacing the
OP-TEE SCMI service. OP-TEE provides an SCMI PTA (Pseudo-TA) for
non-secure world to send SCMI messages over an identified channel.
The driver implemented here uses a SMT shared memory for passing
messages between client and server.

The implementation opens and releases channel resources for each
passed SCMI message so that resources allocated (sessions) or
registered (shared memory areas) in OP-TEE firmware are released for
example before relocation as the driver will likely allocate/register
them back when probed after relocation.

The integration of the driver using dedicated config switch
CONFIG_SCMI_AGENT_OPTEE is designed on the model posted to the
U-Boot ML by Patrick Delaunay [1].

Link: [1] https://lore.kernel.org/all/20211028191222.v3.4.Ib2e58ee67f4d023823d8b5404332dc4d7e847277@changeid/
Cc: Patrick Delaunay <patrick.delaunay@foss.st.com>
Cc: Wolfgang Denk <wd@denx.de>
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
drivers/firmware/scmi/Kconfig
drivers/firmware/scmi/Makefile
drivers/firmware/scmi/optee_agent.c [new file with mode: 0644]