|
27 | 27 | /* Exported functions --------------------------------------------------------*/ |
28 | 28 | stse_ReturnCode_t stse_init(stse_Handle_t *pSTSE, void *pArg) { |
29 | 29 | stse_ReturnCode_t ret = STSE_API_INVALID_PARAMETER; |
| 30 | +#ifdef STSE_CONF_STSAFE_A_SUPPORT |
| 31 | + PLAT_UI8 mask_id[STSAFEA_MASK_ID_SIZE]; |
| 32 | + PLAT_UI16 mask_number; |
| 33 | +#endif /* STSE_CONF_STSAFE_A_SUPPORT */ |
30 | 34 |
|
31 | 35 | /* - Check STSAFE handler initialization */ |
32 | 36 | if (pSTSE == NULL) { |
@@ -98,7 +102,27 @@ stse_ReturnCode_t stse_init(stse_Handle_t *pSTSE, void *pArg) { |
98 | 102 | if (pSTSE->device_type != STSAFE_L010) { |
99 | 103 | #endif /* STSE_CONF_STSAFE_L_SUPPORT */ |
100 | 104 | #ifndef STSE_CONF_USE_STATIC_PERSONALIZATION_INFORMATIONS |
101 | | - ret = stsafea_perso_info_update(pSTSE); |
| 105 | + ret = stsafea_query_mask_id(pSTSE, mask_id); |
| 106 | + if (ret != STSE_OK) { |
| 107 | + return ret; |
| 108 | + } |
| 109 | + |
| 110 | + mask_number = (mask_id[STSAFEA_MASK_ID_SIZE - 2] << 8) + mask_id[STSAFEA_MASK_ID_SIZE - 1]; |
| 111 | + if (mask_number >= 0x6000) { |
| 112 | + pSTSE->device_type = STSAFE_A120; |
| 113 | + } |
| 114 | + else if (mask_number >= 0x4600) { |
| 115 | + pSTSE->device_type = STSAFE_A110; |
| 116 | + } |
| 117 | + else if (mask_number >= 0x4000) { |
| 118 | + pSTSE->device_type = STSAFE_A100; |
| 119 | + } |
| 120 | + else |
| 121 | + { |
| 122 | + return (STSE_SERVICE_INCOMPATIBLE_DEVICE_TYPE); |
| 123 | + } |
| 124 | + |
| 125 | + ret = stsafea_perso_info_update(pSTSE); |
102 | 126 | #endif /* STSE_CONF_USE_STATIC_PERSONALIZATION_INFORMATIONS */ |
103 | 127 | #ifdef STSE_CONF_STSAFE_L_SUPPORT |
104 | 128 | } |
|
0 commit comments