u-boot/drivers
Abdellatif El Khlifi c09bfc666c arm_ffa: introduce Arm FF-A support
Add Arm FF-A support implementing Arm Firmware Framework for Armv8-A v1.0

The Firmware Framework for Arm A-profile processors (FF-A v1.0) [1]
describes interfaces (ABIs) that standardize communication
between the Secure World and Normal World leveraging TrustZone
technology.

This driver uses 64-bit registers as per SMCCCv1.2 spec and comes
on top of the SMCCC layer. The driver provides the FF-A ABIs needed for
querying the FF-A framework from the secure world.

The driver uses SMC32 calling convention which means using the first
32-bit data of the Xn registers.

All supported ABIs come with their 32-bit version except FFA_RXTX_MAP
which has 64-bit version supported.

Both 32-bit and 64-bit direct messaging are supported which allows both
32-bit and 64-bit clients to use the FF-A bus.

FF-A is a discoverable bus and similar to architecture features.
FF-A bus is discovered using ARM_SMCCC_FEATURES mechanism performed
by the PSCI driver.

Clients are able to probe then use the FF-A bus by calling the DM class
searching APIs (e.g: uclass_first_device).

The Secure World is considered as one entity to communicate with
using the FF-A bus. FF-A communication is handled by one device and
one instance (the bus). This FF-A driver takes care of all the
interactions between Normal world and Secure World.

The driver exports its operations to be used by upper layers.

Exported operations:

- ffa_partition_info_get
- ffa_sync_send_receive
- ffa_rxtx_unmap

Generic FF-A methods are implemented in the Uclass (arm-ffa-uclass.c).
Arm specific methods are implemented in the Arm driver (arm-ffa.c).

For more details please refer to the driver documentation [2].

