Merge pull request #375 from caleb-garrett/hash

Add HASH
This commit is contained in:
Dario Nieuwenhuis 2024-01-30 01:55:55 +00:00 committed by GitHub
commit 67a5ba0be1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 379 additions and 0 deletions

113
data/registers/hash_v1.yaml Normal file
View File

@ -0,0 +1,113 @@
block/HASH:
description: Hash processor.
items:
- name: CR
description: control register.
byte_offset: 0
fieldset: CR
- name: DIN
description: data input register.
byte_offset: 4
access: Write
- name: STR
description: start register.
byte_offset: 8
access: Write
fieldset: STR
- name: HR
description: digest registers.
array:
len: 5
stride: 4
byte_offset: 12
access: Read
- name: IMR
description: interrupt enable register.
byte_offset: 32
fieldset: IMR
- name: SR
description: status register.
byte_offset: 36
fieldset: SR
- name: CSR
description: context swap registers.
array:
len: 51
stride: 4
byte_offset: 248
fieldset/CR:
description: control register.
fields:
- name: INIT
description: Initialize message digest calculation.
bit_offset: 2
bit_size: 1
- name: DMAE
description: DMA enable.
bit_offset: 3
bit_size: 1
- name: DATATYPE
description: Data type selection.
bit_offset: 4
bit_size: 2
- name: MODE
description: Mode selection.
bit_offset: 6
bit_size: 1
- name: ALGO
description: Algorithm selection.
bit_offset: 7
bit_size: 1
- name: NBW
description: Number of words already pushed.
bit_offset: 8
bit_size: 4
- name: DINNE
description: DIN not empty.
bit_offset: 12
bit_size: 1
- name: LKEY
description: Long key selection.
bit_offset: 16
bit_size: 1
fieldset/IMR:
description: interrupt enable register.
fields:
- name: DINIE
description: Data input interrupt enable.
bit_offset: 0
bit_size: 1
- name: DCIE
description: Digest calculation completion interrupt enable.
bit_offset: 1
bit_size: 1
fieldset/SR:
description: status register.
fields:
- name: DINIS
description: Data input interrupt status.
bit_offset: 0
bit_size: 1
- name: DCIS
description: Digest calculation completion interrupt status.
bit_offset: 1
bit_size: 1
- name: DMAS
description: DMA Status.
bit_offset: 2
bit_size: 1
- name: BUSY
description: Busy bit.
bit_offset: 3
bit_size: 1
fieldset/STR:
description: start register.
fields:
- name: NBLW
description: Number of valid bits in the last word of the message.
bit_offset: 0
bit_size: 5
- name: DCAL
description: Digest calculation.
bit_offset: 8
bit_size: 1

127
data/registers/hash_v2.yaml Normal file
View File

@ -0,0 +1,127 @@
block/HASH:
description: Hash processor.
items:
- name: CR
description: control register.
byte_offset: 0
fieldset: CR
- name: DIN
description: data input register.
byte_offset: 4
access: Write
- name: STR
description: start register.
byte_offset: 8
fieldset: STR
- name: HRA
description: digest registers.
array:
len: 5
stride: 4
byte_offset: 12
access: Read
- name: IMR
description: interrupt enable register.
byte_offset: 32
fieldset: IMR
- name: SR
description: status register.
byte_offset: 36
fieldset: SR
- name: CSR
description: context swap registers.
array:
len: 54
stride: 4
byte_offset: 248
- name: HR
description: HASH digest register.
array:
len: 8
stride: 4
byte_offset: 784
access: Read
fieldset/CR:
description: control register.
fields:
- name: INIT
description: Initialize message digest calculation.
bit_offset: 2
bit_size: 1
- name: DMAE
description: DMA enable.
bit_offset: 3
bit_size: 1
- name: DATATYPE
description: Data type selection.
bit_offset: 4
bit_size: 2
- name: MODE
description: Mode selection.
bit_offset: 6
bit_size: 1
- name: ALGO0
description: Algorithm selection.
bit_offset: 7
bit_size: 1
- name: NBW
description: Number of words already pushed.
bit_offset: 8
bit_size: 4
- name: DINNE
description: DIN not empty.
bit_offset: 12
bit_size: 1
- name: MDMAT
description: Multiple DMA Transfers.
bit_offset: 13
bit_size: 1
- name: LKEY
description: Long key selection.
bit_offset: 16
bit_size: 1
- name: ALGO1
description: ALGO.
bit_offset: 18
bit_size: 1
fieldset/IMR:
description: interrupt enable register.
fields:
- name: DINIE
description: Data input interrupt enable.
bit_offset: 0
bit_size: 1
- name: DCIE
description: Digest calculation completion interrupt enable.
bit_offset: 1
bit_size: 1
fieldset/SR:
description: status register.
fields:
- name: DINIS
description: Data input interrupt status.
bit_offset: 0
bit_size: 1
- name: DCIS
description: Digest calculation completion interrupt status.
bit_offset: 1
bit_size: 1
- name: DMAS
description: DMA Status.
bit_offset: 2
bit_size: 1
- name: BUSY
description: Busy bit.
bit_offset: 3
bit_size: 1
fieldset/STR:
description: start register.
fields:
- name: NBLW
description: Number of valid bits in the last word of the message.
bit_offset: 0
bit_size: 5
- name: DCAL
description: Digest calculation.
bit_offset: 8
bit_size: 1

