lowrisc/registers/
rv_timer_regs.rs
1use kernel::utilities::registers::ReadWrite;
13use kernel::utilities::registers::{register_bitfields, register_structs};
14pub const RV_TIMER_PARAM_N_HARTS: u32 = 1;
16pub const RV_TIMER_PARAM_N_TIMERS: u32 = 1;
18pub const RV_TIMER_PARAM_NUM_ALERTS: u32 = 1;
20pub const RV_TIMER_PARAM_REG_WIDTH: u32 = 32;
22
23register_structs! {
24 pub RvTimerRegisters {
25 (0x0000 => pub(crate) alert_test: ReadWrite<u32, ALERT_TEST::Register>),
27 (0x0004 => pub(crate) ctrl: [ReadWrite<u32, CTRL::Register>; 1]),
29 (0x0008 => _reserved1),
30 (0x0100 => pub(crate) intr_enable0: [ReadWrite<u32, INTR_ENABLE0::Register>; 1]),
32 (0x0104 => pub(crate) intr_state0: [ReadWrite<u32, INTR_STATE0::Register>; 1]),
34 (0x0108 => pub(crate) intr_test0: [ReadWrite<u32, INTR_TEST0::Register>; 1]),
36 (0x010c => pub(crate) cfg0: ReadWrite<u32, CFG0::Register>),
38 (0x0110 => pub(crate) timer_v_lower0: ReadWrite<u32, TIMER_V_LOWER0::Register>),
40 (0x0114 => pub(crate) timer_v_upper0: ReadWrite<u32, TIMER_V_UPPER0::Register>),
42 (0x0118 => pub(crate) compare_lower0_0: ReadWrite<u32, COMPARE_LOWER0_0::Register>),
44 (0x011c => pub(crate) compare_upper0_0: ReadWrite<u32, COMPARE_UPPER0_0::Register>),
46 (0x0120 => @END),
47 }
48}
49
50register_bitfields![u32,
51 pub(crate) ALERT_TEST [
52 FATAL_FAULT OFFSET(0) NUMBITS(1) [],
53 ],
54 pub(crate) CTRL [
55 ACTIVE_0 OFFSET(0) NUMBITS(1) [],
56 ],
57 pub(crate) INTR_ENABLE0 [
58 IE_0 OFFSET(0) NUMBITS(1) [],
59 ],
60 pub(crate) INTR_STATE0 [
61 IS_0 OFFSET(0) NUMBITS(1) [],
62 ],
63 pub(crate) INTR_TEST0 [
64 T_0 OFFSET(0) NUMBITS(1) [],
65 ],
66 pub(crate) CFG0 [
67 PRESCALE OFFSET(0) NUMBITS(12) [],
68 STEP OFFSET(16) NUMBITS(8) [],
69 ],
70 pub(crate) TIMER_V_LOWER0 [
71 V OFFSET(0) NUMBITS(32) [],
72 ],
73 pub(crate) TIMER_V_UPPER0 [
74 V OFFSET(0) NUMBITS(32) [],
75 ],
76 pub(crate) COMPARE_LOWER0_0 [
77 V OFFSET(0) NUMBITS(32) [],
78 ],
79 pub(crate) COMPARE_UPPER0_0 [
80 V OFFSET(0) NUMBITS(32) [],
81 ],
82];
83
84