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
#[doc = "Reader of register VDCTRL3"] pub type R = crate::R<u32, super::VDCTRL3>; #[doc = "Writer for register VDCTRL3"] pub type W = crate::W<u32, super::VDCTRL3>; #[doc = "Register VDCTRL3 `reset()`'s with value 0"] impl crate::ResetValue for super::VDCTRL3 { type Type = u32; #[inline(always)] fn reset_value() -> Self::Type { 0 } } #[doc = "Reader of field `VERTICAL_WAIT_CNT`"] pub type VERTICAL_WAIT_CNT_R = crate::R<u16, u16>; #[doc = "Write proxy for field `VERTICAL_WAIT_CNT`"] pub struct VERTICAL_WAIT_CNT_W<'a> { w: &'a mut W, } impl<'a> VERTICAL_WAIT_CNT_W<'a> { #[doc = r"Writes raw bits to the field"] #[inline(always)] pub unsafe fn bits(self, value: u16) -> &'a mut W { self.w.bits = (self.w.bits & !0xffff) | ((value as u32) & 0xffff); self.w } } #[doc = "Reader of field `HORIZONTAL_WAIT_CNT`"] pub type HORIZONTAL_WAIT_CNT_R = crate::R<u16, u16>; #[doc = "Write proxy for field `HORIZONTAL_WAIT_CNT`"] pub struct HORIZONTAL_WAIT_CNT_W<'a> { w: &'a mut W, } impl<'a> HORIZONTAL_WAIT_CNT_W<'a> { #[doc = r"Writes raw bits to the field"] #[inline(always)] pub unsafe fn bits(self, value: u16) -> &'a mut W { self.w.bits = (self.w.bits & !(0x0fff << 16)) | (((value as u32) & 0x0fff) << 16); self.w } } #[doc = "Reader of field `VSYNC_ONLY`"] pub type VSYNC_ONLY_R = crate::R<bool, bool>; #[doc = "Write proxy for field `VSYNC_ONLY`"] pub struct VSYNC_ONLY_W<'a> { w: &'a mut W, } impl<'a> VSYNC_ONLY_W<'a> { #[doc = r"Sets the field bit"] #[inline(always)] pub fn set_bit(self) -> &'a mut W { self.bit(true) } #[doc = r"Clears the field bit"] #[inline(always)] pub fn clear_bit(self) -> &'a mut W { self.bit(false) } #[doc = r"Writes raw bits to the field"] #[inline(always)] pub fn bit(self, value: bool) -> &'a mut W { self.w.bits = (self.w.bits & !(0x01 << 28)) | (((value as u32) & 0x01) << 28); self.w } } #[doc = "Reader of field `MUX_SYNC_SIGNALS`"] pub type MUX_SYNC_SIGNALS_R = crate::R<bool, bool>; #[doc = "Write proxy for field `MUX_SYNC_SIGNALS`"] pub struct MUX_SYNC_SIGNALS_W<'a> { w: &'a mut W, } impl<'a> MUX_SYNC_SIGNALS_W<'a> { #[doc = r"Sets the field bit"] #[inline(always)] pub fn set_bit(self) -> &'a mut W { self.bit(true) } #[doc = r"Clears the field bit"] #[inline(always)] pub fn clear_bit(self) -> &'a mut W { self.bit(false) } #[doc = r"Writes raw bits to the field"] #[inline(always)] pub fn bit(self, value: bool) -> &'a mut W { self.w.bits = (self.w.bits & !(0x01 << 29)) | (((value as u32) & 0x01) << 29); self.w } } impl R { #[doc = "Bits 0:15 - In the VSYNC interface mode, wait for this number of DISPLAY CLOCK (pix_clk) cycles from the falling VSYNC edge (or rising if VSYNC_POL is 1) before starting LCD transactions and is applicable only if WAIT_FOR_VSYNC_EDGE is set"] #[inline(always)] pub fn vertical_wait_cnt(&self) -> VERTICAL_WAIT_CNT_R { VERTICAL_WAIT_CNT_R::new((self.bits & 0xffff) as u16) } #[doc = "Bits 16:27 - In the DOTCLK mode, wait for this number of clocks from falling edge (or rising if HSYNC_POL is 1) of HSYNC signal to account for horizontal back porch plus the number of DOTCLKs before the moving picture information begins"] #[inline(always)] pub fn horizontal_wait_cnt(&self) -> HORIZONTAL_WAIT_CNT_R { HORIZONTAL_WAIT_CNT_R::new(((self.bits >> 16) & 0x0fff) as u16) } #[doc = "Bit 28 - This bit must be set to 1 in the VSYNC mode of operation, and 0 in the DOTCLK mode of operation."] #[inline(always)] pub fn vsync_only(&self) -> VSYNC_ONLY_R { VSYNC_ONLY_R::new(((self.bits >> 28) & 0x01) != 0) } #[doc = "Bit 29 - When this bit is set, the LCDIF block will internally mux HSYNC with LCD_D14, DOTCLK with LCD_D13 and ENABLE with LCD_D12, otherwise these signals will go out on separate pins"] #[inline(always)] pub fn mux_sync_signals(&self) -> MUX_SYNC_SIGNALS_R { MUX_SYNC_SIGNALS_R::new(((self.bits >> 29) & 0x01) != 0) } } impl W { #[doc = "Bits 0:15 - In the VSYNC interface mode, wait for this number of DISPLAY CLOCK (pix_clk) cycles from the falling VSYNC edge (or rising if VSYNC_POL is 1) before starting LCD transactions and is applicable only if WAIT_FOR_VSYNC_EDGE is set"] #[inline(always)] pub fn vertical_wait_cnt(&mut self) -> VERTICAL_WAIT_CNT_W { VERTICAL_WAIT_CNT_W { w: self } } #[doc = "Bits 16:27 - In the DOTCLK mode, wait for this number of clocks from falling edge (or rising if HSYNC_POL is 1) of HSYNC signal to account for horizontal back porch plus the number of DOTCLKs before the moving picture information begins"] #[inline(always)] pub fn horizontal_wait_cnt(&mut self) -> HORIZONTAL_WAIT_CNT_W { HORIZONTAL_WAIT_CNT_W { w: self } } #[doc = "Bit 28 - This bit must be set to 1 in the VSYNC mode of operation, and 0 in the DOTCLK mode of operation."] #[inline(always)] pub fn vsync_only(&mut self) -> VSYNC_ONLY_W { VSYNC_ONLY_W { w: self } } #[doc = "Bit 29 - When this bit is set, the LCDIF block will internally mux HSYNC with LCD_D14, DOTCLK with LCD_D13 and ENABLE with LCD_D12, otherwise these signals will go out on separate pins"] #[inline(always)] pub fn mux_sync_signals(&mut self) -> MUX_SYNC_SIGNALS_W { MUX_SYNC_SIGNALS_W { w: self } } }