aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/char/hw_random/cctrng.h
blob: 1f2fde95adcbdf413caec95a28ae598e153fbdd4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (C) 2019-2020 ARM Limited or its affiliates. */

#include <linux/bitops.h>

#define POWER_DOWN_ENABLE 0x01
#define POWER_DOWN_DISABLE 0x00

/* hwrng quality: bits of true entropy per 1024 bits of input */
#define CC_TRNG_QUALITY	1024

/* CryptoCell TRNG HW definitions */
#define CC_TRNG_NUM_OF_ROSCS	4
/* The number of words generated in the entropy holding register (EHR)
 * 6 words (192 bit) according to HW implementation
 */
#define CC_TRNG_EHR_IN_WORDS	6
#define CC_TRNG_EHR_IN_BITS	(CC_TRNG_EHR_IN_WORDS * BITS_PER_TYPE(u32))

#define CC_HOST_RNG_IRQ_MASK BIT(CC_HOST_RGF_IRR_RNG_INT_BIT_SHIFT)

/* RNG interrupt mask */
#define CC_RNG_INT_MASK (BIT(CC_RNG_IMR_EHR_VALID_INT_MASK_BIT_SHIFT) | \
			 BIT(CC_RNG_IMR_AUTOCORR_ERR_INT_MASK_BIT_SHIFT) | \
			 BIT(CC_RNG_IMR_CRNGT_ERR_INT_MASK_BIT_SHIFT) | \
			 BIT(CC_RNG_IMR_VN_ERR_INT_MASK_BIT_SHIFT) | \
			 BIT(CC_RNG_IMR_WATCHDOG_INT_MASK_BIT_SHIFT))

// --------------------------------------
// BLOCK: RNG
// --------------------------------------
#define CC_RNG_IMR_REG_OFFSET	0x0100UL
#define CC_RNG_IMR_EHR_VALID_INT_MASK_BIT_SHIFT	0x0UL
#define CC_RNG_IMR_AUTOCORR_ERR_INT_MASK_BIT_SHIFT	0x1UL
#define CC_RNG_IMR_CRNGT_ERR_INT_MASK_BIT_SHIFT	0x2UL
#define CC_RNG_IMR_VN_ERR_INT_MASK_BIT_SHIFT	0x3UL
#define CC_RNG_IMR_WATCHDOG_INT_MASK_BIT_SHIFT	0x4UL
#define CC_RNG_ISR_REG_OFFSET	0x0104UL
#define CC_RNG_ISR_EHR_VALID_BIT_SHIFT	0x0UL
#define CC_RNG_ISR_EHR_VALID_BIT_SIZE	0x1UL
#define CC_RNG_ISR_AUTOCORR_ERR_BIT_SHIFT	0x1UL
#define CC_RNG_ISR_AUTOCORR_ERR_BIT_SIZE	0x1UL
#define CC_RNG_ISR_CRNGT_ERR_BIT_SHIFT	0x2UL
#define CC_RNG_ISR_CRNGT_ERR_BIT_SIZE	0x1UL
#define CC_RNG_ISR_WATCHDOG_BIT_SHIFT	0x4UL
#define CC_RNG_ISR_WATCHDOG_BIT_SIZE	0x1UL
#define CC_RNG_ICR_REG_OFFSET	0x0108UL
#define CC_TRNG_CONFIG_REG_OFFSET	0x010CUL
#define CC_EHR_DATA_0_REG_OFFSET	0x0114UL
#define CC_RND_SOURCE_ENABLE_REG_OFFSET	0x012CUL
#define CC_SAMPLE_CNT1_REG_OFFSET	0x0130UL
#define CC_TRNG_DEBUG_CONTROL_REG_OFFSET	0x0138UL
#define CC_RNG_SW_RESET_REG_OFFSET	0x0140UL
#define CC_RNG_CLK_ENABLE_REG_OFFSET	0x01C4UL
#define CC_RNG_DMA_ENABLE_REG_OFFSET	0x01C8UL
#define CC_RNG_WATCHDOG_VAL_REG_OFFSET	0x01D8UL
// --------------------------------------
// BLOCK: SEC_HOST_RGF
// --------------------------------------
#define CC_HOST_RGF_IRR_REG_OFFSET	0x0A00UL
#define CC_HOST_RGF_IRR_RNG_INT_BIT_SHIFT	0xAUL
#define CC_HOST_RGF_IMR_REG_OFFSET	0x0A04UL
#define CC_HOST_RGF_ICR_REG_OFFSET	0x0A08UL

#define CC_HOST_POWER_DOWN_EN_REG_OFFSET	0x0A78UL

// --------------------------------------
// BLOCK: NVM
// --------------------------------------
#define CC_NVM_IS_IDLE_REG_OFFSET	0x0F10UL
#define CC_NVM_IS_IDLE_VALUE_BIT_SHIFT	0x0UL
#define CC_NVM_IS_IDLE_VALUE_BIT_SIZE	0x1UL