Merge pull request #209 from JcBernack/rng-update

update RNG registers and mapping
This commit is contained in:
Dario Nieuwenhuis 2023-07-07 15:24:57 +00:00 committed by GitHub
commit 793aeb9289
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 311 additions and 15 deletions

View File

@ -25,6 +25,10 @@ fieldset/CR:
description: Interrupt enable
bit_offset: 3
bit_size: 1
- name: CED
description: Clock error detection
bit_offset: 5
bit_size: 1
fieldset/SR:
description: status register
fields:

View File

@ -17,15 +17,16 @@ block/RNG:
- name: HTCR
description: health test control register
byte_offset: 16
fieldset: HTCR
fieldset/CR:
description: control register
fields:
- name: RNGEN
description: True random number generator enable
description: Random number generator enable
bit_offset: 2
bit_size: 1
- name: IE
description: Interrupt Enable
description: Interrupt enable
bit_offset: 3
bit_size: 1
- name: CED
@ -36,6 +37,7 @@ fieldset/CR:
description: RNG configuration 3
bit_offset: 8
bit_size: 4
enum: RNG_CONFIG3
- name: NISTC
description: Non NIST compliant
bit_offset: 12
@ -45,14 +47,17 @@ fieldset/CR:
description: RNG configuration 2
bit_offset: 13
bit_size: 3
enum: RNG_CONFIG2
- name: CLKDIV
description: Clock divider factor
bit_offset: 16
bit_size: 4
enum: CLKDIV
- name: RNG_CONFIG1
description: RNG configuration 1
bit_offset: 20
bit_size: 6
enum: RNG_CONFIG1
- name: CONDRST
description: Conditioning soft reset
bit_offset: 30
@ -61,18 +66,11 @@ fieldset/CR:
description: Config Lock
bit_offset: 31
bit_size: 1
fieldset/HTCR:
description: health test control register
fields:
- name: HTCFG
description: health test configuration
bit_offset: 0
bit_size: 32
fieldset/SR:
description: status register
fields:
- name: DRDY
description: Data Ready
description: Data ready
bit_offset: 0
bit_size: 1
- name: CECS
@ -91,6 +89,74 @@ fieldset/SR:
description: Seed error interrupt status
bit_offset: 6
bit_size: 1
fieldset/HTCR:
description: Health test control register
fields:
- name: HTCFG
description: Health test configuration
bit_offset: 0
bit_size: 32
enum: HTCFG
enum/CLKDIV:
bit_size: 4
variants:
- name: NoDiv
description: Internal RNG clock after divider is similar to incoming RNG clock
value: 0
- name: Div_2_1
description: Divide RNG clock by 2^1
value: 1
- name: Div_2_2
description: Divide RNG clock by 2^2
value: 2
- name: Div_2_3
description: Divide RNG clock by 2^3
value: 3
- name: Div_2_4
description: Divide RNG clock by 2^4
value: 4
- name: Div_2_5
description: Divide RNG clock by 2^5
value: 5
- name: Div_2_6
description: Divide RNG clock by 2^6
value: 6
- name: Div_2_7
description: Divide RNG clock by 2^7
value: 7
- name: Div_2_8
description: Divide RNG clock by 2^8
value: 8
- name: Div_2_9
description: Divide RNG clock by 2^9
value: 9
- name: Div_2_10
description: Divide RNG clock by 2^10
value: 10
- name: Div_2_11
description: Divide RNG clock by 2^11
value: 11
- name: Div_2_12
description: Divide RNG clock by 2^12
value: 12
- name: Div_2_13
description: Divide RNG clock by 2^13
value: 13
- name: Div_2_14
description: Divide RNG clock by 2^14
value: 14
- name: Div_2_15
description: Divide RNG clock by 2^15
value: 15
enum/HTCFG:
bit_size: 32
variants:
- name: Recommended
description: Recommended value for RNG certification (0x0000_AA74)
value: 43636
- name: Magic
description: Magic number to be written before any write (0x1759_0ABC)
value: 391711420
enum/NISTC:
bit_size: 1
variants:
@ -100,3 +166,27 @@ enum/NISTC:
- name: Custom
description: Custom values for NIST compliant RNG
value: 1
enum/RNG_CONFIG1:
bit_size: 6
variants:
- name: ConfigA
description: Recommended value for config A (NIST certifiable)
value: 15
- name: ConfigB
description: Recommended value for config B (not NIST certifiable)
value: 24
enum/RNG_CONFIG2:
bit_size: 3
variants:
- name: ConfigA_B
description: Recommended value for config A and B
value: 0
enum/RNG_CONFIG3:
bit_size: 4
variants:
- name: ConfigB
description: Recommended value for config B (not NIST certifiable)
value: 0
- name: ConfigA
description: Recommended value for config A (NIST certifiable)
value: 13

