xref: /rk3399_ARM-atf/plat/nvidia/tegra/soc/t186/drivers/se/se_private.h (revision 65012c08922fa5646ca7ca485036dfd901cae360)
1*4eed9c84SJeetesh Burman /*
2*4eed9c84SJeetesh Burman  * Copyright (c) 2020, NVIDIA Corporation. All rights reserved.
3*4eed9c84SJeetesh Burman  *
4*4eed9c84SJeetesh Burman  * SPDX-License-Identifier: BSD-3-Clause
5*4eed9c84SJeetesh Burman  */
6*4eed9c84SJeetesh Burman 
7*4eed9c84SJeetesh Burman #ifndef SE_PRIVATE_H
8*4eed9c84SJeetesh Burman #define SE_PRIVATE_H
9*4eed9c84SJeetesh Burman 
10*4eed9c84SJeetesh Burman #include <lib/utils_def.h>
11*4eed9c84SJeetesh Burman 
12*4eed9c84SJeetesh Burman /* SE0 security register */
13*4eed9c84SJeetesh Burman #define SE0_SECURITY				U(0x18)
14*4eed9c84SJeetesh Burman #define SE0_SECURITY_SE_SOFT_SETTING		(((uint32_t)1) << 16U)
15*4eed9c84SJeetesh Burman 
16*4eed9c84SJeetesh Burman /* SE0 config register */
17*4eed9c84SJeetesh Burman #define SE0_SHA_CONFIG				U(0x104)
18*4eed9c84SJeetesh Burman #define SE0_SHA_TASK_CONFIG			U(0x108)
19*4eed9c84SJeetesh Burman #define SE0_SHA_CONFIG_HW_INIT_HASH		((1U) << 0U)
20*4eed9c84SJeetesh Burman #define SE0_SHA_CONFIG_HW_INIT_HASH_DISABLE	U(0)
21*4eed9c84SJeetesh Burman 
22*4eed9c84SJeetesh Burman #define SE0_CONFIG_ENC_ALG_SHIFT		U(12)
23*4eed9c84SJeetesh Burman #define SE0_CONFIG_ENC_ALG_SHA	\
24*4eed9c84SJeetesh Burman 		(((uint32_t)3) << SE0_CONFIG_ENC_ALG_SHIFT)
25*4eed9c84SJeetesh Burman #define SE0_CONFIG_DEC_ALG_SHIFT		U(8)
26*4eed9c84SJeetesh Burman #define SE0_CONFIG_DEC_ALG_NOP	\
27*4eed9c84SJeetesh Burman 		(((uint32_t)0) << SE0_CONFIG_DEC_ALG_SHIFT)
28*4eed9c84SJeetesh Burman #define SE0_CONFIG_DST_SHIFT			U(2)
29*4eed9c84SJeetesh Burman #define SE0_CONFIG_DST_HASHREG	\
30*4eed9c84SJeetesh Burman 		(((uint32_t)1) << SE0_CONFIG_DST_SHIFT)
31*4eed9c84SJeetesh Burman #define SHA256_HASH_SIZE_BYTES			U(256)
32*4eed9c84SJeetesh Burman 
33*4eed9c84SJeetesh Burman #define SE0_CONFIG_ENC_MODE_SHIFT		U(24)
34*4eed9c84SJeetesh Burman #define SE0_CONFIG_ENC_MODE_SHA256	\
35*4eed9c84SJeetesh Burman 			(((uint32_t)5) << SE0_CONFIG_ENC_MODE_SHIFT)
36*4eed9c84SJeetesh Burman 
37*4eed9c84SJeetesh Burman /* SHA input message length */
38*4eed9c84SJeetesh Burman #define SE0_SHA_MSG_LENGTH_0			U(0x11c)
39*4eed9c84SJeetesh Burman #define SE0_SHA_MSG_LENGTH_1			U(0x120)
40*4eed9c84SJeetesh Burman #define SE0_SHA_MSG_LENGTH_2			U(0x124)
41*4eed9c84SJeetesh Burman #define SE0_SHA_MSG_LENGTH_3			U(0x128)
42*4eed9c84SJeetesh Burman 
43*4eed9c84SJeetesh Burman /* SHA input message left  */
44*4eed9c84SJeetesh Burman #define SE0_SHA_MSG_LEFT_0			U(0x12c)
45*4eed9c84SJeetesh Burman #define SE0_SHA_MSG_LEFT_1			U(0x130)
46*4eed9c84SJeetesh Burman #define SE0_SHA_MSG_LEFT_2			U(0x134)
47*4eed9c84SJeetesh Burman #define SE0_SHA_MSG_LEFT_3			U(0x138)
48*4eed9c84SJeetesh Burman 
49*4eed9c84SJeetesh Burman /* SE Hash Result */
50*4eed9c84SJeetesh Burman #define SE0_SHA_HASH_RESULT_0			U(0x13c)
51*4eed9c84SJeetesh Burman 
52*4eed9c84SJeetesh Burman /* SE OPERATION */
53*4eed9c84SJeetesh Burman #define SE0_OPERATION_REG_OFFSET		U(0x17c)
54*4eed9c84SJeetesh Burman #define SE0_UNIT_OPERATION_PKT_LASTBUF_SHIFT	U(16)
55*4eed9c84SJeetesh Burman #define SE0_UNIT_OPERATION_PKT_LASTBUF_FIELD	\
56*4eed9c84SJeetesh Burman 		(((uint32_t)0x1) << SE0_UNIT_OPERATION_PKT_LASTBUF_SHIFT)
57*4eed9c84SJeetesh Burman #define SE0_OPERATION_SHIFT			U(0)
58*4eed9c84SJeetesh Burman #define SE0_OP_START	\
59*4eed9c84SJeetesh Burman 		(((uint32_t)0x1) << SE0_OPERATION_SHIFT)
60*4eed9c84SJeetesh Burman 
61*4eed9c84SJeetesh Burman /* SE Interrupt */
62*4eed9c84SJeetesh Burman #define SE0_SHA_INT_ENABLE			U(0x180)
63*4eed9c84SJeetesh Burman 
64*4eed9c84SJeetesh Burman #define SE0_INT_STATUS_REG_OFFSET		U(0x184)
65*4eed9c84SJeetesh Burman #define SE0_INT_OP_DONE_SHIFT			U(4)
66*4eed9c84SJeetesh Burman #define SE0_INT_OP_DONE_CLEAR	\
67*4eed9c84SJeetesh Burman 		(((uint32_t)0) << SE0_INT_OP_DONE_SHIFT)
68*4eed9c84SJeetesh Burman #define SE0_INT_OP_DONE(x)	\
69*4eed9c84SJeetesh Burman 		((x) & (((uint32_t)0x1) << SE0_INT_OP_DONE_SHIFT))
70*4eed9c84SJeetesh Burman 
71*4eed9c84SJeetesh Burman /* SE SHA status */
72*4eed9c84SJeetesh Burman #define SE0_SHA_STATUS_0			U(0x188)
73*4eed9c84SJeetesh Burman #define SE0_SHA_STATUS_IDLE			U(0)
74*4eed9c84SJeetesh Burman 
75*4eed9c84SJeetesh Burman /* SE error status */
76*4eed9c84SJeetesh Burman #define SE0_ERR_STATUS_REG_OFFSET		U(0x18c)
77*4eed9c84SJeetesh Burman #define SE0_ERR_STATUS_CLEAR			U(0)
78*4eed9c84SJeetesh Burman #define SE0_IN_ADDR				U(0x10c)
79*4eed9c84SJeetesh Burman #define SE0_IN_HI_ADDR_HI			U(0x110)
80*4eed9c84SJeetesh Burman #define SE0_IN_HI_ADDR_HI_0_MSB_SHIFT		U(24)
81*4eed9c84SJeetesh Burman 
82*4eed9c84SJeetesh Burman /* SE error status */
83*4eed9c84SJeetesh Burman #define SECURE_SCRATCH_TZDRAM_SHA256_HASH_START	SECURE_SCRATCH_RSV63_LO
84*4eed9c84SJeetesh Burman #define SECURE_SCRATCH_TZDRAM_SHA256_HASH_END	SECURE_SCRATCH_RSV66_HI
85*4eed9c84SJeetesh Burman 
86*4eed9c84SJeetesh Burman /*******************************************************************************
87*4eed9c84SJeetesh Burman  * Inline functions definition
88*4eed9c84SJeetesh Burman  ******************************************************************************/
89*4eed9c84SJeetesh Burman 
tegra_se_read_32(uint32_t offset)90*4eed9c84SJeetesh Burman static inline uint32_t tegra_se_read_32(uint32_t offset)
91*4eed9c84SJeetesh Burman {
92*4eed9c84SJeetesh Burman 	return mmio_read_32((uint32_t)(TEGRA_SE0_BASE + offset));
93*4eed9c84SJeetesh Burman }
94*4eed9c84SJeetesh Burman 
tegra_se_write_32(uint32_t offset,uint32_t val)95*4eed9c84SJeetesh Burman static inline void tegra_se_write_32(uint32_t offset, uint32_t val)
96*4eed9c84SJeetesh Burman {
97*4eed9c84SJeetesh Burman 	mmio_write_32(((uint32_t)(TEGRA_SE0_BASE + offset)), val);
98*4eed9c84SJeetesh Burman }
99*4eed9c84SJeetesh Burman 
100*4eed9c84SJeetesh Burman #endif /* SE_PRIVATE_H */
101