135
data/registers/hash_v3.yaml Normal file
View File

@ -0,0 +1,135 @@
block/HASH:
description: Hash processor.
items:
- name: CR
description: control register.
byte_offset: 0
fieldset: CR
- name: DIN
description: data input register.
byte_offset: 4
access: Write
- name: STR
description: start register.
byte_offset: 8
fieldset: STR
- name: HRA
description: digest registers.
array:
len: 5
stride: 4
byte_offset: 12
access: Read
- name: IMR
description: interrupt enable register.
byte_offset: 32
fieldset: IMR
- name: SR
description: status register.
byte_offset: 36
fieldset: SR
- name: CSR
description: context swap registers.
array:
len: 54
stride: 4
byte_offset: 248
- name: HR
description: HASH digest register.
array:
len: 8
stride: 4
byte_offset: 784
access: Read
fieldset/CR:
description: control register.
fields:
- name: INIT
description: Initialize message digest calculation.
bit_offset: 2
bit_size: 1
- name: DMAE
description: DMA enable.
bit_offset: 3
bit_size: 1
- name: DATATYPE
description: Data type selection.
bit_offset: 4
bit_size: 2
- name: MODE
description: Mode selection.
bit_offset: 6
bit_size: 1
- name: NBW
description: Number of words already pushed.
bit_offset: 8
bit_size: 4
- name: DINNE
description: DIN not empty.
bit_offset: 12
bit_size: 1
- name: MDMAT
description: Multiple DMA Transfers.
bit_offset: 13
bit_size: 1
- name: LKEY
description: Long key selection.
bit_offset: 16
bit_size: 1
- name: ALGO
description: Algorithm selection.
bit_offset: 17
bit_size: 2
fieldset/IMR:
description: interrupt enable register.
fields:
- name: DINIE
description: Data input interrupt enable.
bit_offset: 0
bit_size: 1
- name: DCIE
description: Digest calculation completion interrupt enable.
bit_offset: 1
bit_size: 1
fieldset/SR:
description: status register.
fields:
- name: DINIS
description: Data input interrupt status.
bit_offset: 0
bit_size: 1
- name: DCIS
description: Digest calculation completion interrupt status.
bit_offset: 1
bit_size: 1
- name: DMAS
description: DMA Status.
bit_offset: 2
bit_size: 1
- name: BUSY
description: Busy bit.
bit_offset: 3
bit_size: 1
- name: NBWP
description: Number of words already pushed.
bit_offset: 9
bit_size: 5
- name: DINNE
description: DIN not empty.
bit_offset: 15
bit_size: 1
- name: NBWE
description: Number of words expected.
bit_offset: 16
bit_size: 5
fieldset/STR:
description: start register.
fields:
- name: NBLW
description: Number of valid bits in the last word of the message.
bit_offset: 0
bit_size: 5
- name: DCAL
description: Digest calculation.
bit_offset: 8
bit_size: 1

View File

@ -529,6 +529,10 @@ impl PeriMatcher {
("STM32U5.*:TSC:.*", ("tsc", "v3", "TSC")),
("*:VREFINTCAL:.*", ("vrefintcal", "v1", "VREFINTCAL")),
("STM32U5.*:ADF[12]:.*", ("adf", "v1", "ADF")),
(".*:HASH:hash1_v1_0", ("hash", "v1", "HASH")),
(".*:HASH:hash1_v2_0", ("hash", "v2", "HASH")),
(".*:HASH:hash1_v2_2", ("hash", "v2", "HASH")),
(".*:HASH:hash1_v4_0", ("hash", "v3", "HASH")),
];
Self {