1#[doc = "Register `CLKCTRL%s` reader"]
2pub type R = crate::R<ClkctrlSpec>;
3#[doc = "Register `CLKCTRL%s` writer"]
4pub type W = crate::W<ClkctrlSpec>;
5#[doc = "Slot Size\n\nValue on reset: 0"]
6#[derive(Clone, Copy, Debug, PartialEq, Eq)]
7#[repr(u8)]
8pub enum Slotsizeselect {
9 #[doc = "0: 8-bit Slot for Clock Unit n"]
10 _8 = 0,
11 #[doc = "1: 16-bit Slot for Clock Unit n"]
12 _16 = 1,
13 #[doc = "2: 24-bit Slot for Clock Unit n"]
14 _24 = 2,
15 #[doc = "3: 32-bit Slot for Clock Unit n"]
16 _32 = 3,
17}
18impl From<Slotsizeselect> for u8 {
19 #[inline(always)]
20 fn from(variant: Slotsizeselect) -> Self {
21 variant as _
22 }
23}
24impl crate::FieldSpec for Slotsizeselect {
25 type Ux = u8;
26}
27impl crate::IsEnum for Slotsizeselect {}
28#[doc = "Field `SLOTSIZE` reader - Slot Size"]
29pub type SlotsizeR = crate::FieldReader<Slotsizeselect>;
30impl SlotsizeR {
31 #[doc = "Get enumerated values variant"]
32 #[inline(always)]
33 pub const fn variant(&self) -> Slotsizeselect {
34 match self.bits {
35 0 => Slotsizeselect::_8,
36 1 => Slotsizeselect::_16,
37 2 => Slotsizeselect::_24,
38 3 => Slotsizeselect::_32,
39 _ => unreachable!(),
40 }
41 }
42 #[doc = "8-bit Slot for Clock Unit n"]
43 #[inline(always)]
44 pub fn is_8(&self) -> bool {
45 *self == Slotsizeselect::_8
46 }
47 #[doc = "16-bit Slot for Clock Unit n"]
48 #[inline(always)]
49 pub fn is_16(&self) -> bool {
50 *self == Slotsizeselect::_16
51 }
52 #[doc = "24-bit Slot for Clock Unit n"]
53 #[inline(always)]
54 pub fn is_24(&self) -> bool {
55 *self == Slotsizeselect::_24
56 }
57 #[doc = "32-bit Slot for Clock Unit n"]
58 #[inline(always)]
59 pub fn is_32(&self) -> bool {
60 *self == Slotsizeselect::_32
61 }
62}
63#[doc = "Field `SLOTSIZE` writer - Slot Size"]
64pub type SlotsizeW<'a, REG> = crate::FieldWriter<'a, REG, 2, Slotsizeselect, crate::Safe>;
65impl<'a, REG> SlotsizeW<'a, REG>
66where
67 REG: crate::Writable + crate::RegisterSpec,
68 REG::Ux: From<u8>,
69{
70 #[doc = "8-bit Slot for Clock Unit n"]
71 #[inline(always)]
72 pub fn _8(self) -> &'a mut crate::W<REG> {
73 self.variant(Slotsizeselect::_8)
74 }
75 #[doc = "16-bit Slot for Clock Unit n"]
76 #[inline(always)]
77 pub fn _16(self) -> &'a mut crate::W<REG> {
78 self.variant(Slotsizeselect::_16)
79 }
80 #[doc = "24-bit Slot for Clock Unit n"]
81 #[inline(always)]
82 pub fn _24(self) -> &'a mut crate::W<REG> {
83 self.variant(Slotsizeselect::_24)
84 }
85 #[doc = "32-bit Slot for Clock Unit n"]
86 #[inline(always)]
87 pub fn _32(self) -> &'a mut crate::W<REG> {
88 self.variant(Slotsizeselect::_32)
89 }
90}
91#[doc = "Field `NBSLOTS` reader - Number of Slots in Frame"]
92pub type NbslotsR = crate::FieldReader;
93#[doc = "Field `NBSLOTS` writer - Number of Slots in Frame"]
94pub type NbslotsW<'a, REG> = crate::FieldWriter<'a, REG, 3>;
95#[doc = "Frame Sync Width\n\nValue on reset: 0"]
96#[derive(Clone, Copy, Debug, PartialEq, Eq)]
97#[repr(u8)]
98pub enum Fswidthselect {
99 #[doc = "0: Frame Sync Pulse is 1 Slot wide (default for I2S protocol)"]
100 Slot = 0,
101 #[doc = "1: Frame Sync Pulse is half a Frame wide"]
102 Half = 1,
103 #[doc = "2: Frame Sync Pulse is 1 Bit wide"]
104 Bit = 2,
105 #[doc = "3: Clock Unit n operates in Burst mode, with a 1-bit wide Frame Sync pulse per Data sample, only when Data transfer is requested"]
106 Burst = 3,
107}
108impl From<Fswidthselect> for u8 {
109 #[inline(always)]
110 fn from(variant: Fswidthselect) -> Self {
111 variant as _
112 }
113}
114impl crate::FieldSpec for Fswidthselect {
115 type Ux = u8;
116}
117impl crate::IsEnum for Fswidthselect {}
118#[doc = "Field `FSWIDTH` reader - Frame Sync Width"]
119pub type FswidthR = crate::FieldReader<Fswidthselect>;
120impl FswidthR {
121 #[doc = "Get enumerated values variant"]
122 #[inline(always)]
123 pub const fn variant(&self) -> Fswidthselect {
124 match self.bits {
125 0 => Fswidthselect::Slot,
126 1 => Fswidthselect::Half,
127 2 => Fswidthselect::Bit,
128 3 => Fswidthselect::Burst,
129 _ => unreachable!(),
130 }
131 }
132 #[doc = "Frame Sync Pulse is 1 Slot wide (default for I2S protocol)"]
133 #[inline(always)]
134 pub fn is_slot(&self) -> bool {
135 *self == Fswidthselect::Slot
136 }
137 #[doc = "Frame Sync Pulse is half a Frame wide"]
138 #[inline(always)]
139 pub fn is_half(&self) -> bool {
140 *self == Fswidthselect::Half
141 }
142 #[doc = "Frame Sync Pulse is 1 Bit wide"]
143 #[inline(always)]
144 pub fn is_bit(&self) -> bool {
145 *self == Fswidthselect::Bit
146 }
147 #[doc = "Clock Unit n operates in Burst mode, with a 1-bit wide Frame Sync pulse per Data sample, only when Data transfer is requested"]
148 #[inline(always)]
149 pub fn is_burst(&self) -> bool {
150 *self == Fswidthselect::Burst
151 }
152}
153#[doc = "Field `FSWIDTH` writer - Frame Sync Width"]
154pub type FswidthW<'a, REG> = crate::FieldWriter<'a, REG, 2, Fswidthselect, crate::Safe>;
155impl<'a, REG> FswidthW<'a, REG>
156where
157 REG: crate::Writable + crate::RegisterSpec,
158 REG::Ux: From<u8>,
159{
160 #[doc = "Frame Sync Pulse is 1 Slot wide (default for I2S protocol)"]
161 #[inline(always)]
162 pub fn slot(self) -> &'a mut crate::W<REG> {
163 self.variant(Fswidthselect::Slot)
164 }
165 #[doc = "Frame Sync Pulse is half a Frame wide"]
166 #[inline(always)]
167 pub fn half(self) -> &'a mut crate::W<REG> {
168 self.variant(Fswidthselect::Half)
169 }
170 #[doc = "Frame Sync Pulse is 1 Bit wide"]
171 #[inline(always)]
172 pub fn bit_(self) -> &'a mut crate::W<REG> {
173 self.variant(Fswidthselect::Bit)
174 }
175 #[doc = "Clock Unit n operates in Burst mode, with a 1-bit wide Frame Sync pulse per Data sample, only when Data transfer is requested"]
176 #[inline(always)]
177 pub fn burst(self) -> &'a mut crate::W<REG> {
178 self.variant(Fswidthselect::Burst)
179 }
180}
181#[doc = "Data Delay from Frame Sync\n\nValue on reset: 0"]
182#[derive(Clone, Copy, Debug, PartialEq, Eq)]
183pub enum Bitdelayselect {
184 #[doc = "0: Left Justified (0 Bit Delay)"]
185 Lj = 0,
186 #[doc = "1: I2S (1 Bit Delay)"]
187 I2s = 1,
188}
189impl From<Bitdelayselect> for bool {
190 #[inline(always)]
191 fn from(variant: Bitdelayselect) -> Self {
192 variant as u8 != 0
193 }
194}
195#[doc = "Field `BITDELAY` reader - Data Delay from Frame Sync"]
196pub type BitdelayR = crate::BitReader<Bitdelayselect>;
197impl BitdelayR {
198 #[doc = "Get enumerated values variant"]
199 #[inline(always)]
200 pub const fn variant(&self) -> Bitdelayselect {
201 match self.bits {
202 false => Bitdelayselect::Lj,
203 true => Bitdelayselect::I2s,
204 }
205 }
206 #[doc = "Left Justified (0 Bit Delay)"]
207 #[inline(always)]
208 pub fn is_lj(&self) -> bool {
209 *self == Bitdelayselect::Lj
210 }
211 #[doc = "I2S (1 Bit Delay)"]
212 #[inline(always)]
213 pub fn is_i2s(&self) -> bool {
214 *self == Bitdelayselect::I2s
215 }
216}
217#[doc = "Field `BITDELAY` writer - Data Delay from Frame Sync"]
218pub type BitdelayW<'a, REG> = crate::BitWriter<'a, REG, Bitdelayselect>;
219impl<'a, REG> BitdelayW<'a, REG>
220where
221 REG: crate::Writable + crate::RegisterSpec,
222{
223 #[doc = "Left Justified (0 Bit Delay)"]
224 #[inline(always)]
225 pub fn lj(self) -> &'a mut crate::W<REG> {
226 self.variant(Bitdelayselect::Lj)
227 }
228 #[doc = "I2S (1 Bit Delay)"]
229 #[inline(always)]
230 pub fn i2s(self) -> &'a mut crate::W<REG> {
231 self.variant(Bitdelayselect::I2s)
232 }
233}
234#[doc = "Frame Sync Select\n\nValue on reset: 0"]
235#[derive(Clone, Copy, Debug, PartialEq, Eq)]
236pub enum Fsselselect {
237 #[doc = "0: Divided Serial Clock n is used as Frame Sync n source"]
238 Sckdiv = 0,
239 #[doc = "1: FSn input pin is used as Frame Sync n source"]
240 Fspin = 1,
241}
242impl From<Fsselselect> for bool {
243 #[inline(always)]
244 fn from(variant: Fsselselect) -> Self {
245 variant as u8 != 0
246 }
247}
248#[doc = "Field `FSSEL` reader - Frame Sync Select"]
249pub type FsselR = crate::BitReader<Fsselselect>;
250impl FsselR {
251 #[doc = "Get enumerated values variant"]
252 #[inline(always)]
253 pub const fn variant(&self) -> Fsselselect {
254 match self.bits {
255 false => Fsselselect::Sckdiv,
256 true => Fsselselect::Fspin,
257 }
258 }
259 #[doc = "Divided Serial Clock n is used as Frame Sync n source"]
260 #[inline(always)]
261 pub fn is_sckdiv(&self) -> bool {
262 *self == Fsselselect::Sckdiv
263 }
264 #[doc = "FSn input pin is used as Frame Sync n source"]
265 #[inline(always)]
266 pub fn is_fspin(&self) -> bool {
267 *self == Fsselselect::Fspin
268 }
269}
270#[doc = "Field `FSSEL` writer - Frame Sync Select"]
271pub type FsselW<'a, REG> = crate::BitWriter<'a, REG, Fsselselect>;
272impl<'a, REG> FsselW<'a, REG>
273where
274 REG: crate::Writable + crate::RegisterSpec,
275{
276 #[doc = "Divided Serial Clock n is used as Frame Sync n source"]
277 #[inline(always)]
278 pub fn sckdiv(self) -> &'a mut crate::W<REG> {
279 self.variant(Fsselselect::Sckdiv)
280 }
281 #[doc = "FSn input pin is used as Frame Sync n source"]
282 #[inline(always)]
283 pub fn fspin(self) -> &'a mut crate::W<REG> {
284 self.variant(Fsselselect::Fspin)
285 }
286}
287#[doc = "Field `FSINV` reader - Frame Sync Invert"]
288pub type FsinvR = crate::BitReader;
289#[doc = "Field `FSINV` writer - Frame Sync Invert"]
290pub type FsinvW<'a, REG> = crate::BitWriter<'a, REG>;
291#[doc = "Serial Clock Select\n\nValue on reset: 0"]
292#[derive(Clone, Copy, Debug, PartialEq, Eq)]
293pub enum Sckselselect {
294 #[doc = "0: Divided Master Clock n is used as Serial Clock n source"]
295 Mckdiv = 0,
296 #[doc = "1: SCKn input pin is used as Serial Clock n source"]
297 Sckpin = 1,
298}
299impl From<Sckselselect> for bool {
300 #[inline(always)]
301 fn from(variant: Sckselselect) -> Self {
302 variant as u8 != 0
303 }
304}
305#[doc = "Field `SCKSEL` reader - Serial Clock Select"]
306pub type SckselR = crate::BitReader<Sckselselect>;
307impl SckselR {
308 #[doc = "Get enumerated values variant"]
309 #[inline(always)]
310 pub const fn variant(&self) -> Sckselselect {
311 match self.bits {
312 false => Sckselselect::Mckdiv,
313 true => Sckselselect::Sckpin,
314 }
315 }
316 #[doc = "Divided Master Clock n is used as Serial Clock n source"]
317 #[inline(always)]
318 pub fn is_mckdiv(&self) -> bool {
319 *self == Sckselselect::Mckdiv
320 }
321 #[doc = "SCKn input pin is used as Serial Clock n source"]
322 #[inline(always)]
323 pub fn is_sckpin(&self) -> bool {
324 *self == Sckselselect::Sckpin
325 }
326}
327#[doc = "Field `SCKSEL` writer - Serial Clock Select"]
328pub type SckselW<'a, REG> = crate::BitWriter<'a, REG, Sckselselect>;
329impl<'a, REG> SckselW<'a, REG>
330where
331 REG: crate::Writable + crate::RegisterSpec,
332{
333 #[doc = "Divided Master Clock n is used as Serial Clock n source"]
334 #[inline(always)]
335 pub fn mckdiv(self) -> &'a mut crate::W<REG> {
336 self.variant(Sckselselect::Mckdiv)
337 }
338 #[doc = "SCKn input pin is used as Serial Clock n source"]
339 #[inline(always)]
340 pub fn sckpin(self) -> &'a mut crate::W<REG> {
341 self.variant(Sckselselect::Sckpin)
342 }
343}
344#[doc = "Master Clock Select\n\nValue on reset: 0"]
345#[derive(Clone, Copy, Debug, PartialEq, Eq)]
346pub enum Mckselselect {
347 #[doc = "0: GCLK_I2S_n is used as Master Clock n source"]
348 Gclk = 0,
349 #[doc = "1: MCKn input pin is used as Master Clock n source"]
350 Mckpin = 1,
351}
352impl From<Mckselselect> for bool {
353 #[inline(always)]
354 fn from(variant: Mckselselect) -> Self {
355 variant as u8 != 0
356 }
357}
358#[doc = "Field `MCKSEL` reader - Master Clock Select"]
359pub type MckselR = crate::BitReader<Mckselselect>;
360impl MckselR {
361 #[doc = "Get enumerated values variant"]
362 #[inline(always)]
363 pub const fn variant(&self) -> Mckselselect {
364 match self.bits {
365 false => Mckselselect::Gclk,
366 true => Mckselselect::Mckpin,
367 }
368 }
369 #[doc = "GCLK_I2S_n is used as Master Clock n source"]
370 #[inline(always)]
371 pub fn is_gclk(&self) -> bool {
372 *self == Mckselselect::Gclk
373 }
374 #[doc = "MCKn input pin is used as Master Clock n source"]
375 #[inline(always)]
376 pub fn is_mckpin(&self) -> bool {
377 *self == Mckselselect::Mckpin
378 }
379}
380#[doc = "Field `MCKSEL` writer - Master Clock Select"]
381pub type MckselW<'a, REG> = crate::BitWriter<'a, REG, Mckselselect>;
382impl<'a, REG> MckselW<'a, REG>
383where
384 REG: crate::Writable + crate::RegisterSpec,
385{
386 #[doc = "GCLK_I2S_n is used as Master Clock n source"]
387 #[inline(always)]
388 pub fn gclk(self) -> &'a mut crate::W<REG> {
389 self.variant(Mckselselect::Gclk)
390 }
391 #[doc = "MCKn input pin is used as Master Clock n source"]
392 #[inline(always)]
393 pub fn mckpin(self) -> &'a mut crate::W<REG> {
394 self.variant(Mckselselect::Mckpin)
395 }
396}
397#[doc = "Field `MCKEN` reader - Master Clock Enable"]
398pub type MckenR = crate::BitReader;
399#[doc = "Field `MCKEN` writer - Master Clock Enable"]
400pub type MckenW<'a, REG> = crate::BitWriter<'a, REG>;
401#[doc = "Field `MCKDIV` reader - Master Clock Division Factor"]
402pub type MckdivR = crate::FieldReader;
403#[doc = "Field `MCKDIV` writer - Master Clock Division Factor"]
404pub type MckdivW<'a, REG> = crate::FieldWriter<'a, REG, 5>;
405#[doc = "Field `MCKOUTDIV` reader - Master Clock Output Division Factor"]
406pub type MckoutdivR = crate::FieldReader;
407#[doc = "Field `MCKOUTDIV` writer - Master Clock Output Division Factor"]
408pub type MckoutdivW<'a, REG> = crate::FieldWriter<'a, REG, 5>;
409#[doc = "Field `FSOUTINV` reader - Frame Sync Output Invert"]
410pub type FsoutinvR = crate::BitReader;
411#[doc = "Field `FSOUTINV` writer - Frame Sync Output Invert"]
412pub type FsoutinvW<'a, REG> = crate::BitWriter<'a, REG>;
413#[doc = "Field `SCKOUTINV` reader - Serial Clock Output Invert"]
414pub type SckoutinvR = crate::BitReader;
415#[doc = "Field `SCKOUTINV` writer - Serial Clock Output Invert"]
416pub type SckoutinvW<'a, REG> = crate::BitWriter<'a, REG>;
417#[doc = "Field `MCKOUTINV` reader - Master Clock Output Invert"]
418pub type MckoutinvR = crate::BitReader;
419#[doc = "Field `MCKOUTINV` writer - Master Clock Output Invert"]
420pub type MckoutinvW<'a, REG> = crate::BitWriter<'a, REG>;
421impl R {
422 #[doc = "Bits 0:1 - Slot Size"]
423 #[inline(always)]
424 pub fn slotsize(&self) -> SlotsizeR {
425 SlotsizeR::new((self.bits & 3) as u8)
426 }
427 #[doc = "Bits 2:4 - Number of Slots in Frame"]
428 #[inline(always)]
429 pub fn nbslots(&self) -> NbslotsR {
430 NbslotsR::new(((self.bits >> 2) & 7) as u8)
431 }
432 #[doc = "Bits 5:6 - Frame Sync Width"]
433 #[inline(always)]
434 pub fn fswidth(&self) -> FswidthR {
435 FswidthR::new(((self.bits >> 5) & 3) as u8)
436 }
437 #[doc = "Bit 7 - Data Delay from Frame Sync"]
438 #[inline(always)]
439 pub fn bitdelay(&self) -> BitdelayR {
440 BitdelayR::new(((self.bits >> 7) & 1) != 0)
441 }
442 #[doc = "Bit 8 - Frame Sync Select"]
443 #[inline(always)]
444 pub fn fssel(&self) -> FsselR {
445 FsselR::new(((self.bits >> 8) & 1) != 0)
446 }
447 #[doc = "Bit 11 - Frame Sync Invert"]
448 #[inline(always)]
449 pub fn fsinv(&self) -> FsinvR {
450 FsinvR::new(((self.bits >> 11) & 1) != 0)
451 }
452 #[doc = "Bit 12 - Serial Clock Select"]
453 #[inline(always)]
454 pub fn scksel(&self) -> SckselR {
455 SckselR::new(((self.bits >> 12) & 1) != 0)
456 }
457 #[doc = "Bit 16 - Master Clock Select"]
458 #[inline(always)]
459 pub fn mcksel(&self) -> MckselR {
460 MckselR::new(((self.bits >> 16) & 1) != 0)
461 }
462 #[doc = "Bit 18 - Master Clock Enable"]
463 #[inline(always)]
464 pub fn mcken(&self) -> MckenR {
465 MckenR::new(((self.bits >> 18) & 1) != 0)
466 }
467 #[doc = "Bits 19:23 - Master Clock Division Factor"]
468 #[inline(always)]
469 pub fn mckdiv(&self) -> MckdivR {
470 MckdivR::new(((self.bits >> 19) & 0x1f) as u8)
471 }
472 #[doc = "Bits 24:28 - Master Clock Output Division Factor"]
473 #[inline(always)]
474 pub fn mckoutdiv(&self) -> MckoutdivR {
475 MckoutdivR::new(((self.bits >> 24) & 0x1f) as u8)
476 }
477 #[doc = "Bit 29 - Frame Sync Output Invert"]
478 #[inline(always)]
479 pub fn fsoutinv(&self) -> FsoutinvR {
480 FsoutinvR::new(((self.bits >> 29) & 1) != 0)
481 }
482 #[doc = "Bit 30 - Serial Clock Output Invert"]
483 #[inline(always)]
484 pub fn sckoutinv(&self) -> SckoutinvR {
485 SckoutinvR::new(((self.bits >> 30) & 1) != 0)
486 }
487 #[doc = "Bit 31 - Master Clock Output Invert"]
488 #[inline(always)]
489 pub fn mckoutinv(&self) -> MckoutinvR {
490 MckoutinvR::new(((self.bits >> 31) & 1) != 0)
491 }
492}
493impl W {
494 #[doc = "Bits 0:1 - Slot Size"]
495 #[inline(always)]
496 #[must_use]
497 pub fn slotsize(&mut self) -> SlotsizeW<ClkctrlSpec> {
498 SlotsizeW::new(self, 0)
499 }
500 #[doc = "Bits 2:4 - Number of Slots in Frame"]
501 #[inline(always)]
502 #[must_use]
503 pub fn nbslots(&mut self) -> NbslotsW<ClkctrlSpec> {
504 NbslotsW::new(self, 2)
505 }
506 #[doc = "Bits 5:6 - Frame Sync Width"]
507 #[inline(always)]
508 #[must_use]
509 pub fn fswidth(&mut self) -> FswidthW<ClkctrlSpec> {
510 FswidthW::new(self, 5)
511 }
512 #[doc = "Bit 7 - Data Delay from Frame Sync"]
513 #[inline(always)]
514 #[must_use]
515 pub fn bitdelay(&mut self) -> BitdelayW<ClkctrlSpec> {
516 BitdelayW::new(self, 7)
517 }
518 #[doc = "Bit 8 - Frame Sync Select"]
519 #[inline(always)]
520 #[must_use]
521 pub fn fssel(&mut self) -> FsselW<ClkctrlSpec> {
522 FsselW::new(self, 8)
523 }
524 #[doc = "Bit 11 - Frame Sync Invert"]
525 #[inline(always)]
526 #[must_use]
527 pub fn fsinv(&mut self) -> FsinvW<ClkctrlSpec> {
528 FsinvW::new(self, 11)
529 }
530 #[doc = "Bit 12 - Serial Clock Select"]
531 #[inline(always)]
532 #[must_use]
533 pub fn scksel(&mut self) -> SckselW<ClkctrlSpec> {
534 SckselW::new(self, 12)
535 }
536 #[doc = "Bit 16 - Master Clock Select"]
537 #[inline(always)]
538 #[must_use]
539 pub fn mcksel(&mut self) -> MckselW<ClkctrlSpec> {
540 MckselW::new(self, 16)
541 }
542 #[doc = "Bit 18 - Master Clock Enable"]
543 #[inline(always)]
544 #[must_use]
545 pub fn mcken(&mut self) -> MckenW<ClkctrlSpec> {
546 MckenW::new(self, 18)
547 }
548 #[doc = "Bits 19:23 - Master Clock Division Factor"]
549 #[inline(always)]
550 #[must_use]
551 pub fn mckdiv(&mut self) -> MckdivW<ClkctrlSpec> {
552 MckdivW::new(self, 19)
553 }
554 #[doc = "Bits 24:28 - Master Clock Output Division Factor"]
555 #[inline(always)]
556 #[must_use]
557 pub fn mckoutdiv(&mut self) -> MckoutdivW<ClkctrlSpec> {
558 MckoutdivW::new(self, 24)
559 }
560 #[doc = "Bit 29 - Frame Sync Output Invert"]
561 #[inline(always)]
562 #[must_use]
563 pub fn fsoutinv(&mut self) -> FsoutinvW<ClkctrlSpec> {
564 FsoutinvW::new(self, 29)
565 }
566 #[doc = "Bit 30 - Serial Clock Output Invert"]
567 #[inline(always)]
568 #[must_use]
569 pub fn sckoutinv(&mut self) -> SckoutinvW<ClkctrlSpec> {
570 SckoutinvW::new(self, 30)
571 }
572 #[doc = "Bit 31 - Master Clock Output Invert"]
573 #[inline(always)]
574 #[must_use]
575 pub fn mckoutinv(&mut self) -> MckoutinvW<ClkctrlSpec> {
576 MckoutinvW::new(self, 31)
577 }
578}
579#[doc = "Clock Unit n Control\n\nYou can [`read`](crate::Reg::read) this register and get [`clkctrl::R`](R). You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`clkctrl::W`](W). You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api)."]
580pub struct ClkctrlSpec;
581impl crate::RegisterSpec for ClkctrlSpec {
582 type Ux = u32;
583}
584#[doc = "`read()` method returns [`clkctrl::R`](R) reader structure"]
585impl crate::Readable for ClkctrlSpec {}
586#[doc = "`write(|w| ..)` method takes [`clkctrl::W`](W) writer structure"]
587impl crate::Writable for ClkctrlSpec {
588 type Safety = crate::Unsafe;
589 const ZERO_TO_MODIFY_FIELDS_BITMAP: u32 = 0;
590 const ONE_TO_MODIFY_FIELDS_BITMAP: u32 = 0;
591}
592#[doc = "`reset()` method sets CLKCTRL%s to value 0"]
593impl crate::Resettable for ClkctrlSpec {
594 const RESET_VALUE: u32 = 0;
595}