|
1 | 1 | /* |
2 | | - * Copyright (c) 2019 Winner Microelectronics Co., Ltd. |
| 2 | + * Copyright (c) 2006-2022, RT-Thread Development Team |
3 | 3 | * |
4 | 4 | * SPDX-License-Identifier: Apache-2.0 |
5 | 5 | * |
@@ -85,7 +85,32 @@ static rt_uint32_t _crc_update(struct hwcrypto_crc *ctx, const rt_uint8_t *in, r |
85 | 85 | goto _exit; |
86 | 86 | } |
87 | 87 |
|
88 | | - HW_TypeDef->Init.CRCLength = ctx ->crc_cfg.width; |
| 88 | + switch(ctx ->crc_cfg.width) |
| 89 | + { |
| 90 | +#if defined(CRC_POLYLENGTH_7B) && defined(CRC_POLYLENGTH_8B) && defined(CRC_POLYLENGTH_16B) && defined(CRC_POLYLENGTH_32B) |
| 91 | + case 7: |
| 92 | + HW_TypeDef->Init.CRCLength = CRC_POLYLENGTH_7B; |
| 93 | + break; |
| 94 | + case 8: |
| 95 | + HW_TypeDef->Init.CRCLength = CRC_POLYLENGTH_8B; |
| 96 | + break; |
| 97 | + case 16: |
| 98 | + HW_TypeDef->Init.CRCLength = CRC_POLYLENGTH_16B; |
| 99 | + break; |
| 100 | + case 32: |
| 101 | + HW_TypeDef->Init.CRCLength = CRC_POLYLENGTH_32B; |
| 102 | + break; |
| 103 | + default : |
| 104 | + goto _exit; |
| 105 | +#else |
| 106 | + case 32: |
| 107 | + HW_TypeDef->Init.CRCLength = CRC_POLYLENGTH_32B; |
| 108 | + break; |
| 109 | + default : |
| 110 | + goto _exit; |
| 111 | +#endif /* defined(CRC_POLYLENGTH_7B) && defined(CRC_POLYLENGTH_8B) && defined(CRC_POLYLENGTH_16B) && defined(CRC_POLYLENGTH_32B) */ |
| 112 | + } |
| 113 | + |
89 | 114 | if (HW_TypeDef->Init.DefaultInitValueUse == DEFAULT_INIT_VALUE_DISABLE) |
90 | 115 | { |
91 | 116 | HW_TypeDef->Init.InitValue = ctx ->crc_cfg.last_val; |
@@ -404,7 +429,7 @@ static rt_err_t _crypto_create(struct rt_hwcrypto_ctx *ctx) |
404 | 429 | hcrc->Instance = CRC; |
405 | 430 | #endif |
406 | 431 | #if defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32H7) || defined(SOC_SERIES_STM32F7) || defined(SOC_SERIES_STM32WB) || defined(SOC_SERIES_STM32MP1) |
407 | | - hcrc->Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_ENABLE; |
| 432 | + hcrc->Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_DISABLE; |
408 | 433 | hcrc->Init.DefaultInitValueUse = DEFAULT_INIT_VALUE_DISABLE; |
409 | 434 | hcrc->Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_BYTE; |
410 | 435 | hcrc->Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_ENABLE; |
|
0 commit comments