]> git.proxmox.com Git - mirror_edk2.git/blob - ArmPkg/Library/ArmTrngLib/ArmTrngDefs.h
ArmPkg/ArmTrngLib: Add Arm TRNG library
[mirror_edk2.git] / ArmPkg / Library / ArmTrngLib / ArmTrngDefs.h
1 /** @file
2 Arm Firmware TRNG definitions.
3
4 Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.<BR>
5
6 SPDX-License-Identifier: BSD-2-Clause-Patent
7
8 @par Reference(s):
9 - [1] Arm True Random Number Generator Firmware, Interface 1.0,
10 Platform Design Document.
11 (https://developer.arm.com/documentation/den0098/latest/)
12
13 @par Glossary:
14 - TRNG - True Random Number Generator
15 - FID - Function ID
16 **/
17
18 #ifndef ARM_FW_TRNG_DEFS_H_
19 #define ARM_FW_TRNG_DEFS_H_
20
21 #include <IndustryStandard/ArmStdSmc.h>
22
23 // Firmware TRNG revision mask and shift
24 #define TRNG_REV_MAJOR_MASK 0x7FFF
25 #define TRNG_REV_MINOR_MASK 0xFFFF
26 #define TRNG_REV_MAJOR_SHIFT 16
27
28 #if defined (MDE_CPU_ARM)
29
30 /** FID to use on AArch32 platform to request entropy.
31 */
32 #define ARM_SMC_ID_TRNG_RND ARM_SMC_ID_TRNG_RND_AARCH32
33
34 /** Maximum bits of entropy supported on AArch32.
35 */
36 #define MAX_ENTROPY_BITS 96
37 #elif defined (MDE_CPU_AARCH64)
38
39 /** FID to use on AArch64 platform to request entropy.
40 */
41 #define ARM_SMC_ID_TRNG_RND ARM_SMC_ID_TRNG_RND_AARCH64
42
43 /** Maximum bits of entropy supported on AArch64.
44 */
45 #define MAX_ENTROPY_BITS 192
46 #else
47 #error "Firmware TRNG not supported. Unknown chipset."
48 #endif
49
50 #endif // ARM_FW_TRNG_DEFS_H_