firmware: smccc: Add SMCCC TRNG function call IDs
authorArd Biesheuvel <ardb@kernel.org>
Wed, 6 Jan 2021 10:34:49 +0000 (10:34 +0000)
committerWill Deacon <will@kernel.org>
Wed, 20 Jan 2021 12:31:43 +0000 (12:31 +0000)
The ARM architected TRNG firmware interface, described in ARM spec
DEN0098, define an ARM SMCCC based interface to a true random number
generator, provided by firmware.

Add the definitions of the SMCCC functions as defined by the spec.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Link: https://lore.kernel.org/r/20210106103453.152275-2-andre.przywara@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
include/linux/arm-smccc.h

index f860645f6512833c602aea5f277e896a0cf9a442..62c54234576c4ab3e7c5dc13495e0f3a6d905adc 100644 (file)
                           ARM_SMCCC_OWNER_STANDARD_HYP,        \
                           0x21)
 
+/* TRNG entropy source calls (defined by ARM DEN0098) */
+#define ARM_SMCCC_TRNG_VERSION                                 \
+       ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,                 \
+                          ARM_SMCCC_SMC_32,                    \
+                          ARM_SMCCC_OWNER_STANDARD,            \
+                          0x50)
+
+#define ARM_SMCCC_TRNG_FEATURES                                        \
+       ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,                 \
+                          ARM_SMCCC_SMC_32,                    \
+                          ARM_SMCCC_OWNER_STANDARD,            \
+                          0x51)
+
+#define ARM_SMCCC_TRNG_GET_UUID                                        \
+       ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,                 \
+                          ARM_SMCCC_SMC_32,                    \
+                          ARM_SMCCC_OWNER_STANDARD,            \
+                          0x52)
+
+#define ARM_SMCCC_TRNG_RND32                                   \
+       ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,                 \
+                          ARM_SMCCC_SMC_32,                    \
+                          ARM_SMCCC_OWNER_STANDARD,            \
+                          0x53)
+
+#define ARM_SMCCC_TRNG_RND64                                   \
+       ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,                 \
+                          ARM_SMCCC_SMC_64,                    \
+                          ARM_SMCCC_OWNER_STANDARD,            \
+                          0x53)
+
 /*
  * Return codes defined in ARM DEN 0070A
  * ARM DEN 0070A is now merged/consolidated into ARM DEN 0028 C