10
10
#include <registers/ctrl_regs.h>
11
11
#include <registers/version_regs.h>
12
12
13
+ uint8_t caam_hal_ctrl_era (vaddr_t baseaddr )
14
+ {
15
+ /* Read the number of instance */
16
+ uint32_t val = io_caam_read32 (baseaddr + CCBVID );
17
+
18
+ return GET_CCBVID_CAAM_ERA (val );
19
+ }
20
+
13
21
uint8_t caam_hal_ctrl_jrnum (vaddr_t baseaddr )
14
22
{
15
23
uint32_t val = 0 ;
24
+ uint8_t jrnum = 0 ;
16
25
17
- val = io_caam_read32 (baseaddr + CHANUM_MS );
26
+ if (caam_hal_ctrl_era (baseaddr ) < 10 ) {
27
+ val = io_caam_read32 (baseaddr + CHANUM_MS );
28
+ jrnum = GET_CHANUM_MS_JRNUM (val );
29
+ } else {
30
+ val = io_caam_read32 (baseaddr + JR_VERSION );
31
+ jrnum = GET_JR_VERSION_JRNUM (val );
32
+ }
18
33
19
- return GET_CHANUM_MS_JRNUM ( val ) ;
34
+ return jrnum ;
20
35
}
21
36
22
37
uint8_t caam_hal_ctrl_hash_limit (vaddr_t baseaddr )
23
38
{
24
39
uint32_t val = 0 ;
25
40
26
- /* Read the number of instance */
27
- val = io_caam_read32 (baseaddr + CHANUM_LS );
41
+ if (caam_hal_ctrl_era (baseaddr ) < 10 ) {
42
+ /* Read the number of instance */
43
+ val = io_caam_read32 (baseaddr + CHANUM_LS );
44
+
45
+ if (GET_CHANUM_LS_MDNUM (val )) {
46
+ /* Hashing is supported */
47
+ val = io_caam_read32 (baseaddr + CHAVID_LS );
48
+ val &= BM_CHAVID_LS_MDVID ;
49
+ if (val == CHAVID_LS_MDVID_LP256 )
50
+ return TEE_MAIN_ALGO_SHA256 ;
51
+
52
+ return TEE_MAIN_ALGO_SHA512 ;
53
+ }
54
+ } else {
55
+ /* Read the number of instance */
56
+ val = io_caam_read32 (baseaddr + MDHA_VERSION );
28
57
29
- if (GET_CHANUM_LS_MDNUM (val )) {
30
- /* Hashing is supported */
31
- val = io_caam_read32 (baseaddr + CHAVID_LS );
32
- val &= BM_CHAVID_LS_MDVID ;
33
- if (val == CHAVID_LS_MDVID_LP256 )
34
- return TEE_MAIN_ALGO_SHA256 ;
58
+ if (GET_MDHA_VERSION_MDNUM (val )) {
59
+ /* Hashing is supported */
60
+ val &= BM_MDHA_VERSION_MDVID ;
61
+ if (val == MDHA_VERSION_MDVID_LP256 )
62
+ return TEE_MAIN_ALGO_SHA256 ;
35
63
36
- return TEE_MAIN_ALGO_SHA512 ;
64
+ return TEE_MAIN_ALGO_SHA512 ;
65
+ }
37
66
}
38
67
39
68
return UINT8_MAX ;
@@ -42,18 +71,15 @@ uint8_t caam_hal_ctrl_hash_limit(vaddr_t baseaddr)
42
71
uint8_t caam_hal_ctrl_pknum (vaddr_t baseaddr )
43
72
{
44
73
uint32_t val = 0 ;
74
+ uint8_t pknum = 0 ;
45
75
46
- val = io_caam_read32 (baseaddr + CHANUM_LS );
47
-
48
- return GET_CHANUM_LS_PKNUM (val );
49
- }
50
-
51
- uint8_t caam_hal_ctrl_era (vaddr_t baseaddr )
52
- {
53
- uint32_t val = 0 ;
54
-
55
- /* Read the number of instance */
56
- val = io_caam_read32 (baseaddr + CCBVID );
76
+ if (caam_hal_ctrl_era (baseaddr ) < 10 ) {
77
+ val = io_caam_read32 (baseaddr + CHANUM_LS );
78
+ pknum = GET_CHANUM_LS_PKNUM (val );
79
+ } else {
80
+ val = io_caam_read32 (baseaddr + PKHA_VERSION );
81
+ pknum = GET_PKHA_VERSION_PKNUM (val );
82
+ }
57
83
58
- return GET_CCBVID_CAAM_ERA ( val ) ;
84
+ return pknum ;
59
85
}
0 commit comments