hc
2024-08-12 233ab1bd4c5697f5cdec94e60206e8c6ac609b4c
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
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ATMEL_SHA_REGS_H__
#define __ATMEL_SHA_REGS_H__
 
#define SHA_REG_DIGEST(x)        (0x80 + ((x) * 0x04))
#define SHA_REG_DIN(x)            (0x40 + ((x) * 0x04))
 
#define SHA_CR                0x00
#define SHA_CR_START            (1 << 0)
#define SHA_CR_FIRST            (1 << 4)
#define SHA_CR_SWRST            (1 << 8)
#define SHA_CR_WUIHV            (1 << 12)
#define SHA_CR_WUIEHV            (1 << 13)
 
#define SHA_MR                0x04
#define SHA_MR_MODE_MASK        (0x3 << 0)
#define SHA_MR_MODE_MANUAL        0x0
#define SHA_MR_MODE_AUTO        0x1
#define SHA_MR_MODE_PDC            0x2
#define SHA_MR_MODE_IDATAR0        0x2
#define SHA_MR_PROCDLY            (1 << 4)
#define SHA_MR_UIHV            (1 << 5)
#define SHA_MR_UIEHV            (1 << 6)
#define SHA_MR_ALGO_MASK        GENMASK(10, 8)
#define SHA_MR_ALGO_SHA1        (0 << 8)
#define SHA_MR_ALGO_SHA256        (1 << 8)
#define SHA_MR_ALGO_SHA384        (2 << 8)
#define SHA_MR_ALGO_SHA512        (3 << 8)
#define SHA_MR_ALGO_SHA224        (4 << 8)
#define SHA_MR_HMAC            (1 << 11)
#define    SHA_MR_DUALBUFF            (1 << 16)
 
#define SHA_FLAGS_ALGO_MASK    SHA_MR_ALGO_MASK
#define SHA_FLAGS_SHA1        SHA_MR_ALGO_SHA1
#define SHA_FLAGS_SHA256    SHA_MR_ALGO_SHA256
#define SHA_FLAGS_SHA384    SHA_MR_ALGO_SHA384
#define SHA_FLAGS_SHA512    SHA_MR_ALGO_SHA512
#define SHA_FLAGS_SHA224    SHA_MR_ALGO_SHA224
#define SHA_FLAGS_HMAC        SHA_MR_HMAC
#define SHA_FLAGS_HMAC_SHA1    (SHA_FLAGS_HMAC | SHA_FLAGS_SHA1)
#define SHA_FLAGS_HMAC_SHA256    (SHA_FLAGS_HMAC | SHA_FLAGS_SHA256)
#define SHA_FLAGS_HMAC_SHA384    (SHA_FLAGS_HMAC | SHA_FLAGS_SHA384)
#define SHA_FLAGS_HMAC_SHA512    (SHA_FLAGS_HMAC | SHA_FLAGS_SHA512)
#define SHA_FLAGS_HMAC_SHA224    (SHA_FLAGS_HMAC | SHA_FLAGS_SHA224)
#define SHA_FLAGS_MODE_MASK    (SHA_FLAGS_HMAC | SHA_FLAGS_ALGO_MASK)
 
#define SHA_IER                0x10
#define SHA_IDR                0x14
#define SHA_IMR                0x18
#define SHA_ISR                0x1C
#define SHA_INT_DATARDY            (1 << 0)
#define SHA_INT_ENDTX            (1 << 1)
#define SHA_INT_TXBUFE            (1 << 2)
#define SHA_INT_URAD            (1 << 8)
#define SHA_ISR_URAT_MASK        (0x7 << 12)
#define SHA_ISR_URAT_IDR        (0x0 << 12)
#define SHA_ISR_URAT_ODR        (0x1 << 12)
#define SHA_ISR_URAT_MR            (0x2 << 12)
#define SHA_ISR_URAT_WO            (0x5 << 12)
 
#define SHA_MSR                0x20
#define SHA_BCR                0x30
 
#define    SHA_HW_VERSION        0xFC
 
#define SHA_TPR                0x108
#define SHA_TCR                0x10C
#define SHA_TNPR            0x118
#define SHA_TNCR            0x11C
#define SHA_PTCR            0x120
#define SHA_PTCR_TXTEN        (1 << 8)
#define SHA_PTCR_TXTDIS        (1 << 9)
#define SHA_PTSR            0x124
#define SHA_PTSR_TXTEN        (1 << 8)
 
#endif /* __ATMEL_SHA_REGS_H__ */