196
data/registers/rng_v3.yaml Normal file
View File

@ -0,0 +1,196 @@
---
block/RNG:
description: Random number generator
items:
- name: CR
description: control register
byte_offset: 0
fieldset: CR
- name: SR
description: status register
byte_offset: 4
fieldset: SR
- name: DR
description: data register
byte_offset: 8
access: Read
- name: HTCR
description: health test control register
byte_offset: 16
fieldset: HTCR
fieldset/CR:
description: control register
fields:
- name: RNGEN
description: Random number generator enable
bit_offset: 2
bit_size: 1
- name: IE
description: Interrupt enable
bit_offset: 3
bit_size: 1
- name: CED
description: Clock error detection
bit_offset: 5
bit_size: 1
- name: ARDIS
description: Auto reset disable
bit_offset: 7
bit_size: 1
- name: RNG_CONFIG3
description: RNG configuration 3
bit_offset: 8
bit_size: 4
enum: RNG_CONFIG3
- name: NISTC
description: Non NIST compliant
bit_offset: 12
bit_size: 1
enum: NISTC
- name: RNG_CONFIG2
description: RNG configuration 2
bit_offset: 13
bit_size: 3
enum: RNG_CONFIG2
- name: CLKDIV
description: Clock divider factor
bit_offset: 16
bit_size: 4
enum: CLKDIV
- name: RNG_CONFIG1
description: RNG configuration 1
bit_offset: 20
bit_size: 6
enum: RNG_CONFIG1
- name: CONDRST
description: Conditioning soft reset
bit_offset: 30
bit_size: 1
- name: CONFIGLOCK
description: Config Lock
bit_offset: 31
bit_size: 1
fieldset/SR:
description: status register
fields:
- name: DRDY
description: Data ready
bit_offset: 0
bit_size: 1
- name: CECS
description: Clock error current status
bit_offset: 1
bit_size: 1
- name: SECS
description: Seed error current status
bit_offset: 2
bit_size: 1
- name: CEIS
description: Clock error interrupt status
bit_offset: 5
bit_size: 1
- name: SEIS
description: Seed error interrupt status
bit_offset: 6
bit_size: 1
fieldset/HTCR:
description: Health test control register
fields:
- name: HTCFG
description: Health test configuration
bit_offset: 0
bit_size: 32
enum: HTCFG
enum/CLKDIV:
bit_size: 4
variants:
- name: NoDiv
description: Internal RNG clock after divider is similar to incoming RNG clock
value: 0
- name: Div_2_1
description: Divide RNG clock by 2^1
value: 1
- name: Div_2_2
description: Divide RNG clock by 2^2
value: 2
- name: Div_2_3
description: Divide RNG clock by 2^3
value: 3
- name: Div_2_4
description: Divide RNG clock by 2^4
value: 4
- name: Div_2_5
description: Divide RNG clock by 2^5
value: 5
- name: Div_2_6
description: Divide RNG clock by 2^6
value: 6
- name: Div_2_7
description: Divide RNG clock by 2^7
value: 7
- name: Div_2_8
description: Divide RNG clock by 2^8
value: 8
- name: Div_2_9
description: Divide RNG clock by 2^9
value: 9
- name: Div_2_10
description: Divide RNG clock by 2^10
value: 10
- name: Div_2_11
description: Divide RNG clock by 2^11
value: 11
- name: Div_2_12
description: Divide RNG clock by 2^12
value: 12
- name: Div_2_13
description: Divide RNG clock by 2^13
value: 13
- name: Div_2_14
description: Divide RNG clock by 2^14
value: 14
- name: Div_2_15
description: Divide RNG clock by 2^15
value: 15
enum/HTCFG:
bit_size: 32
variants:
- name: Recommended
description: Recommended value for RNG certification (0x0000_AA74)
value: 43636
- name: Magic
description: Magic number to be written before any write (0x1759_0ABC)
value: 391711420
enum/NISTC:
bit_size: 1
variants:
- name: Default
description: Hardware default values for NIST compliant RNG. In this configuration per 128-bit output two conditioning loops are performed and 256 bits of noise source are used
value: 0
- name: Custom
description: Custom values for NIST compliant RNG
value: 1
enum/RNG_CONFIG1:
bit_size: 6
variants:
- name: ConfigA
description: Recommended value for config A (NIST certifiable)
value: 15
- name: ConfigB
description: Recommended value for config B (not NIST certifiable)
value: 24
enum/RNG_CONFIG2:
bit_size: 3
variants:
- name: ConfigA_B
description: Recommended value for config A and B
value: 0
enum/RNG_CONFIG3:
bit_size: 4
variants:
- name: ConfigB
description: Recommended value for config B (not NIST certifiable)
value: 0
- name: ConfigA
description: Recommended value for config A (NIST certifiable)
value: 13