[1]: https://developer.arm.com/documentation/den0077/latest/
[2]: doc/arch/arm64.ffa.rst

Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: Jens Wiklander <jens.wiklander@linaro.org>
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
2023-07-24 15:30:03 -04:00
..
adc dm: adc: add iMX93 ADC support 2023-07-13 11:29:40 +02:00
ata arm64: zynqmp: Switch to amd.com emails 2023-07-21 09:00:38 +02:00
axi axi: fix definition of axi_sandbox_get_emul() 2023-06-01 12:32:03 -04:00
bios_emulator bios_emulator: Drop VIDEO_IO_OFFSET 2023-07-17 17:08:44 +08:00
block spl: blk: Support loading images from fs 2023-06-19 17:19:44 -04:00
bootcount global: Move remaining CONFIG_SYS_* to CFG_SYS_* 2022-12-05 16:06:08 -05:00
bus bus: Optionally include TI sysc driver in SPL/TPL 2022-12-02 08:39:00 -05:00
button dm: button: add support for linux_code in button-gpio.c driver 2023-02-10 12:50:01 -05:00
cache drivers: use dev_read_addr_ptr when cast to pointer 2023-05-06 17:28:18 +08:00
clk clk: starfive: jh7110: Add of_xlate ops and macros for clock id conversion 2023-07-24 13:21:16 +08:00
core core: read: fix dev_read_addr_size() 2023-07-20 14:10:57 -06:00
cpu imx9: add i.MX93 variants support 2023-05-21 16:54:41 +02:00
crypto Correct SPL uses of HW_WATCHDOG 2023-02-10 07:41:39 -05:00
ddr ddr: imx9: update the rank setting for multi fsp support 2023-05-21 16:54:41 +02:00
demo demo: migrate uclass to livetree 2021-10-05 08:50:15 -04:00
dfu dfu: Add proper dependency for CONFIG_DFU_MMC 2023-07-17 15:38:11 -04:00
dma dma: ti: k3-udma: Fix channel hang on teardown 2023-03-22 12:51:15 -04:00
extcon extcon: add MAX14526 MUIC support 2023-05-02 14:23:58 -04:00
fastboot fastboot: Only call the bootm command if it is enabled 2023-05-31 17:23:01 -04:00
firmware arm_ffa: introduce Arm FF-A support 2023-07-24 15:30:03 -04:00
fpga event: Add fpga load event 2023-07-21 09:00:39 +02:00
fuzz sandbox: Implement fuzzing engine driver 2022-06-23 12:58:19 -04:00
fwu-mdata FWU: Add FWU metadata access driver for MTD storage regions 2023-06-09 13:52:40 -04:00
gpio x86: Convert some debug statements to use logging 2023-07-17 17:23:14 +08:00
hwspinlock treewide: invaild -> invalid 2022-01-13 07:57:49 -05:00
i2c Merge tag v2023.07-rc4 into next 2023-06-12 14:55:33 -04:00
input input: Flush the keyboard buffer before resetting it 2023-05-11 10:25:29 +08:00
iommu iommu: Implement mapping IOMMUs for PCI devices 2023-01-27 14:47:58 -05:00
led drivers: led: bcm6753: do not use null label to find the top 2023-07-14 15:21:08 -04:00
mailbox mailbox: zynqmp: Enable ipi mailbox driver for Versal NET 2022-09-26 14:23:29 +02:00
memory memory: atmel-ebi: add Atmel EBI (External Bus Interface) driver 2022-12-08 18:06:27 +02:00
mfd mfd: syscon: atmel-smc: Add new helpers to ease SMC regs manipulation 2022-12-08 18:06:27 +02:00
misc x86: Record the start and end of the tables 2023-07-17 17:23:08 +08:00
mmc atmel_sdhci: Force card-detect if MMC_CAP_NONREMOVABLE. 2023-07-24 14:21:00 +03:00
mtd mtd: Add missing MTD dependency for cfi_mtd 2023-07-21 09:00:38 +02:00
mux Correct SPL uses of MULTIPLEXER 2023-03-02 17:45:58 -05:00
net net: axi_emac: Change return value to -EAGAIN if RX is not ready 2023-07-21 09:00:39 +02:00
nvme nvme: Provide more useful debugging messages 2023-07-17 17:12:26 +08:00
pch x86: Convert some debug statements to use logging 2023-07-17 17:23:14 +08:00
pci pci: Mask the ROM address in case it is already enabled 2023-07-17 17:12:26 +08:00
pci_endpoint dm: define LOG_CATEGORY for all uclass 2021-07-06 10:38:03 -06:00
phy phy: sun4i: Add H616 USB PHY support 2023-07-21 00:28:13 +01:00
pinctrl arm64: zynqmp: Switch to amd.com emails 2023-07-21 09:00:38 +02:00
power imx: mach: correct SCU API usage 2023-07-13 11:29:40 +02:00
pwm drivers: use dev_read_addr_ptr when cast to pointer 2023-05-06 17:28:18 +08:00
qe global: Finish CONFIG -> CFG migration 2023-01-20 12:27:24 -05:00
ram ram: k3-ddrss: do not touch ctrl regs during training 2023-07-21 15:32:12 -04:00
reboot-mode reboot-mode: Add NVMEM reboot mode 2023-01-11 11:54:50 -05:00
remoteproc remoteproc: ti_k3_arm64: Change the startup of arm64 core 2023-04-24 13:18:48 -04:00
reset core: read: fix dev_read_addr_size() 2023-07-20 14:10:57 -06:00
rng rockchip: rng: add trngv1 for rk3588 2023-04-21 15:16:01 +08:00
rtc drivers: rtc: add max313xx series rtc driver 2023-03-30 15:09:59 -04:00
scsi bootstd: Use bootdev instead of bootdevice 2023-07-16 23:13:17 +08:00
serial serial: pl01x: Modify pending callback to test if transmit FIFO is empty 2023-07-11 14:40:04 +02:00
smem smem: msm: add missing <linux/sizes.h> 2022-10-12 08:56:24 -04:00
soc arm64: zynqmp: Switch to amd.com emails 2023-07-21 09:00:38 +02:00
sound test: test sandbox sound driver more rigorously 2022-12-05 17:43:21 +01:00
spi cadence_qspi: Enable flash reset for Versal NET platform 2023-07-21 09:00:38 +02:00
spmi spmi: msm: add arbiter version 5 support 2021-10-31 08:46:44 -04:00
sysinfo sysinfo: gpio: fix loop over DT "revisions" array 2023-03-30 15:09:59 -04:00
sysreset sysreset: Change Kconfig GPIO dependency 2023-07-07 16:47:15 -04:00
tee drivers: tee: sandbox: Fix SCP03 control emulator 2023-04-28 11:30:17 -06:00
thermal imx: move imx8 sci header file to include/firmware/imx 2023-05-21 16:54:32 +02:00
timer riscv: Rename SiFive CLINT to RISC-V ALINT 2023-07-12 13:21:40 +08:00
tpm tpm: sandbox: Change the return code when device is already open 2023-02-28 09:44:25 +02:00
ufs ufs: Use 'TASK_TAG' to construct the ucd_req_ptr->header.dword_0 2023-07-14 15:21:08 -04:00
usb sunxi: Kconfig: rework PHY_USB_SUN4I selection 2023-07-21 00:26:36 +01:00
video drivers: video: Kconfig: Add config remove video 2023-07-21 15:32:12 -04:00
virtio virtio: Ensure PCI is set up first 2023-04-26 08:43:04 -04:00
w1 dm: treewide: Do not use the return value of simple uclass iterator 2022-10-29 07:36:33 -06:00
w1-eeprom dm: define LOG_CATEGORY for all uclass 2021-07-06 10:38:03 -06:00
watchdog arm64: zynqmp: Switch to amd.com emails 2023-07-21 09:00:38 +02:00
xen xen: Limit execution to EL1 only 2023-04-25 15:31:28 -04:00
Kconfig bios_emulator: Add Kconfig and adjust Makefile for SPL 2023-07-17 17:08:44 +08:00
Makefile arm_ffa: introduce Arm FF-A support 2023-07-24 15:30:03 -04:00