cctrng.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /* Copyright (C) 2019-2020 ARM Limited or its affiliates. */
  3. #include <linux/bitops.h>
  4. #define POWER_DOWN_ENABLE 0x01
  5. #define POWER_DOWN_DISABLE 0x00
  6. /* hwrng quality: bits of true entropy per 1024 bits of input */
  7. #define CC_TRNG_QUALITY 1024
  8. /* CryptoCell TRNG HW definitions */
  9. #define CC_TRNG_NUM_OF_ROSCS 4
  10. /* The number of words generated in the entropy holding register (EHR)
  11. * 6 words (192 bit) according to HW implementation
  12. */
  13. #define CC_TRNG_EHR_IN_WORDS 6
  14. #define CC_TRNG_EHR_IN_BITS (CC_TRNG_EHR_IN_WORDS * BITS_PER_TYPE(u32))
  15. #define CC_HOST_RNG_IRQ_MASK BIT(CC_HOST_RGF_IRR_RNG_INT_BIT_SHIFT)
  16. /* RNG interrupt mask */
  17. #define CC_RNG_INT_MASK (BIT(CC_RNG_IMR_EHR_VALID_INT_MASK_BIT_SHIFT) | \
  18. BIT(CC_RNG_IMR_AUTOCORR_ERR_INT_MASK_BIT_SHIFT) | \
  19. BIT(CC_RNG_IMR_CRNGT_ERR_INT_MASK_BIT_SHIFT) | \
  20. BIT(CC_RNG_IMR_VN_ERR_INT_MASK_BIT_SHIFT) | \
  21. BIT(CC_RNG_IMR_WATCHDOG_INT_MASK_BIT_SHIFT))
  22. // --------------------------------------
  23. // BLOCK: RNG
  24. // --------------------------------------
  25. #define CC_RNG_IMR_REG_OFFSET 0x0100UL
  26. #define CC_RNG_IMR_EHR_VALID_INT_MASK_BIT_SHIFT 0x0UL
  27. #define CC_RNG_IMR_AUTOCORR_ERR_INT_MASK_BIT_SHIFT 0x1UL
  28. #define CC_RNG_IMR_CRNGT_ERR_INT_MASK_BIT_SHIFT 0x2UL
  29. #define CC_RNG_IMR_VN_ERR_INT_MASK_BIT_SHIFT 0x3UL
  30. #define CC_RNG_IMR_WATCHDOG_INT_MASK_BIT_SHIFT 0x4UL
  31. #define CC_RNG_ISR_REG_OFFSET 0x0104UL
  32. #define CC_RNG_ISR_EHR_VALID_BIT_SHIFT 0x0UL
  33. #define CC_RNG_ISR_EHR_VALID_BIT_SIZE 0x1UL
  34. #define CC_RNG_ISR_AUTOCORR_ERR_BIT_SHIFT 0x1UL
  35. #define CC_RNG_ISR_AUTOCORR_ERR_BIT_SIZE 0x1UL
  36. #define CC_RNG_ISR_CRNGT_ERR_BIT_SHIFT 0x2UL
  37. #define CC_RNG_ISR_CRNGT_ERR_BIT_SIZE 0x1UL
  38. #define CC_RNG_ISR_WATCHDOG_BIT_SHIFT 0x4UL
  39. #define CC_RNG_ISR_WATCHDOG_BIT_SIZE 0x1UL
  40. #define CC_RNG_ICR_REG_OFFSET 0x0108UL
  41. #define CC_TRNG_CONFIG_REG_OFFSET 0x010CUL
  42. #define CC_EHR_DATA_0_REG_OFFSET 0x0114UL
  43. #define CC_RND_SOURCE_ENABLE_REG_OFFSET 0x012CUL
  44. #define CC_SAMPLE_CNT1_REG_OFFSET 0x0130UL
  45. #define CC_TRNG_DEBUG_CONTROL_REG_OFFSET 0x0138UL
  46. #define CC_RNG_SW_RESET_REG_OFFSET 0x0140UL
  47. #define CC_RNG_CLK_ENABLE_REG_OFFSET 0x01C4UL
  48. #define CC_RNG_DMA_ENABLE_REG_OFFSET 0x01C8UL
  49. #define CC_RNG_WATCHDOG_VAL_REG_OFFSET 0x01D8UL
  50. // --------------------------------------
  51. // BLOCK: SEC_HOST_RGF
  52. // --------------------------------------
  53. #define CC_HOST_RGF_IRR_REG_OFFSET 0x0A00UL
  54. #define CC_HOST_RGF_IRR_RNG_INT_BIT_SHIFT 0xAUL
  55. #define CC_HOST_RGF_IMR_REG_OFFSET 0x0A04UL
  56. #define CC_HOST_RGF_ICR_REG_OFFSET 0x0A08UL
  57. #define CC_HOST_POWER_DOWN_EN_REG_OFFSET 0x0A78UL
  58. // --------------------------------------
  59. // BLOCK: NVM
  60. // --------------------------------------
  61. #define CC_NVM_IS_IDLE_REG_OFFSET 0x0F10UL
  62. #define CC_NVM_IS_IDLE_VALUE_BIT_SHIFT 0x0UL
  63. #define CC_NVM_IS_IDLE_VALUE_BIT_SIZE 0x1UL