lowrisc/registers/
aes_regs.rs1use kernel::utilities::registers::ReadWrite;
13use kernel::utilities::registers::{register_bitfields, register_structs};
14pub const AES_PARAM_NUM_REGS_KEY: u32 = 8;
16pub const AES_PARAM_NUM_REGS_IV: u32 = 4;
18pub const AES_PARAM_NUM_REGS_DATA: u32 = 4;
20pub const AES_PARAM_NUM_ALERTS: u32 = 2;
22pub const AES_PARAM_REG_WIDTH: u32 = 32;
24
25register_structs! {
26 pub AesRegisters {
27 (0x0000 => pub(crate) alert_test: ReadWrite<u32, ALERT_TEST::Register>),
29 (0x0004 => pub(crate) key_share0: [ReadWrite<u32, KEY_SHARE0::Register>; 8]),
31 (0x0024 => pub(crate) key_share1: [ReadWrite<u32, KEY_SHARE1::Register>; 8]),
33 (0x0044 => pub(crate) iv: [ReadWrite<u32, IV::Register>; 4]),
35 (0x0054 => pub(crate) data_in: [ReadWrite<u32, DATA_IN::Register>; 4]),
37 (0x0064 => pub(crate) data_out: [ReadWrite<u32, DATA_OUT::Register>; 4]),
39 (0x0074 => pub(crate) ctrl_shadowed: ReadWrite<u32, CTRL_SHADOWED::Register>),
41 (0x0078 => pub(crate) ctrl_aux_shadowed: ReadWrite<u32, CTRL_AUX_SHADOWED::Register>),
43 (0x007c => pub(crate) ctrl_aux_regwen: ReadWrite<u32, CTRL_AUX_REGWEN::Register>),
45 (0x0080 => pub(crate) trigger: ReadWrite<u32, TRIGGER::Register>),
47 (0x0084 => pub(crate) status: ReadWrite<u32, STATUS::Register>),
49 (0x0088 => @END),
50 }
51}
52
53register_bitfields![u32,
54 pub(crate) ALERT_TEST [
55 RECOV_CTRL_UPDATE_ERR OFFSET(0) NUMBITS(1) [],
56 FATAL_FAULT OFFSET(1) NUMBITS(1) [],
57 ],
58 pub(crate) KEY_SHARE0 [
59 KEY_SHARE0_0 OFFSET(0) NUMBITS(32) [],
60 ],
61 pub(crate) KEY_SHARE1 [
62 KEY_SHARE1_0 OFFSET(0) NUMBITS(32) [],
63 ],
64 pub(crate) IV [
65 IV_0 OFFSET(0) NUMBITS(32) [],
66 ],
67 pub(crate) DATA_IN [
68 DATA_IN_0 OFFSET(0) NUMBITS(32) [],
69 ],
70 pub(crate) DATA_OUT [
71 DATA_OUT_0 OFFSET(0) NUMBITS(32) [],
72 ],
73 pub(crate) CTRL_SHADOWED [
74 OPERATION OFFSET(0) NUMBITS(2) [
75 AES_ENC = 1,
76 AES_DEC = 2,
77 ],
78 MODE OFFSET(2) NUMBITS(6) [
79 AES_ECB = 1,
80 AES_CBC = 2,
81 AES_CFB = 4,
82 AES_OFB = 8,
83 AES_CTR = 16,
84 AES_NONE = 32,
85 ],
86 KEY_LEN OFFSET(8) NUMBITS(3) [
87 AES_128 = 1,
88 AES_192 = 2,
89 AES_256 = 4,
90 ],
91 SIDELOAD OFFSET(11) NUMBITS(1) [],
92 PRNG_RESEED_RATE OFFSET(12) NUMBITS(3) [
93 PER_1 = 1,
94 PER_64 = 2,
95 PER_8K = 4,
96 ],
97 MANUAL_OPERATION OFFSET(15) NUMBITS(1) [],
98 ],
99 pub(crate) CTRL_AUX_SHADOWED [
100 KEY_TOUCH_FORCES_RESEED OFFSET(0) NUMBITS(1) [],
101 FORCE_MASKS OFFSET(1) NUMBITS(1) [],
102 ],
103 pub(crate) CTRL_AUX_REGWEN [
104 CTRL_AUX_REGWEN OFFSET(0) NUMBITS(1) [],
105 ],
106 pub(crate) TRIGGER [
107 START OFFSET(0) NUMBITS(1) [],
108 KEY_IV_DATA_IN_CLEAR OFFSET(1) NUMBITS(1) [],
109 DATA_OUT_CLEAR OFFSET(2) NUMBITS(1) [],
110 PRNG_RESEED OFFSET(3) NUMBITS(1) [],
111 ],
112 pub(crate) STATUS [
113 IDLE OFFSET(0) NUMBITS(1) [],
114 STALL OFFSET(1) NUMBITS(1) [],
115 OUTPUT_LOST OFFSET(2) NUMBITS(1) [],
116 OUTPUT_VALID OFFSET(3) NUMBITS(1) [],
117 INPUT_READY OFFSET(4) NUMBITS(1) [],
118 ALERT_RECOV_CTRL_UPDATE_ERR OFFSET(5) NUMBITS(1) [],
119 ALERT_FATAL_FAULT OFFSET(6) NUMBITS(1) [],
120 ],
121];
122
123