lowrisc/registers/
hmac_regs.rs1use kernel::utilities::registers::ReadWrite;
13use kernel::utilities::registers::WriteOnly;
14use kernel::utilities::registers::{register_bitfields, register_structs};
15pub const HMAC_PARAM_NUM_WORDS: u32 = 8;
17pub const HMAC_PARAM_NUM_ALERTS: u32 = 1;
19pub const HMAC_PARAM_REG_WIDTH: u32 = 32;
21
22register_structs! {
23    pub HmacRegisters {
24        (0x0000 => pub(crate) intr_state: ReadWrite<u32, INTR::Register>),
26        (0x0004 => pub(crate) intr_enable: ReadWrite<u32, INTR::Register>),
28        (0x0008 => pub(crate) intr_test: ReadWrite<u32, INTR::Register>),
30        (0x000c => pub(crate) alert_test: ReadWrite<u32, ALERT_TEST::Register>),
32        (0x0010 => pub(crate) cfg: ReadWrite<u32, CFG::Register>),
34        (0x0014 => pub(crate) cmd: ReadWrite<u32, CMD::Register>),
36        (0x0018 => pub(crate) status: ReadWrite<u32, STATUS::Register>),
38        (0x001c => pub(crate) err_code: ReadWrite<u32, ERR_CODE::Register>),
40        (0x0020 => pub(crate) wipe_secret: ReadWrite<u32, WIPE_SECRET::Register>),
42        (0x0024 => pub(crate) key: [ReadWrite<u32, KEY::Register>; 8]),
44        (0x0044 => pub(crate) digest: [ReadWrite<u32, DIGEST::Register>; 8]),
46        (0x0064 => pub(crate) msg_length_lower: ReadWrite<u32, MSG_LENGTH_LOWER::Register>),
48        (0x0068 => pub(crate) msg_length_upper: ReadWrite<u32, MSG_LENGTH_UPPER::Register>),
50        (0x006c => _reserved1),
51        (0x0800 => pub(crate) msg_fifo: [WriteOnly<u32>; 512]),
55        (0x1000 => @END),
56    }
57}
58
59register_bitfields![u32,
60    pub(crate) INTR [
62        HMAC_DONE OFFSET(0) NUMBITS(1) [],
63        FIFO_EMPTY OFFSET(1) NUMBITS(1) [],
64        HMAC_ERR OFFSET(2) NUMBITS(1) [],
65    ],
66    pub(crate) ALERT_TEST [
67        FATAL_FAULT OFFSET(0) NUMBITS(1) [],
68    ],
69    pub(crate) CFG [
70        HMAC_EN OFFSET(0) NUMBITS(1) [],
71        SHA_EN OFFSET(1) NUMBITS(1) [],
72        ENDIAN_SWAP OFFSET(2) NUMBITS(1) [],
73        DIGEST_SWAP OFFSET(3) NUMBITS(1) [],
74    ],
75    pub(crate) CMD [
76        HASH_START OFFSET(0) NUMBITS(1) [],
77        HASH_PROCESS OFFSET(1) NUMBITS(1) [],
78    ],
79    pub(crate) STATUS [
80        FIFO_EMPTY OFFSET(0) NUMBITS(1) [],
81        FIFO_FULL OFFSET(1) NUMBITS(1) [],
82        FIFO_DEPTH OFFSET(4) NUMBITS(5) [],
83    ],
84    pub(crate) ERR_CODE [
85        ERR_CODE OFFSET(0) NUMBITS(32) [],
86    ],
87    pub(crate) WIPE_SECRET [
88        SECRET OFFSET(0) NUMBITS(32) [],
89    ],
90    pub(crate) KEY [
91        KEY_0 OFFSET(0) NUMBITS(32) [],
92    ],
93    pub(crate) DIGEST [
94        DIGEST_0 OFFSET(0) NUMBITS(32) [],
95    ],
96    pub(crate) MSG_LENGTH_LOWER [
97        V OFFSET(0) NUMBITS(32) [],
98    ],
99    pub(crate) MSG_LENGTH_UPPER [
100        V OFFSET(0) NUMBITS(32) [],
101    ],
102];
103
104