Skip to content
Snippets Groups Projects
  • Abdellatif El Khlifi's avatar
    39d383bd
    arm_ffa: introduce Arm FF-A support · 39d383bd
    Abdellatif El Khlifi authored and Tom Rini's avatar Tom Rini committed
    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: default avatarAbdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
    Reviewed-by: Simon Glass's avatarSimon Glass <sjg@chromium.org>
    Reviewed-by: default avatarIlias Apalodimas <ilias.apalodimas@linaro.org>
    Cc: Tom Rini <trini@konsulko.com>
    Cc: Jens Wiklander <jens.wiklander@linaro.org>
    Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
    39d383bd
    History
    arm_ffa: introduce Arm FF-A support
    Abdellatif El Khlifi authored and Tom Rini's avatar Tom Rini committed
    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: default avatarAbdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
    Reviewed-by: Simon Glass's avatarSimon Glass <sjg@chromium.org>
    Reviewed-by: default avatarIlias Apalodimas <ilias.apalodimas@linaro.org>
    Cc: Tom Rini <trini@konsulko.com>
    Cc: Jens Wiklander <jens.wiklander@linaro.org>
    Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>