pub type R = crate::R<AHBRSTRrs>;
pub type W = crate::W<AHBRSTRrs>;
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum IOPARST {
        Reset = 1,
}
impl From<IOPARST> for bool {
    #[inline(always)]
    fn from(variant: IOPARST) -> Self {
        variant as u8 != 0
    }
}
pub type IOPARST_R = crate::BitReader<IOPARST>;
impl IOPARST_R {
        #[inline(always)]
    pub const fn variant(&self) -> Option<IOPARST> {
        match self.bits {
            true => Some(IOPARST::Reset),
            _ => None,
        }
    }
        #[inline(always)]
    pub fn is_reset(&self) -> bool {
        *self == IOPARST::Reset
    }
}
pub type IOPARST_W<'a, REG> = crate::BitWriter<'a, REG, IOPARST>;
impl<'a, REG> IOPARST_W<'a, REG>
where
    REG: crate::Writable + crate::RegisterSpec,
{
        #[inline(always)]
    pub fn reset(self) -> &'a mut crate::W<REG> {
        self.variant(IOPARST::Reset)
    }
}
pub use IOPARST_R as IOPBRST_R;
pub use IOPARST_R as IOPCRST_R;
pub use IOPARST_R as IOPDRST_R;
pub use IOPARST_R as IOPERST_R;
pub use IOPARST_R as IOPFRST_R;
pub use IOPARST_R as TSCRST_R;
pub use IOPARST_W as IOPBRST_W;
pub use IOPARST_W as IOPCRST_W;
pub use IOPARST_W as IOPDRST_W;
pub use IOPARST_W as IOPERST_W;
pub use IOPARST_W as IOPFRST_W;
pub use IOPARST_W as TSCRST_W;
impl R {
        #[inline(always)]
    pub fn ioparst(&self) -> IOPARST_R {
        IOPARST_R::new(((self.bits >> 17) & 1) != 0)
    }
        #[inline(always)]
    pub fn iopbrst(&self) -> IOPBRST_R {
        IOPBRST_R::new(((self.bits >> 18) & 1) != 0)
    }
        #[inline(always)]
    pub fn iopcrst(&self) -> IOPCRST_R {
        IOPCRST_R::new(((self.bits >> 19) & 1) != 0)
    }
        #[inline(always)]
    pub fn iopdrst(&self) -> IOPDRST_R {
        IOPDRST_R::new(((self.bits >> 20) & 1) != 0)
    }
        #[inline(always)]
    pub fn ioperst(&self) -> IOPERST_R {
        IOPERST_R::new(((self.bits >> 21) & 1) != 0)
    }
        #[inline(always)]
    pub fn iopfrst(&self) -> IOPFRST_R {
        IOPFRST_R::new(((self.bits >> 22) & 1) != 0)
    }
        #[inline(always)]
    pub fn tscrst(&self) -> TSCRST_R {
        TSCRST_R::new(((self.bits >> 24) & 1) != 0)
    }
}
impl core::fmt::Debug for R {
    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
        f.debug_struct("AHBRSTR")
            .field("ioparst", &self.ioparst())
            .field("iopbrst", &self.iopbrst())
            .field("iopcrst", &self.iopcrst())
            .field("iopdrst", &self.iopdrst())
            .field("ioperst", &self.ioperst())
            .field("iopfrst", &self.iopfrst())
            .field("tscrst", &self.tscrst())
            .finish()
    }
}
impl W {
        #[inline(always)]
    pub fn ioparst(&mut self) -> IOPARST_W<AHBRSTRrs> {
        IOPARST_W::new(self, 17)
    }
        #[inline(always)]
    pub fn iopbrst(&mut self) -> IOPBRST_W<AHBRSTRrs> {
        IOPBRST_W::new(self, 18)
    }
        #[inline(always)]
    pub fn iopcrst(&mut self) -> IOPCRST_W<AHBRSTRrs> {
        IOPCRST_W::new(self, 19)
    }
        #[inline(always)]
    pub fn iopdrst(&mut self) -> IOPDRST_W<AHBRSTRrs> {
        IOPDRST_W::new(self, 20)
    }
        #[inline(always)]
    pub fn ioperst(&mut self) -> IOPERST_W<AHBRSTRrs> {
        IOPERST_W::new(self, 21)
    }
        #[inline(always)]
    pub fn iopfrst(&mut self) -> IOPFRST_W<AHBRSTRrs> {
        IOPFRST_W::new(self, 22)
    }
        #[inline(always)]
    pub fn tscrst(&mut self) -> TSCRST_W<AHBRSTRrs> {
        TSCRST_W::new(self, 24)
    }
}
pub struct AHBRSTRrs;
impl crate::RegisterSpec for AHBRSTRrs {
    type Ux = u32;
}
impl crate::Readable for AHBRSTRrs {}
impl crate::Writable for AHBRSTRrs {
    type Safety = crate::Unsafe;
}
impl crate::Resettable for AHBRSTRrs {}