View File

@ -130,12 +130,18 @@ impl PeriMatcher {
(".*:LPUART:sci3_v1_2", ("usart", "v4", "LPUART")),
(".*:LPUART:sci3_v1_3", ("usart", "v4", "LPUART")),
(".*:LPUART:sci3_v1_4", ("usart", "v4", "LPUART")),
("STM32[HU]5.*:RNG:.*", ("rng", "v3", "RNG")),
("STM32L5.*:RNG:.*", ("rng", "v2", "RNG")),
(".*:RNG:rng1_v1_1", ("rng", "v1", "RNG")),
(".*:RNG:rng1_v2_0", ("rng", "v1", "RNG")),
(".*:RNG:rng1_v2_1", ("rng", "v1", "RNG")),
(".*:RNG:rng1_v3_1", ("rng", "v2", "RNG")),
(".*:RNG:rng1_v4_1", ("rng", "v2", "RNG")),
("STM32L4[PQ]5.*:RNG:.*", ("rng", "v2", "RNG")),
("STM32WL.*:RNG:.*", ("rng", "v2", "RNG")),
("STM32F2.*:RNG:.*", ("rng", "v1", "RNG")),
("STM32F4.*:RNG:.*", ("rng", "v1", "RNG")),
("STM32F7.*:RNG:.*", ("rng", "v1", "RNG")),
("STM32L0.*:RNG:.*", ("rng", "v1", "RNG")),
("STM32L4.*:RNG:.*", ("rng", "v1", "RNG")),
("STM32H7.*:RNG:.*", ("rng", "v1", "RNG")),
("STM32G0.*:RNG:.*", ("rng", "v1", "RNG")),
("STM32G4.*:RNG:.*", ("rng", "v1", "RNG")),
(".*:SPI:spi2_v1_4", ("spi", "f1", "SPI")),
(".*:SPI:spi2s1_v2_1", ("spi", "v1", "SPI")),
(".*:SPI:spi2s1_v2_2", ("spi", "v1", "SPI")),