xmc4500/sdmmc/
transfer_mode.rs

1#[doc = "Register `TRANSFER_MODE` reader"]
2pub type R = crate::R<TRANSFER_MODE_SPEC>;
3#[doc = "Register `TRANSFER_MODE` writer"]
4pub type W = crate::W<TRANSFER_MODE_SPEC>;
5#[doc = "Block Count Enable\n\nValue on reset: 0"]
6#[derive(Clone, Copy, Debug, PartialEq, Eq)]
7pub enum BLOCK_COUNT_EN_A {
8    #[doc = "0: Disable"]
9    VALUE1 = 0,
10    #[doc = "1: Enable"]
11    VALUE2 = 1,
12}
13impl From<BLOCK_COUNT_EN_A> for bool {
14    #[inline(always)]
15    fn from(variant: BLOCK_COUNT_EN_A) -> Self {
16        variant as u8 != 0
17    }
18}
19#[doc = "Field `BLOCK_COUNT_EN` reader - Block Count Enable"]
20pub type BLOCK_COUNT_EN_R = crate::BitReader<BLOCK_COUNT_EN_A>;
21impl BLOCK_COUNT_EN_R {
22    #[doc = "Get enumerated values variant"]
23    #[inline(always)]
24    pub const fn variant(&self) -> BLOCK_COUNT_EN_A {
25        match self.bits {
26            false => BLOCK_COUNT_EN_A::VALUE1,
27            true => BLOCK_COUNT_EN_A::VALUE2,
28        }
29    }
30    #[doc = "Disable"]
31    #[inline(always)]
32    pub fn is_value1(&self) -> bool {
33        *self == BLOCK_COUNT_EN_A::VALUE1
34    }
35    #[doc = "Enable"]
36    #[inline(always)]
37    pub fn is_value2(&self) -> bool {
38        *self == BLOCK_COUNT_EN_A::VALUE2
39    }
40}
41#[doc = "Field `BLOCK_COUNT_EN` writer - Block Count Enable"]
42pub type BLOCK_COUNT_EN_W<'a, REG> = crate::BitWriter<'a, REG, BLOCK_COUNT_EN_A>;
43impl<'a, REG> BLOCK_COUNT_EN_W<'a, REG>
44where
45    REG: crate::Writable + crate::RegisterSpec,
46{
47    #[doc = "Disable"]
48    #[inline(always)]
49    pub fn value1(self) -> &'a mut crate::W<REG> {
50        self.variant(BLOCK_COUNT_EN_A::VALUE1)
51    }
52    #[doc = "Enable"]
53    #[inline(always)]
54    pub fn value2(self) -> &'a mut crate::W<REG> {
55        self.variant(BLOCK_COUNT_EN_A::VALUE2)
56    }
57}
58#[doc = "Auto CMD Enable\n\nValue on reset: 0"]
59#[derive(Clone, Copy, Debug, PartialEq, Eq)]
60#[repr(u8)]
61pub enum ACMD_EN_A {
62    #[doc = "0: Auto Command Disabled"]
63    VALUE1 = 0,
64    #[doc = "1: Auto CMD12 Enable"]
65    VALUE2 = 1,
66}
67impl From<ACMD_EN_A> for u8 {
68    #[inline(always)]
69    fn from(variant: ACMD_EN_A) -> Self {
70        variant as _
71    }
72}
73impl crate::FieldSpec for ACMD_EN_A {
74    type Ux = u8;
75}
76impl crate::IsEnum for ACMD_EN_A {}
77#[doc = "Field `ACMD_EN` reader - Auto CMD Enable"]
78pub type ACMD_EN_R = crate::FieldReader<ACMD_EN_A>;
79impl ACMD_EN_R {
80    #[doc = "Get enumerated values variant"]
81    #[inline(always)]
82    pub const fn variant(&self) -> Option<ACMD_EN_A> {
83        match self.bits {
84            0 => Some(ACMD_EN_A::VALUE1),
85            1 => Some(ACMD_EN_A::VALUE2),
86            _ => None,
87        }
88    }
89    #[doc = "Auto Command Disabled"]
90    #[inline(always)]
91    pub fn is_value1(&self) -> bool {
92        *self == ACMD_EN_A::VALUE1
93    }
94    #[doc = "Auto CMD12 Enable"]
95    #[inline(always)]
96    pub fn is_value2(&self) -> bool {
97        *self == ACMD_EN_A::VALUE2
98    }
99}
100#[doc = "Field `ACMD_EN` writer - Auto CMD Enable"]
101pub type ACMD_EN_W<'a, REG> = crate::FieldWriter<'a, REG, 2, ACMD_EN_A>;
102impl<'a, REG> ACMD_EN_W<'a, REG>
103where
104    REG: crate::Writable + crate::RegisterSpec,
105    REG::Ux: From<u8>,
106{
107    #[doc = "Auto Command Disabled"]
108    #[inline(always)]
109    pub fn value1(self) -> &'a mut crate::W<REG> {
110        self.variant(ACMD_EN_A::VALUE1)
111    }
112    #[doc = "Auto CMD12 Enable"]
113    #[inline(always)]
114    pub fn value2(self) -> &'a mut crate::W<REG> {
115        self.variant(ACMD_EN_A::VALUE2)
116    }
117}
118#[doc = "Data Transfer Direction Select\n\nValue on reset: 0"]
119#[derive(Clone, Copy, Debug, PartialEq, Eq)]
120pub enum TX_DIR_SELECT_A {
121    #[doc = "0: Write (Host to Card)"]
122    VALUE1 = 0,
123    #[doc = "1: Read (Card to Host)"]
124    VALUE2 = 1,
125}
126impl From<TX_DIR_SELECT_A> for bool {
127    #[inline(always)]
128    fn from(variant: TX_DIR_SELECT_A) -> Self {
129        variant as u8 != 0
130    }
131}
132#[doc = "Field `TX_DIR_SELECT` reader - Data Transfer Direction Select"]
133pub type TX_DIR_SELECT_R = crate::BitReader<TX_DIR_SELECT_A>;
134impl TX_DIR_SELECT_R {
135    #[doc = "Get enumerated values variant"]
136    #[inline(always)]
137    pub const fn variant(&self) -> TX_DIR_SELECT_A {
138        match self.bits {
139            false => TX_DIR_SELECT_A::VALUE1,
140            true => TX_DIR_SELECT_A::VALUE2,
141        }
142    }
143    #[doc = "Write (Host to Card)"]
144    #[inline(always)]
145    pub fn is_value1(&self) -> bool {
146        *self == TX_DIR_SELECT_A::VALUE1
147    }
148    #[doc = "Read (Card to Host)"]
149    #[inline(always)]
150    pub fn is_value2(&self) -> bool {
151        *self == TX_DIR_SELECT_A::VALUE2
152    }
153}
154#[doc = "Field `TX_DIR_SELECT` writer - Data Transfer Direction Select"]
155pub type TX_DIR_SELECT_W<'a, REG> = crate::BitWriter<'a, REG, TX_DIR_SELECT_A>;
156impl<'a, REG> TX_DIR_SELECT_W<'a, REG>
157where
158    REG: crate::Writable + crate::RegisterSpec,
159{
160    #[doc = "Write (Host to Card)"]
161    #[inline(always)]
162    pub fn value1(self) -> &'a mut crate::W<REG> {
163        self.variant(TX_DIR_SELECT_A::VALUE1)
164    }
165    #[doc = "Read (Card to Host)"]
166    #[inline(always)]
167    pub fn value2(self) -> &'a mut crate::W<REG> {
168        self.variant(TX_DIR_SELECT_A::VALUE2)
169    }
170}
171#[doc = "Multi / Single Block Select\n\nValue on reset: 0"]
172#[derive(Clone, Copy, Debug, PartialEq, Eq)]
173pub enum MULTI_BLOCK_SELECT_A {
174    #[doc = "0: Single Block"]
175    VALUE1 = 0,
176    #[doc = "1: Multiple Block"]
177    VALUE2 = 1,
178}
179impl From<MULTI_BLOCK_SELECT_A> for bool {
180    #[inline(always)]
181    fn from(variant: MULTI_BLOCK_SELECT_A) -> Self {
182        variant as u8 != 0
183    }
184}
185#[doc = "Field `MULTI_BLOCK_SELECT` reader - Multi / Single Block Select"]
186pub type MULTI_BLOCK_SELECT_R = crate::BitReader<MULTI_BLOCK_SELECT_A>;
187impl MULTI_BLOCK_SELECT_R {
188    #[doc = "Get enumerated values variant"]
189    #[inline(always)]
190    pub const fn variant(&self) -> MULTI_BLOCK_SELECT_A {
191        match self.bits {
192            false => MULTI_BLOCK_SELECT_A::VALUE1,
193            true => MULTI_BLOCK_SELECT_A::VALUE2,
194        }
195    }
196    #[doc = "Single Block"]
197    #[inline(always)]
198    pub fn is_value1(&self) -> bool {
199        *self == MULTI_BLOCK_SELECT_A::VALUE1
200    }
201    #[doc = "Multiple Block"]
202    #[inline(always)]
203    pub fn is_value2(&self) -> bool {
204        *self == MULTI_BLOCK_SELECT_A::VALUE2
205    }
206}
207#[doc = "Field `MULTI_BLOCK_SELECT` writer - Multi / Single Block Select"]
208pub type MULTI_BLOCK_SELECT_W<'a, REG> = crate::BitWriter<'a, REG, MULTI_BLOCK_SELECT_A>;
209impl<'a, REG> MULTI_BLOCK_SELECT_W<'a, REG>
210where
211    REG: crate::Writable + crate::RegisterSpec,
212{
213    #[doc = "Single Block"]
214    #[inline(always)]
215    pub fn value1(self) -> &'a mut crate::W<REG> {
216        self.variant(MULTI_BLOCK_SELECT_A::VALUE1)
217    }
218    #[doc = "Multiple Block"]
219    #[inline(always)]
220    pub fn value2(self) -> &'a mut crate::W<REG> {
221        self.variant(MULTI_BLOCK_SELECT_A::VALUE2)
222    }
223}
224#[doc = "Command Completion Signal Enable for CE-ATA Device\n\nValue on reset: 0"]
225#[derive(Clone, Copy, Debug, PartialEq, Eq)]
226pub enum CMD_COMP_ATA_A {
227    #[doc = "1: Device will send command completion Signal"]
228    VALUE1 = 1,
229    #[doc = "0: Device will not send command completion Signal"]
230    VALUE2 = 0,
231}
232impl From<CMD_COMP_ATA_A> for bool {
233    #[inline(always)]
234    fn from(variant: CMD_COMP_ATA_A) -> Self {
235        variant as u8 != 0
236    }
237}
238#[doc = "Field `CMD_COMP_ATA` reader - Command Completion Signal Enable for CE-ATA Device"]
239pub type CMD_COMP_ATA_R = crate::BitReader<CMD_COMP_ATA_A>;
240impl CMD_COMP_ATA_R {
241    #[doc = "Get enumerated values variant"]
242    #[inline(always)]
243    pub const fn variant(&self) -> CMD_COMP_ATA_A {
244        match self.bits {
245            true => CMD_COMP_ATA_A::VALUE1,
246            false => CMD_COMP_ATA_A::VALUE2,
247        }
248    }
249    #[doc = "Device will send command completion Signal"]
250    #[inline(always)]
251    pub fn is_value1(&self) -> bool {
252        *self == CMD_COMP_ATA_A::VALUE1
253    }
254    #[doc = "Device will not send command completion Signal"]
255    #[inline(always)]
256    pub fn is_value2(&self) -> bool {
257        *self == CMD_COMP_ATA_A::VALUE2
258    }
259}
260#[doc = "Field `CMD_COMP_ATA` writer - Command Completion Signal Enable for CE-ATA Device"]
261pub type CMD_COMP_ATA_W<'a, REG> = crate::BitWriter<'a, REG, CMD_COMP_ATA_A>;
262impl<'a, REG> CMD_COMP_ATA_W<'a, REG>
263where
264    REG: crate::Writable + crate::RegisterSpec,
265{
266    #[doc = "Device will send command completion Signal"]
267    #[inline(always)]
268    pub fn value1(self) -> &'a mut crate::W<REG> {
269        self.variant(CMD_COMP_ATA_A::VALUE1)
270    }
271    #[doc = "Device will not send command completion Signal"]
272    #[inline(always)]
273    pub fn value2(self) -> &'a mut crate::W<REG> {
274        self.variant(CMD_COMP_ATA_A::VALUE2)
275    }
276}
277impl R {
278    #[doc = "Bit 1 - Block Count Enable"]
279    #[inline(always)]
280    pub fn block_count_en(&self) -> BLOCK_COUNT_EN_R {
281        BLOCK_COUNT_EN_R::new(((self.bits >> 1) & 1) != 0)
282    }
283    #[doc = "Bits 2:3 - Auto CMD Enable"]
284    #[inline(always)]
285    pub fn acmd_en(&self) -> ACMD_EN_R {
286        ACMD_EN_R::new(((self.bits >> 2) & 3) as u8)
287    }
288    #[doc = "Bit 4 - Data Transfer Direction Select"]
289    #[inline(always)]
290    pub fn tx_dir_select(&self) -> TX_DIR_SELECT_R {
291        TX_DIR_SELECT_R::new(((self.bits >> 4) & 1) != 0)
292    }
293    #[doc = "Bit 5 - Multi / Single Block Select"]
294    #[inline(always)]
295    pub fn multi_block_select(&self) -> MULTI_BLOCK_SELECT_R {
296        MULTI_BLOCK_SELECT_R::new(((self.bits >> 5) & 1) != 0)
297    }
298    #[doc = "Bit 6 - Command Completion Signal Enable for CE-ATA Device"]
299    #[inline(always)]
300    pub fn cmd_comp_ata(&self) -> CMD_COMP_ATA_R {
301        CMD_COMP_ATA_R::new(((self.bits >> 6) & 1) != 0)
302    }
303}
304impl W {
305    #[doc = "Bit 1 - Block Count Enable"]
306    #[inline(always)]
307    pub fn block_count_en(&mut self) -> BLOCK_COUNT_EN_W<TRANSFER_MODE_SPEC> {
308        BLOCK_COUNT_EN_W::new(self, 1)
309    }
310    #[doc = "Bits 2:3 - Auto CMD Enable"]
311    #[inline(always)]
312    pub fn acmd_en(&mut self) -> ACMD_EN_W<TRANSFER_MODE_SPEC> {
313        ACMD_EN_W::new(self, 2)
314    }
315    #[doc = "Bit 4 - Data Transfer Direction Select"]
316    #[inline(always)]
317    pub fn tx_dir_select(&mut self) -> TX_DIR_SELECT_W<TRANSFER_MODE_SPEC> {
318        TX_DIR_SELECT_W::new(self, 4)
319    }
320    #[doc = "Bit 5 - Multi / Single Block Select"]
321    #[inline(always)]
322    pub fn multi_block_select(&mut self) -> MULTI_BLOCK_SELECT_W<TRANSFER_MODE_SPEC> {
323        MULTI_BLOCK_SELECT_W::new(self, 5)
324    }
325    #[doc = "Bit 6 - Command Completion Signal Enable for CE-ATA Device"]
326    #[inline(always)]
327    pub fn cmd_comp_ata(&mut self) -> CMD_COMP_ATA_W<TRANSFER_MODE_SPEC> {
328        CMD_COMP_ATA_W::new(self, 6)
329    }
330}
331#[doc = "Transfer Mode Register\n\nYou can [`read`](crate::Reg::read) this register and get [`transfer_mode::R`](R). You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`transfer_mode::W`](W). You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api)."]
332pub struct TRANSFER_MODE_SPEC;
333impl crate::RegisterSpec for TRANSFER_MODE_SPEC {
334    type Ux = u16;
335}
336#[doc = "`read()` method returns [`transfer_mode::R`](R) reader structure"]
337impl crate::Readable for TRANSFER_MODE_SPEC {}
338#[doc = "`write(|w| ..)` method takes [`transfer_mode::W`](W) writer structure"]
339impl crate::Writable for TRANSFER_MODE_SPEC {
340    type Safety = crate::Unsafe;
341    const ZERO_TO_MODIFY_FIELDS_BITMAP: u16 = 0;
342    const ONE_TO_MODIFY_FIELDS_BITMAP: u16 = 0;
343}
344#[doc = "`reset()` method sets TRANSFER_MODE to value 0"]
345impl crate::Resettable for TRANSFER_MODE_SPEC {
346    const RESET_VALUE: u16 = 0;
347}