22//! from the `v2` module, which is where the corresponding documentation will
33//! appear.
44
5- use atsamd_hal_macros:: hal_cfg;
65use typenum:: U1 ;
76
87use crate :: pac:: { Gclk , Mclk , Osc32kctrl , Oscctrl } ;
@@ -58,18 +57,10 @@ pub struct Buses {
5857 pub apb : apb:: Apb ,
5958}
6059
61- #[ hal_cfg( "clock-d5x" ) ]
62- #[ allow( dead_code) ]
63- pub struct OscUlp32kClocks {
64- base : osculp32k:: EnabledOscUlp32kBase ,
65- }
66-
67- #[ hal_cfg( any( "clock-d11" , "clock-d21" ) ) ]
68- #[ allow( dead_code) ]
69- pub struct OscUlp32kClocks {
70- base : osculp32k:: EnabledOscUlp32kBase ,
71- osculp1k : EnabledOscUlp1k ,
72- osculp32k : EnabledOscUlp32k ,
60+ pub struct OscUlpClocks {
61+ pub base : osculp32k:: EnabledOscUlp32kBase ,
62+ pub osculp1k : osculp32k:: EnabledOscUlp1k ,
63+ pub osculp32k : osculp32k:: EnabledOscUlp32k ,
7364}
7465
7566/// Enabled clocks at power-on reset
@@ -103,7 +94,7 @@ pub struct Clocks {
10394 pub dfll : Enabled < dfll:: Dfll , U1 > ,
10495 /// Always-enabled base oscillator for the [`OscUlp1k`](osculp32k::OscUlp1k)
10596 /// and [`OscUlp32k`](osculp32k::OscUlp32k) clocks.
106- pub osculp32k : OscUlp32kClocks ,
97+ pub osculp : OscUlpClocks ,
10798}
10899
109100/// Type-level tokens for unused clocks at power-on reset
@@ -115,32 +106,6 @@ pub struct Clocks {
115106/// As described in the [top-level](super::super) documentation for the `clock`
116107/// module, token types are used to guanrantee the uniqueness of each clock. To
117108/// configure or enable a clock, you must provide the corresponding token.
118- #[ hal_cfg( "clock-d5x" ) ]
119- pub struct Tokens {
120- /// Tokens to create [`apb::ApbClk`]s
121- pub apbs : apb:: ApbTokens ,
122- /// Token to create [`dpll::Dpll0`]
123- pub dpll0 : dpll:: DpllToken < dpll:: Dpll0Id > ,
124- /// Token to create [`dpll::Dpll1`]
125- pub dpll1 : dpll:: DpllToken < dpll:: Dpll1Id > ,
126- /// Tokens to create [`gclk::Gclk`]
127- pub gclks : gclk:: GclkTokens ,
128- /// Tokens to create [`pclk::Pclk`]s
129- pub pclks : pclk:: PclkTokens ,
130- /// Tokens to create [`rtcosc::RtcOsc`]
131- pub rtcosc : rtcosc:: RtcOscToken ,
132- /// Tokens [`xosc::Xosc0`]
133- pub xosc0 : xosc:: XoscToken < xosc:: Xosc0Id > ,
134- /// Token to create [`xosc::Xosc1`]
135- pub xosc1 : xosc:: XoscToken < xosc:: Xosc1Id > ,
136- /// Tokens to create [`xosc32k::Xosc32kBase`], [`xosc32k::Xosc1k`] and
137- /// [`xosc32k::Xosc32k`]
138- pub xosc32k : xosc32k:: Xosc32kTokens ,
139- /// Tokens to create [`osculp32k::OscUlp1k`] and [`osculp32k::OscUlp32k`]
140- pub osculp32k : osculp32k:: OscUlp32kTokens ,
141- }
142-
143- #[ hal_cfg( any( "clock-d11" , "clock-d21" ) ) ]
144109pub struct Tokens {
145110 /// Tokens to create [`apb::ApbClk`]s
146111 pub apbs : apb:: ApbTokens ,
@@ -170,59 +135,6 @@ pub struct Tokens {
170135/// [`Mclk`] PAC structs and returns the [`Buses`], [`Clocks`] and [`Tokens`].
171136///
172137/// See the [module-level documentation](super) for more details.
173- #[ hal_cfg( "clock-d5x" ) ]
174- #[ inline]
175- pub fn clock_system_at_reset (
176- oscctrl : Oscctrl ,
177- osc32kctrl : Osc32kctrl ,
178- gclk : Gclk ,
179- mclk : Mclk ,
180- ) -> ( Buses , Clocks , Tokens ) {
181- // Safety: No bus, clock or token is instantiated more than once
182- unsafe {
183- let buses = Buses {
184- ahb : ahb:: Ahb :: new ( ) ,
185- apb : apb:: Apb :: new ( ) ,
186- } ;
187- let pac = Pac {
188- oscctrl,
189- osc32kctrl,
190- gclk,
191- mclk,
192- } ;
193- let dfll = Enabled :: < _ > :: new ( dfll:: Dfll :: open_loop ( dfll:: DfllToken :: new ( ) ) ) ;
194- let ( gclk0, dfll) = gclk:: Gclk0 :: from_source ( gclk:: GclkToken :: new ( ) , dfll) ;
195- let gclk0 = Enabled :: new ( gclk0) ;
196- let osculp32k_clocks = {
197- OscUlp32kClocks {
198- base : osculp32k:: OscUlp32kBase :: new ( ) ,
199- }
200- } ;
201- let clocks = Clocks {
202- pac,
203- ahbs : ahb:: AhbClks :: new ( ) ,
204- apbs : apb:: ApbClks :: new ( ) ,
205- gclk0,
206- dfll,
207- osculp32k : osculp32k_clocks,
208- } ;
209- let tokens = Tokens {
210- apbs : apb:: ApbTokens :: new ( ) ,
211- dpll0 : dpll:: DpllToken :: new ( ) ,
212- dpll1 : dpll:: DpllToken :: new ( ) ,
213- gclks : gclk:: GclkTokens :: new ( ) ,
214- pclks : pclk:: PclkTokens :: new ( ) ,
215- rtcosc : rtcosc:: RtcOscToken :: new ( ) ,
216- xosc0 : xosc:: XoscToken :: new ( ) ,
217- xosc1 : xosc:: XoscToken :: new ( ) ,
218- xosc32k : xosc32k:: Xosc32kTokens :: new ( ) ,
219- osculp32k : osculp32k:: OscUlp32kTokens :: new ( ) ,
220- } ;
221- ( buses, clocks, tokens)
222- }
223- }
224-
225- #[ hal_cfg( any( "clock-d11" , "clock-d21" ) ) ]
226138#[ inline]
227139pub fn clock_system_at_reset (
228140 oscctrl : Oscctrl ,
@@ -245,20 +157,21 @@ pub fn clock_system_at_reset(
245157 let dfll = Enabled :: < _ > :: new ( dfll:: Dfll :: open_loop ( dfll:: DfllToken :: new ( ) ) ) ;
246158 let ( gclk0, dfll) = gclk:: Gclk0 :: from_source ( gclk:: GclkToken :: new ( ) , dfll) ;
247159 let gclk0 = Enabled :: new ( gclk0) ;
248- let osculp32k_clocks = {
249- OscUlp32kClocks {
250- base : osculp32k:: OscUlp32kBase :: new ( ) ,
251- osculp1k : Enabled :: new ( osculp32k:: OscUlp1k :: new ( ) ) ,
252- osculp32k : Enabled :: new ( osculp32k:: OscUlp32k :: new ( ) ) ,
253- }
160+ let base = Enabled :: new ( osculp32k:: OscUlp32kBase :: new ( ) ) ;
161+ let osculp1k = Enabled :: new ( osculp32k:: OscUlp1k :: new ( ) ) ;
162+ let osculp32k = Enabled :: new ( osculp32k:: OscUlp32k :: new ( ) ) ;
163+ let osculp = OscUlpClocks {
164+ base,
165+ osculp1k,
166+ osculp32k,
254167 } ;
255168 let clocks = Clocks {
256169 pac,
257170 ahbs : ahb:: AhbClks :: new ( ) ,
258171 apbs : apb:: ApbClks :: new ( ) ,
259172 gclk0,
260173 dfll,
261- osculp32k : osculp32k_clocks ,
174+ osculp ,
262175 } ;
263176 let tokens = Tokens {
264177 apbs : apb:: ApbTokens :: new ( ) ,
0 commit comments