arm-trusted-firmware/plat
Tanmay Shah 1397967490 feat(versal): add common interfaces to handle EEMI commands
This change adds common interfaces to handle commands from firmware driver
to power management controller. It removes big chunk of source line of code
that was handling each command separately and doing same repetitive work.

EEMI - Embedded Energy Management Interface is Xilinx proprietary
protocol to allow communication between power management controller
and different processing clusters.

As of now, Each EEMI command has its own implementation in TF-A.
This is redundant. Essentially most EEMI command implementation
in TF-A  does same work. It prepares payload received from kernel, sends
payload to firmware, receives response from firmware and send response
back to kernel.

The same functionality can be achieved if common interface is used among
multiple EEMI commands. This change divides platform management related
SMCCC requests into 4 categories.

1) EEMI commands required for backward compatibility.

Some EEMI commands are still required for backward compatibility
until removed completely or its use is changed to accommodate
common interface

2) EEMI commands that require for PSCI interface and accessed from debugfs

For example EEMI calls related to CPU suspend/resume

3) TF-A specific requests

Functionality such as getting TF-A version and getting callback
data for platform management is handled by this interface

4) Common interface for rest of EEMI commands

This handlers performs payload and firmware response transaction job for
rest of EEMI commands. Also it parses module ID from SMC payload and inserts
in IPI request. If not module ID is found, then default is LIBPM_MODULE_ID.
This helps in making common path in TF-A for all the modules in PLM firmware

Change-Id: I57a2787c7fff9f2e1d1f9003b3daab092632d57e
Signed-off-by: Tanmay Shah <tanmay.shah@xilinx.com>
2022-04-27 01:43:41 +02:00
..
allwinner feat(allwinner): allow to skip PMIC regulator setup 2021-12-27 15:32:22 +00:00
amlogic Plat AXG: Fix PLAT_MAX_PWR_LVL value 2020-12-29 13:52:11 +00:00
arm refactor(context mgmt): add cm_prepare_el3_exit_ns function 2022-04-12 17:42:11 +02:00
brcm fix(brcm): allow build to specify mbedTLS absolute path 2022-03-10 15:24:52 +00:00
common fix: libc: use long for 64-bit types on aarch64 2021-11-08 14:41:17 +00:00
hisilicon fix: libc: use long for 64-bit types on aarch64 2021-11-08 14:41:17 +00:00
imx feat(plat/imx/imx8m/imx8mm): add support for measured boot 2022-02-14 02:36:35 +08:00
intel/soc feat(intel): add macro to switch between different UART PORT 2022-04-05 14:25:30 +08:00
marvell fix(a3k): change fatal error to warning when CM3 reset is not implemented 2022-03-16 11:42:47 +01:00
mediatek feat(mt8186): add DFD control in SiP service 2022-03-11 17:47:05 +08:00
nvidia/tegra fix(tegra194/ras): remove incorrect erxctlr assert 2022-03-21 23:18:27 +02:00
nxp fix(layerscape): fix coverity issue 2022-03-30 10:38:22 +08:00
qemu feat(plat/qemu): add SPMD support with SPMC at S-EL1 2021-11-29 13:57:57 +01:00
qti feat(msm8916): allow booting secondary CPU cores 2022-02-03 15:19:26 +01:00
renesas Merge changes I25047322,Id476f815 into integration 2022-01-31 16:53:19 +01:00
rockchip refactor(plat/rockchip/rk3399/drivers/gpio): reduce code duplication 2022-01-04 15:26:43 +01:00
rpi fix: libc: use long for 64-bit types on aarch64 2021-11-08 14:41:17 +00:00
socionext Merge "fix(plat/socionext/synquacer): initialise CNTFRQ in Non Secure CNTBaseN" into integration 2021-12-09 15:03:19 +01:00
st Merge changes from topic "st_fwu_bkp_reg" into integration 2022-04-25 19:28:33 +02:00
ti/k3 plat: ti: k3: board: Let explicitly map our SEC_SRAM_BASE to 0x0 2021-03-26 02:25:44 -05:00
xilinx feat(versal): add common interfaces to handle EEMI commands 2022-04-27 01:43:41 +02:00