#[doc = "Register `LPWK_EN` reader"]
pub struct R(crate::R<LPWK_EN_SPEC>);
impl core::ops::Deref for R {
    type Target = crate::R<LPWK_EN_SPEC>;
    #[inline(always)]
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}
impl From<crate::R<LPWK_EN_SPEC>> for R {
    #[inline(always)]
    fn from(reader: crate::R<LPWK_EN_SPEC>) -> Self {
        R(reader)
    }
}
#[doc = "Register `LPWK_EN` writer"]
pub struct W(crate::W<LPWK_EN_SPEC>);
impl core::ops::Deref for W {
    type Target = crate::W<LPWK_EN_SPEC>;
    #[inline(always)]
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}
impl core::ops::DerefMut for W {
    #[inline(always)]
    fn deref_mut(&mut self) -> &mut Self::Target {
        &mut self.0
    }
}
impl From<crate::W<LPWK_EN_SPEC>> for W {
    #[inline(always)]
    fn from(writer: crate::W<LPWK_EN_SPEC>) -> Self {
        W(writer)
    }
}
#[doc = "Field `WAKEEN` reader - Enable wakeup. These bits allow wakeup from the corresponding GPIO pin(s) on transition(s) from low to high or high to low when PM.GPIOWKEN is set. Wakeup status is indicated in PPWKST register."]
pub struct WAKEEN_R(crate::FieldReader<u16, u16>);
impl WAKEEN_R {
    #[inline(always)]
    pub(crate) fn new(bits: u16) -> Self {
        WAKEEN_R(crate::FieldReader::new(bits))
    }
}
impl core::ops::Deref for WAKEEN_R {
    type Target = crate::FieldReader<u16, u16>;
    #[inline(always)]
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}
#[doc = "Field `WAKEEN` writer - Enable wakeup. These bits allow wakeup from the corresponding GPIO pin(s) on transition(s) from low to high or high to low when PM.GPIOWKEN is set. Wakeup status is indicated in PPWKST register."]
pub struct WAKEEN_W<'a> {
    w: &'a mut W,
}
impl<'a> WAKEEN_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 & !0x3fff) | (value as u32 & 0x3fff);
        self.w
    }
}
impl R {
    #[doc = "Bits 0:13 - Enable wakeup. These bits allow wakeup from the corresponding GPIO pin(s) on transition(s) from low to high or high to low when PM.GPIOWKEN is set. Wakeup status is indicated in PPWKST register."]
    #[inline(always)]
    pub fn wakeen(&self) -> WAKEEN_R {
        WAKEEN_R::new((self.bits & 0x3fff) as u16)
    }
}
impl W {
    #[doc = "Bits 0:13 - Enable wakeup. These bits allow wakeup from the corresponding GPIO pin(s) on transition(s) from low to high or high to low when PM.GPIOWKEN is set. Wakeup status is indicated in PPWKST register."]
    #[inline(always)]
    pub fn wakeen(&mut self) -> WAKEEN_W {
        WAKEEN_W { w: self }
    }
    #[doc = "Writes raw bits to the register."]
    #[inline(always)]
    pub unsafe fn bits(&mut self, bits: u32) -> &mut Self {
        self.0.bits(bits);
        self
    }
}
#[doc = "Low Power I/O Wakeup Enable Register 0. This register enables low power wakeup functionality for GPIO0.\n\nThis register you can [`read`](crate::generic::Reg::read), [`write_with_zero`](crate::generic::Reg::write_with_zero), [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`modify`](crate::generic::Reg::modify). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [lpwk_en](index.html) module"]
pub struct LPWK_EN_SPEC;
impl crate::RegisterSpec for LPWK_EN_SPEC {
    type Ux = u32;
}
#[doc = "`read()` method returns [lpwk_en::R](R) reader structure"]
impl crate::Readable for LPWK_EN_SPEC {
    type Reader = R;
}
#[doc = "`write(|w| ..)` method takes [lpwk_en::W](W) writer structure"]
impl crate::Writable for LPWK_EN_SPEC {
    type Writer = W;
}
#[doc = "`reset()` method sets LPWK_EN to value 0"]
impl crate::Resettable for LPWK_EN_SPEC {
    #[inline(always)]
    fn reset_value() -> Self::Ux {
        0
    }
}
