/** @file
This library abstract how to access TPM CRB over FF-A accesses hardware device.
Copyright (c) 2026, Arm ltd. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#pragma once
#include
/**
Issue TPM command or locality request to FF-A CRB device.
@param[in] Qualifier Qualifier.
@param[in] Locality Locality.
@retval EFI_SUCCESS The command byte stream was successfully sent to the device and a response was successfully received.
@retval EFI_INVALID_PARAMETER Invalid arguments.
@retval EFI_DEVICE_ERROR CRB control data or locality conrol data is not valid.
@retval EFI_ACCESS_DENIED locality requests or command processing at given locality is disabled.
**/
EFI_STATUS
EFIAPI
TpmCrbFfaDeviceStart (
IN UINT8 Qualifier,
IN UINT8 Locality
);
/**
Get CRB information.
@param[in] Locality Locality.
@param[out] BaseAddress CRB base address.
@param[out] Size CRB region size.
@retval EFI_SUCCESS
@retval EFI_INVALID_PARAMETER Invalid arguments.
**/
EFI_STATUS
EFIAPI
TpmCrbFfaDeviceGetCrbInfo (
IN UINT8 Locality,
OUT EFI_PHYSICAL_ADDRESS *BaseAddress,
OUT UINTN *Size
);
/**
Check whether FF-A CRB device is available
@retval TRUE Available.
@retval FALSE Unavailable.
**/
BOOLEAN
EFIAPI
TpmCrbFfaDeviceIsAvailable (
VOID
);