mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +00:00
c09bfc666c
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>
130 lines
3.7 KiB
Makefile
130 lines
3.7 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0+
|
|
|
|
obj-$(CONFIG_$(SPL_TPL_)BIOSEMU) += bios_emulator/
|
|
obj-$(CONFIG_$(SPL_TPL_)BLK) += block/
|
|
obj-$(CONFIG_$(SPL_TPL_)BOOTCOUNT_LIMIT) += bootcount/
|
|
obj-$(CONFIG_$(SPL_TPL_)BUTTON) += button/
|
|
obj-$(CONFIG_$(SPL_TPL_)CACHE) += cache/
|
|
obj-$(CONFIG_$(SPL_TPL_)CLK) += clk/
|
|
obj-$(CONFIG_$(SPL_TPL_)DM) += core/
|
|
obj-$(CONFIG_$(SPL_TPL_)DMA) += dma/
|
|
obj-$(CONFIG_$(SPL_TPL_)DMA_LEGACY) += dma/
|
|
obj-$(CONFIG_$(SPL_TPL_)DFU) += dfu/
|
|
obj-$(CONFIG_$(SPL_TPL_)EXTCON) += extcon/
|
|
obj-$(CONFIG_$(SPL_TPL_)GPIO) += gpio/
|
|
obj-$(CONFIG_$(SPL_TPL_)DRIVERS_MISC) += misc/
|
|
obj-$(CONFIG_$(SPL_TPL_)SYSRESET) += sysreset/
|
|
obj-$(CONFIG_$(SPL_TPL_)FIRMWARE) +=firmware/
|
|
obj-$(CONFIG_$(SPL_TPL_)I2C) += i2c/
|
|
obj-$(CONFIG_$(SPL_TPL_)INPUT) += input/
|
|
obj-$(CONFIG_$(SPL_TPL_)LED) += led/
|
|
obj-$(CONFIG_$(SPL_TPL_)MMC) += mmc/
|
|
obj-y += mtd/
|
|
obj-$(CONFIG_$(SPL_TPL_)ETH) += net/
|
|
obj-$(CONFIG_$(SPL_TPL_)PCH) += pch/
|
|
obj-$(CONFIG_$(SPL_TPL_)PCI) += pci/
|
|
obj-$(CONFIG_$(SPL_TPL_)PHY) += phy/
|
|
obj-$(CONFIG_$(SPL_TPL_)PINCTRL) += pinctrl/
|
|
obj-$(CONFIG_$(SPL_TPL_)POWER) += power/
|
|
obj-$(CONFIG_$(SPL_TPL_)RAM) += ram/
|
|
obj-$(CONFIG_$(SPL_TPL_)RTC) += rtc/
|
|
obj-$(CONFIG_$(SPL_TPL_)SERIAL) += serial/
|
|
obj-$(CONFIG_$(SPL_TPL_)SPI) += spi/
|
|
obj-$(CONFIG_$(SPL_TPL_)TIMER) += timer/
|
|
obj-$(CONFIG_$(SPL_TPL_)VIRTIO) += virtio/
|
|
obj-$(CONFIG_$(SPL_)DM_MAILBOX) += mailbox/
|
|
obj-$(CONFIG_$(SPL_)REMOTEPROC) += remoteproc/
|
|
obj-$(CONFIG_$(SPL_)SYSINFO) += sysinfo/
|
|
obj-$(CONFIG_$(SPL_TPL_)TPM) += tpm/
|
|
obj-$(CONFIG_$(SPL_)NVME) += nvme/
|
|
obj-$(CONFIG_XEN) += xen/
|
|
obj-$(CONFIG_$(SPL_)FPGA) += fpga/
|
|
obj-y += bus/
|
|
|
|
ifndef CONFIG_TPL_BUILD
|
|
ifndef CONFIG_VPL_BUILD
|
|
ifdef CONFIG_SPL_BUILD
|
|
|
|
obj-$(CONFIG_SPL_CPU) += cpu/
|
|
obj-$(CONFIG_SPL_CRYPTO) += crypto/
|
|
obj-$(CONFIG_SPL_MPC8XXX_INIT_DDR) += ddr/fsl/
|
|
obj-$(CONFIG_ARMADA_38X) += ddr/marvell/a38x/
|
|
obj-$(CONFIG_ARMADA_XP) += ddr/marvell/axp/
|
|
obj-$(CONFIG_$(SPL_)ALTERA_SDRAM) += ddr/altera/
|
|
obj-$(CONFIG_ARCH_IMX8M) += ddr/imx/imx8m/
|
|
obj-$(CONFIG_IMX8ULP_DRAM) += ddr/imx/imx8ulp/
|
|
obj-$(CONFIG_ARCH_IMX9) += ddr/imx/imx9/
|
|
obj-$(CONFIG_SPL_DM_RESET) += reset/
|
|
obj-$(CONFIG_SPL_MUSB_NEW) += usb/musb-new/
|
|
obj-$(CONFIG_SPL_USB_GADGET) += usb/gadget/
|
|
obj-$(CONFIG_SPL_USB_GADGET) += usb/common/
|
|
obj-$(CONFIG_SPL_USB_GADGET) += usb/gadget/udc/
|
|
obj-$(CONFIG_SPL_WATCHDOG) += watchdog/
|
|
obj-$(CONFIG_SPL_USB_HOST) += usb/host/
|
|
obj-$(CONFIG_SPL_SATA) += ata/ scsi/
|
|
obj-$(CONFIG_SPL_LEGACY_BLOCK) += block/
|
|
obj-$(CONFIG_SPL_THERMAL) += thermal/
|
|
obj-$(CONFIG_SPL_VIDEO) +=video/
|
|
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifdef CONFIG_TPL_BUILD
|
|
|
|
obj-$(CONFIG_TPL_MPC8XXX_INIT_DDR) += ddr/fsl/
|
|
|
|
endif
|
|
|
|
ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),)
|
|
|
|
obj-y += adc/
|
|
obj-y += ata/
|
|
obj-$(CONFIG_DM_DEMO) += demo/
|
|
obj-y += block/
|
|
obj-y += cache/
|
|
obj-$(CONFIG_CPU) += cpu/
|
|
obj-y += crypto/
|
|
obj-$(CONFIG_FASTBOOT) += fastboot/
|
|
obj-$(CONFIG_FWU_MDATA) += fwu-mdata/
|
|
obj-y += misc/
|
|
obj-$(CONFIG_MMC) += mmc/
|
|
obj-$(CONFIG_MULTIPLEXER) += mux/
|
|
obj-$(CONFIG_NVME) += nvme/
|
|
obj-$(CONFIG_PCI_ENDPOINT) += pci_endpoint/
|
|
obj-y += dfu/
|
|
obj-$(CONFIG_PCH) += pch/
|
|
obj-$(CONFIG_DM_REBOOT_MODE) += reboot-mode/
|
|
obj-y += rtc/
|
|
obj-y += scsi/
|
|
obj-y += sound/
|
|
obj-y += spmi/
|
|
obj-y += video/
|
|
obj-y += watchdog/
|
|
obj-$(CONFIG_QE) += qe/
|
|
obj-$(CONFIG_U_QE) += qe/
|
|
obj-y += mailbox/
|
|
obj-y += memory/
|
|
obj-y += mfd/
|
|
obj-y += mtd/
|
|
obj-y += pwm/
|
|
obj-y += reset/
|
|
obj-y += input/
|
|
obj-y += iommu/
|
|
# SOC specific infrastructure drivers.
|
|
obj-y += smem/
|
|
obj-y += thermal/
|
|
obj-$(CONFIG_TEE) += tee/
|
|
obj-$(CONFIG_ARM_FFA_TRANSPORT) += firmware/arm-ffa/
|
|
obj-y += axi/
|
|
obj-y += ufs/
|
|
obj-$(CONFIG_W1) += w1/
|
|
obj-$(CONFIG_W1_EEPROM) += w1-eeprom/
|
|
|
|
obj-$(CONFIG_MACH_PIC32) += ddr/microchip/
|
|
obj-$(CONFIG_FUZZ) += fuzz/
|
|
obj-$(CONFIG_DM_HWSPINLOCK) += hwspinlock/
|
|
obj-$(CONFIG_DM_RNG) += rng/
|
|
endif
|
|
|
|
obj-y += soc/
|