From 5c3ad004ab893767f47ff788ffb3a20c19ff5aca Mon Sep 17 00:00:00 2001 From: Kenneth Bell Date: Sun, 19 Dec 2021 17:17:30 +0000 Subject: [PATCH] stm32: add more MCUs with h/w RNG --- lib/stm32-svd | 2 +- src/crypto/rand/rand_baremetal.go | 4 ++-- src/machine/machine_stm32_rng.go | 4 ++-- src/machine/machine_stm32l0x2.go | 6 ++++++ src/machine/machine_stm32l5.go | 10 ++++++++++ 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/lib/stm32-svd b/lib/stm32-svd index 5f417214..e6db8e32 160000 --- a/lib/stm32-svd +++ b/lib/stm32-svd @@ -1 +1 @@ -Subproject commit 5f417214efe79598eadd38f68b4432384ca57456 +Subproject commit e6db8e32d5d42293a528434ec12e7f88479a8649 diff --git a/src/crypto/rand/rand_baremetal.go b/src/crypto/rand/rand_baremetal.go index 7a76498b..a0ebaf65 100644 --- a/src/crypto/rand/rand_baremetal.go +++ b/src/crypto/rand/rand_baremetal.go @@ -1,5 +1,5 @@ -//go:build stm32wlx || stm32f4 || stm32f7 || stm32l4 || (sam && atsamd51) || (sam && atsame5x) -// +build stm32wlx stm32f4 stm32f7 stm32l4 sam,atsamd51 sam,atsame5x +//go:build stm32 || (sam && atsamd51) || (sam && atsame5x) +// +build stm32 sam,atsamd51 sam,atsame5x package rand diff --git a/src/machine/machine_stm32_rng.go b/src/machine/machine_stm32_rng.go index 83307863..8160ab87 100644 --- a/src/machine/machine_stm32_rng.go +++ b/src/machine/machine_stm32_rng.go @@ -1,5 +1,5 @@ -//go:build stm32f4 || stm32f7 || stm32l4 || stm32wlx -// +build stm32f4 stm32f7 stm32l4 stm32wlx +//go:build stm32 && !(stm32f103 || stm32l0x1) +// +build stm32,!stm32f103,!stm32l0x1 package machine diff --git a/src/machine/machine_stm32l0x2.go b/src/machine/machine_stm32l0x2.go index 3394f429..3ac63254 100644 --- a/src/machine/machine_stm32l0x2.go +++ b/src/machine/machine_stm32l0x2.go @@ -1,3 +1,4 @@ +//go:build stm32l0x2 // +build stm32l0x2 package machine @@ -252,3 +253,8 @@ const ( ARR_MAX = 0x10000 PSC_MAX = 0x10000 ) + +func initRNG() { + stm32.RCC.AHBENR.SetBits(stm32.RCC_AHBENR_RNGEN) + stm32.RNG.CR.SetBits(stm32.RNG_CR_RNGEN) +} diff --git a/src/machine/machine_stm32l5.go b/src/machine/machine_stm32l5.go index 3f2935cc..5eb951d8 100644 --- a/src/machine/machine_stm32l5.go +++ b/src/machine/machine_stm32l5.go @@ -1,3 +1,4 @@ +//go:build stm32l5 // +build stm32l5 package machine @@ -546,3 +547,12 @@ const ( ARR_MAX = 0x10000 PSC_MAX = 0x10000 ) + +func initRNG() { + stm32.RCC.CRRCR.SetBits(stm32.RCC_CRRCR_HSI48ON) + for !stm32.RCC.CRRCR.HasBits(stm32.RCC_CRRCR_HSI48RDY) { + } + + stm32.RCC.AHB2ENR.SetBits(stm32.RCC_AHB2ENR_RNGEN) + stm32.RNG.CR.SetBits(stm32.RNG_CR_RNGEN) +}