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