hc
2025-02-14 bbb9540dc49f70f6b703d1c8d1b85fa5f602d86e
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/* SPDX-License-Identifier:     GPL-2.0+ */
/*
 * (C) Copyright 2019 Rockchip Electronics Co., Ltd
 */
 
#ifndef _ROCKCHIP_CRYPTO_V1_H_
#define _ROCKCHIP_CRYPTO_V1_H_
 
struct rk_crypto_reg {
   u32 crypto_intsts;
   u32 crypto_intena;
   u32 crypto_ctrl;
   u32 crypto_conf;
   u32 crypto_brdmas;
   u32 crypto_btdmas;
   u32 crypto_brdmal;
   u32 crypto_hrdmas;
   u32 crypto_hrdmal;
   u32 reserved0[(0x80 - 0x24) / 4];
 
   u32 crypto_aes_ctrl;
   u32 crypto_aes_sts;
   u32 crypto_aes_din[4];
   u32 crypto_aes_dout[4];
   u32 crypto_aes_iv[4];
   u32 crypto_aes_key[8];
   u32 crypto_aes_cnt[4];
   u32 reserved1[(0x100 - 0xe8) / 4];
 
   u32 crypto_tdes_ctrl;
   u32 crypto_tdes_sts;
   u32 crypto_tdes_din[2];
   u32 crypto_tdes_dout[2];
   u32 crypto_tdes_iv[2];
   u32 crypto_tdes_key1[2];
   u32 crypto_tdes_key2[2];
   u32 crypto_tdes_key3[2];
   u32 reserved2[(0x180 - 0x138) / 4];
 
   u32 crypto_hash_ctrl;
   u32 crypto_hash_sts;
   u32 crypto_hash_msg_len;
   u32 crypto_hash_dout[8];
   u32 crypto_hash_seed[5];
   u32 reserved3[(0x200 - 0x1c0) / 4];
 
   u32 crypto_trng_ctrl;
   u32 crypto_trng_dout[8];
   u32 reserved4[(0x280 - 0x224) / 4];
 
   u32 crypto_pka_ctrl;
   u32 reserved5[(0x400 - 0x284) / 4];
 
   u32 crypto_pka_m[(0x500 - 0x400) / 4];
   u32 crypto_pka_c[(0x600 - 0x500) / 4];
   u32 crypto_pka_n[(0x700 - 0x600) / 4];
   u32 crypto_pka_e;
};
 
check_member(rk_crypto_reg, crypto_pka_e, 0x700);
 
/************************ Register bits definition ****************************/
/* CRYPTO_HASH_CTRL */
#define ENGINE_SELECTION_SHA1        0x0
#define ENGINE_SELECTION_MD5        0x1
#define ENGINE_SELECTION_SHA256        0x2
#define HASH_SWAP_DO            0x8
 
/* CRYPTO_CONF */
#define HR_ADDR_MODE            BIT(8)
#define BT_ADDR_MODE            BIT(7)
#define BR_ADDR_MODE            BIT(6)
#define BYTESWAP_HRFIFO            BIT(5)
#define BYTESWAP_BTFIFO            BIT(4)
#define BYTESWAP_BRFIFO            BIT(3)
#define DESSEL                BIT(2)
 
/* CRYPTO_CTRL */
#define TRNG_FLUSH            BIT(9)
#define TRNG_START            BIT(8)
#define PKA_FLUSH            BIT(7)
#define HASH_FLUSH            BIT(6)
#define BLOCK_FLUSH            BIT(5)
#define PKA_START            BIT(4)
#define HASH_START            BIT(3)
#define BLOCK_START            BIT(2)
#define TDES_START            BIT(1)
#define AES_START            BIT(0)
#define PKA_HASH_CTRL            (PKA_FLUSH | HASH_FLUSH)
#define PKA_CTRL            (PKA_FLUSH | PKA_START)
 
/* CRYPTO_INTSTS */
#define PKA_DONE_INT            BIT(5)
#define HASH_DONE_INT            BIT(4)
#define HRDMA_ERR_INT            BIT(3)
#define HRDMA_DONE_INT            BIT(2)
#define BCDMA_ERR_INT            BIT(1)
#define BCDMA_DONE_INT            BIT(0)
 
/* CRYPTO_PKA_CTRL */
#define PKA_BLOCK_SIZE_512        0
#define PKA_BLOCK_SIZE_1024        1
#define PKA_BLOCK_SIZE_2048        2
 
#endif