This is an automated email from the ASF dual-hosted git repository. kasjer pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit 5c86e299bf0fc9922e80c7d3c4d5296b3f055ba7 Author: Jerzy Kasenberg <[email protected]> AuthorDate: Mon May 11 07:42:54 2026 +0200 stm32/hash: Allow multiply open HASH peripheral usage is guarded by mutex, this is enough allow for os_dev to be open several times. Additionally HASH peripheral clock is enabled in stm32_hash_start instead of dev_open and disabled in stm32_hasl_finish (it was never disabled) This removes _ret versions completly leaving new styl names that return int values. Signed-off-by: Jerzy Kasenberg <[email protected]> --- hw/drivers/hash/hash_stm32/src/hash_stm32.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/hw/drivers/hash/hash_stm32/src/hash_stm32.c b/hw/drivers/hash/hash_stm32/src/hash_stm32.c index 68c2b3789..30058eaa0 100644 --- a/hw/drivers/hash/hash_stm32/src/hash_stm32.c +++ b/hw/drivers/hash/hash_stm32/src/hash_stm32.c @@ -45,8 +45,6 @@ stm32_hash_start(struct hash_dev *hash, void *ctx, uint16_t algo) return -1; } - os_mutex_pend(&gmtx, OS_TIMEOUT_NEVER); - switch (algo) { case HASH_ALGO_SHA224: algomask = HASH_ALGOSELECTION_SHA224; @@ -59,6 +57,10 @@ stm32_hash_start(struct hash_dev *hash, void *ctx, uint16_t algo) return -1; } + os_mutex_pend(&gmtx, OS_TIMEOUT_NEVER); + + __HAL_RCC_HASH_CLK_ENABLE(); + ((struct hash_sha2_context *)ctx)->remain = 0; HASH->CR = algomask | HASH_CR_INIT | HASH_DATATYPE_8B; @@ -150,6 +152,8 @@ stm32_hash_finish(struct hash_dev *hash, void *ctx, uint16_t algo, u32p[i] = os_bswap_32(HASH_DIGEST->HR[i]); } + __HAL_RCC_HASH_CLK_DISABLE(); + os_mutex_release(&gmtx); return 0; } @@ -162,13 +166,10 @@ stm32_hash_dev_open(struct os_dev *dev, uint32_t wait, void *arg) hash = (struct hash_dev *)dev; assert(hash); - /* XXX Not reentrant? */ - if (dev->od_flags & OS_DEV_F_STATUS_OPEN) { - return OS_EBUSY; + if ((dev->od_flags & OS_DEV_F_STATUS_READY) == 0) { + return OS_ERROR; } - __HAL_RCC_HASH_CLK_ENABLE(); - return 0; }
