1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
|
#[repr(C)]
#[allow(non_snake_case)]
pub struct RegisterBlock {
pub DIRECT: u32,
pub DOMAIN: u32,
pub SETPOINT: u32,
_reserved: [u8; 4],
pub STATUS0: u32,
pub STATUS1: u32,
pub CONFIG: u32,
pub AUTHEN: u32,
}
ral_registers::register! {
#[doc = "Clock source direct control"]
pub DIRECT<u32> RW [
#[doc = "turn on clock source"]
ON start(0) width(1) RW {}
]
}
ral_registers::register! {
#[doc = "Clock source domain control"]
pub DOMAIN<u32> RW [
#[doc = "Current dependence level"]
LEVEL start(0) width(3) RW {}
#[doc = "Dependence level"]
LEVEL0 start(16) width(3) RW {}
#[doc = "Depend level"]
LEVEL1 start(20) width(3) RW {}
#[doc = "Depend level"]
LEVEL2 start(24) width(3) RW {}
#[doc = "Depend level"]
LEVEL3 start(28) width(3) RW {}
]
}
ral_registers::register! {
#[doc = "Clock source Setpoint setting"]
pub SETPOINT<u32> RW [
#[doc = "Setpoint"]
SETPOINT start(0) width(16) RW {}
#[doc = "Standby"]
STANDBY start(16) width(16) RW {}
]
}
ral_registers::register! {
#[doc = "Clock source working status"]
pub STATUS0<u32> RO [
#[doc = "Clock source current state"]
ON start(0) width(1) RO {}
#[doc = "Clock source active"]
STATUS_EARLY start(4) width(1) RO {}
#[doc = "Clock source ready"]
STATUS_LATE start(5) width(1) RO {}
#[doc = "Domains that own this clock source"]
ACTIVE_DOMAIN start(8) width(4) RO {}
#[doc = "Enable status from each domain"]
DOMAIN_ENABLE start(12) width(4) RO {}
#[doc = "In use"]
IN_USE start(28) width(1) RO {}
]
}
ral_registers::register! {
#[doc = "Clock source low power status"]
pub STATUS1<u32> RO [
#[doc = "Domain0 Low Power Mode"]
CPU0_MODE start(0) width(2) RO {
#[doc = "Run"]
RUN = 0,
#[doc = "Wait"]
WAIT = 0x1,
#[doc = "Stop"]
STOP = 0x2,
#[doc = "Suspend"]
SUSPEND = 0x3,
}
#[doc = "Domain0 request enter Low Power Mode"]
CPU0_MODE_REQUEST start(2) width(1) RO {}
#[doc = "Domain0 Low Power Mode task done"]
CPU0_MODE_DONE start(3) width(1) RO {}
#[doc = "Domain1 Low Power Mode"]
CPU1_MODE start(4) width(2) RO {
#[doc = "Run"]
RUN = 0,
#[doc = "Wait"]
WAIT = 0x1,
#[doc = "Stop"]
STOP = 0x2,
#[doc = "Suspend"]
SUSPEND = 0x3,
}
#[doc = "Domain1 request enter Low Power Mode"]
CPU1_MODE_REQUEST start(6) width(1) RO {}
#[doc = "Domain1 Low Power Mode task done"]
CPU1_MODE_DONE start(7) width(1) RO {}
#[doc = "Domain2 Low Power Mode"]
CPU2_MODE start(8) width(2) RO {
#[doc = "Run"]
RUN = 0,
#[doc = "Wait"]
WAIT = 0x1,
#[doc = "Stop"]
STOP = 0x2,
#[doc = "Suspend"]
SUSPEND = 0x3,
}
#[doc = "Domain2 request enter Low Power Mode"]
CPU2_MODE_REQUEST start(10) width(1) RO {}
#[doc = "Domain2 Low Power Mode task done"]
CPU2_MODE_DONE start(11) width(1) RO {}
#[doc = "Domain3 Low Power Mode"]
CPU3_MODE start(12) width(2) RO {
#[doc = "Run"]
RUN = 0,
#[doc = "Wait"]
WAIT = 0x1,
#[doc = "Stop"]
STOP = 0x2,
#[doc = "Suspend"]
SUSPEND = 0x3,
}
#[doc = "Domain3 request enter Low Power Mode"]
CPU3_MODE_REQUEST start(14) width(1) RO {}
#[doc = "Domain3 Low Power Mode task done"]
CPU3_MODE_DONE start(15) width(1) RO {}
#[doc = "Next Setpoint to change to"]
TARGET_SETPOINT start(16) width(4) RO {}
#[doc = "Current Setpoint"]
CURRENT_SETPOINT start(20) width(4) RO {}
#[doc = "Clock gate turn off request from GPC Setpoint"]
SETPOINT_OFF_REQUEST start(24) width(1) RO {}
#[doc = "Clock source turn off finish from GPC Setpoint"]
SETPOINT_OFF_DONE start(25) width(1) RO {}
#[doc = "Clock gate turn on request from GPC Setpoint"]
SETPOINT_ON_REQUEST start(26) width(1) RO {}
#[doc = "Clock gate turn on finish from GPC Setpoint"]
SETPOINT_ON_DONE start(27) width(1) RO {}
#[doc = "Clock gate turn off request from GPC standby"]
STANDBY_IN_REQUEST start(28) width(1) RO {}
#[doc = "Clock source turn off finish from GPC standby"]
STANDBY_IN_DONE start(29) width(1) RO {}
#[doc = "Clock gate turn on finish from GPC standby"]
STANDBY_OUT_DONE start(30) width(1) RO {}
#[doc = "Clock gate turn on request from GPC standby"]
STANDBY_OUT_REQUEST start(31) width(1) RO {}
]
}
ral_registers::register! {
#[doc = "Clock source configuration"]
pub CONFIG<u32> RO [
#[doc = "Automode Present"]
AUTOMODE_PRESENT start(1) width(1) RO {}
#[doc = "Setpoint present"]
SETPOINT_PRESENT start(4) width(1) RO {}
]
}
#[allow(non_snake_case)]
pub mod AUTHEN {
pub use super::super::clock_root::AUTHEN::*;
#[allow(non_upper_case_globals)]
pub mod CPULPM {
pub const access: ral_registers::Access = ral_registers::Access::RW;
pub const offset: u32 = 18;
pub const mask: u32 = 1 << 18;
#[doc(hidden)]
pub mod vals {}
}
}
|