#![allow(clippy::identity_op)]
#![allow(clippy::module_inception)]
#![allow(clippy::derivable_impls)]
#[allow(unused_imports)]
use crate::common::sealed;
#[allow(unused_imports)]
use crate::common::*;
#[doc = r"Data Transfer Controller"]
unsafe impl ::core::marker::Send for super::Dtc {}
unsafe impl ::core::marker::Sync for super::Dtc {}
impl super::Dtc {
    #[allow(unused)]
    #[inline(always)]
    pub(crate) const fn _svd2pac_as_ptr(&self) -> *mut u8 {
        self.ptr
    }
    #[doc = "DTC Control Register"]
    #[inline(always)]
    pub const fn dtccr(&self) -> &'static crate::common::Reg<self::Dtccr_SPEC, crate::common::RW> {
        unsafe {
            crate::common::Reg::<self::Dtccr_SPEC, crate::common::RW>::from_ptr(
                self._svd2pac_as_ptr().add(0usize),
            )
        }
    }
    #[doc = "DTC Vector Base Register"]
    #[inline(always)]
    pub const fn dtcvbr(
        &self,
    ) -> &'static crate::common::Reg<self::Dtcvbr_SPEC, crate::common::RW> {
        unsafe {
            crate::common::Reg::<self::Dtcvbr_SPEC, crate::common::RW>::from_ptr(
                self._svd2pac_as_ptr().add(4usize),
            )
        }
    }
    #[doc = "DTC Module Start Register"]
    #[inline(always)]
    pub const fn dtcst(&self) -> &'static crate::common::Reg<self::Dtcst_SPEC, crate::common::RW> {
        unsafe {
            crate::common::Reg::<self::Dtcst_SPEC, crate::common::RW>::from_ptr(
                self._svd2pac_as_ptr().add(12usize),
            )
        }
    }
    #[doc = "DTC Status Register"]
    #[inline(always)]
    pub const fn dtcsts(&self) -> &'static crate::common::Reg<self::Dtcsts_SPEC, crate::common::R> {
        unsafe {
            crate::common::Reg::<self::Dtcsts_SPEC, crate::common::R>::from_ptr(
                self._svd2pac_as_ptr().add(14usize),
            )
        }
    }
    #[doc = "DTC Control Register for secure Region"]
    #[inline(always)]
    pub const fn dtccr_sec(
        &self,
    ) -> &'static crate::common::Reg<self::DtccrSec_SPEC, crate::common::RW> {
        unsafe {
            crate::common::Reg::<self::DtccrSec_SPEC, crate::common::RW>::from_ptr(
                self._svd2pac_as_ptr().add(16usize),
            )
        }
    }
    #[doc = "DTC Vector Base Register for secure Region"]
    #[inline(always)]
    pub const fn dtcvbr_sec(
        &self,
    ) -> &'static crate::common::Reg<self::DtcvbrSec_SPEC, crate::common::RW> {
        unsafe {
            crate::common::Reg::<self::DtcvbrSec_SPEC, crate::common::RW>::from_ptr(
                self._svd2pac_as_ptr().add(20usize),
            )
        }
    }
    #[doc = "DTC Error Vector Register"]
    #[inline(always)]
    pub const fn dtevr(&self) -> &'static crate::common::Reg<self::Dtevr_SPEC, crate::common::RW> {
        unsafe {
            crate::common::Reg::<self::Dtevr_SPEC, crate::common::RW>::from_ptr(
                self._svd2pac_as_ptr().add(32usize),
            )
        }
    }
}
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Dtccr_SPEC;
impl crate::sealed::RegSpec for Dtccr_SPEC {
    type DataType = u8;
}
#[doc = "DTC Control Register"]
pub type Dtccr = crate::RegValueT<Dtccr_SPEC>;
impl Dtccr {
    #[doc = "DTC Transfer Information Read Skip Enable"]
    #[inline(always)]
    pub fn rrs(
        self,
    ) -> crate::common::RegisterField<
        4,
        0x1,
        1,
        0,
        dtccr::Rrs,
        dtccr::Rrs,
        Dtccr_SPEC,
        crate::common::RW,
    > {
        crate::common::RegisterField::<
            4,
            0x1,
            1,
            0,
            dtccr::Rrs,
            dtccr::Rrs,
            Dtccr_SPEC,
            crate::common::RW,
        >::from_register(self, 0)
    }
}
impl ::core::default::Default for Dtccr {
    #[inline(always)]
    fn default() -> Dtccr {
        <crate::RegValueT<Dtccr_SPEC> as RegisterValue<_>>::new(8)
    }
}
pub mod dtccr {
    #[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd)]
    pub struct Rrs_SPEC;
    pub type Rrs = crate::EnumBitfieldStruct<u8, Rrs_SPEC>;
    impl Rrs {
        #[doc = "Transfer information read is not skipped"]
        pub const _0: Self = Self::new(0);
        #[doc = "Transfer information read is skipped when vector numbers match"]
        pub const _1: Self = Self::new(1);
    }
}
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Dtcvbr_SPEC;
impl crate::sealed::RegSpec for Dtcvbr_SPEC {
    type DataType = u32;
}
#[doc = "DTC Vector Base Register"]
pub type Dtcvbr = crate::RegValueT<Dtcvbr_SPEC>;
impl NoBitfieldReg<Dtcvbr_SPEC> for Dtcvbr {}
impl ::core::default::Default for Dtcvbr {
    #[inline(always)]
    fn default() -> Dtcvbr {
        <crate::RegValueT<Dtcvbr_SPEC> as RegisterValue<_>>::new(0)
    }
}
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Dtcst_SPEC;
impl crate::sealed::RegSpec for Dtcst_SPEC {
    type DataType = u8;
}
#[doc = "DTC Module Start Register"]
pub type Dtcst = crate::RegValueT<Dtcst_SPEC>;
impl Dtcst {
    #[doc = "DTC Module Start"]
    #[inline(always)]
    pub fn dtcst(
        self,
    ) -> crate::common::RegisterField<
        0,
        0x1,
        1,
        0,
        dtcst::Dtcst,
        dtcst::Dtcst,
        Dtcst_SPEC,
        crate::common::RW,
    > {
        crate::common::RegisterField::<
            0,
            0x1,
            1,
            0,
            dtcst::Dtcst,
            dtcst::Dtcst,
            Dtcst_SPEC,
            crate::common::RW,
        >::from_register(self, 0)
    }
}
impl ::core::default::Default for Dtcst {
    #[inline(always)]
    fn default() -> Dtcst {
        <crate::RegValueT<Dtcst_SPEC> as RegisterValue<_>>::new(0)
    }
}
pub mod dtcst {
    #[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd)]
    pub struct Dtcst_SPEC;
    pub type Dtcst = crate::EnumBitfieldStruct<u8, Dtcst_SPEC>;
    impl Dtcst {
        #[doc = "DTC module stopped."]
        pub const _0: Self = Self::new(0);
        #[doc = "DTC module started."]
        pub const _1: Self = Self::new(1);
    }
}
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Dtcsts_SPEC;
impl crate::sealed::RegSpec for Dtcsts_SPEC {
    type DataType = u16;
}
#[doc = "DTC Status Register"]
pub type Dtcsts = crate::RegValueT<Dtcsts_SPEC>;
impl Dtcsts {
    #[doc = "DTC-Activating Vector Number Monitoring"]
    #[inline(always)]
    pub fn vecn(
        self,
    ) -> crate::common::RegisterField<0, 0xff, 1, 0, u8, u8, Dtcsts_SPEC, crate::common::R> {
        crate::common::RegisterField::<0,0xff,1,0,u8,u8,Dtcsts_SPEC,crate::common::R>::from_register(self,0)
    }
    #[doc = "DTC Active Flag"]
    #[inline(always)]
    pub fn act(
        self,
    ) -> crate::common::RegisterField<
        15,
        0x1,
        1,
        0,
        dtcsts::Act,
        dtcsts::Act,
        Dtcsts_SPEC,
        crate::common::R,
    > {
        crate::common::RegisterField::<
            15,
            0x1,
            1,
            0,
            dtcsts::Act,
            dtcsts::Act,
            Dtcsts_SPEC,
            crate::common::R,
        >::from_register(self, 0)
    }
}
impl ::core::default::Default for Dtcsts {
    #[inline(always)]
    fn default() -> Dtcsts {
        <crate::RegValueT<Dtcsts_SPEC> as RegisterValue<_>>::new(0)
    }
}
pub mod dtcsts {
    #[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd)]
    pub struct Act_SPEC;
    pub type Act = crate::EnumBitfieldStruct<u8, Act_SPEC>;
    impl Act {
        #[doc = "DTC transfer operation is not in progress."]
        pub const _0: Self = Self::new(0);
        #[doc = "DTC transfer operation is in progress."]
        pub const _1: Self = Self::new(1);
    }
}
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct DtccrSec_SPEC;
impl crate::sealed::RegSpec for DtccrSec_SPEC {
    type DataType = u8;
}
#[doc = "DTC Control Register for secure Region"]
pub type DtccrSec = crate::RegValueT<DtccrSec_SPEC>;
impl DtccrSec {
    #[doc = "DTC Transfer Information Read Skip Enable for Secure"]
    #[inline(always)]
    pub fn rrs(
        self,
    ) -> crate::common::RegisterField<
        4,
        0x1,
        1,
        0,
        dtccr_sec::Rrs,
        dtccr_sec::Rrs,
        DtccrSec_SPEC,
        crate::common::RW,
    > {
        crate::common::RegisterField::<
            4,
            0x1,
            1,
            0,
            dtccr_sec::Rrs,
            dtccr_sec::Rrs,
            DtccrSec_SPEC,
            crate::common::RW,
        >::from_register(self, 0)
    }
}
impl ::core::default::Default for DtccrSec {
    #[inline(always)]
    fn default() -> DtccrSec {
        <crate::RegValueT<DtccrSec_SPEC> as RegisterValue<_>>::new(8)
    }
}
pub mod dtccr_sec {
    #[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd)]
    pub struct Rrs_SPEC;
    pub type Rrs = crate::EnumBitfieldStruct<u8, Rrs_SPEC>;
    impl Rrs {
        #[doc = "Transfer information read is not skipped."]
        pub const _0: Self = Self::new(0);
        #[doc = "Transfer information read is skipped when vector numbers match."]
        pub const _1: Self = Self::new(1);
    }
}
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct DtcvbrSec_SPEC;
impl crate::sealed::RegSpec for DtcvbrSec_SPEC {
    type DataType = u32;
}
#[doc = "DTC Vector Base Register for secure Region"]
pub type DtcvbrSec = crate::RegValueT<DtcvbrSec_SPEC>;
impl NoBitfieldReg<DtcvbrSec_SPEC> for DtcvbrSec {}
impl ::core::default::Default for DtcvbrSec {
    #[inline(always)]
    fn default() -> DtcvbrSec {
        <crate::RegValueT<DtcvbrSec_SPEC> as RegisterValue<_>>::new(0)
    }
}
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Dtevr_SPEC;
impl crate::sealed::RegSpec for Dtevr_SPEC {
    type DataType = u32;
}
#[doc = "DTC Error Vector Register"]
pub type Dtevr = crate::RegValueT<Dtevr_SPEC>;
impl Dtevr {
    #[doc = "DTC Error Vector Number"]
    #[inline(always)]
    pub fn dtev(
        self,
    ) -> crate::common::RegisterField<0, 0xff, 1, 0, u8, u8, Dtevr_SPEC, crate::common::R> {
        crate::common::RegisterField::<0,0xff,1,0,u8,u8,Dtevr_SPEC,crate::common::R>::from_register(self,0)
    }
    #[doc = "DTC Error Vector Number SA Monitor"]
    #[inline(always)]
    pub fn dtevsam(
        self,
    ) -> crate::common::RegisterField<
        8,
        0x1,
        1,
        0,
        dtevr::Dtevsam,
        dtevr::Dtevsam,
        Dtevr_SPEC,
        crate::common::R,
    > {
        crate::common::RegisterField::<
            8,
            0x1,
            1,
            0,
            dtevr::Dtevsam,
            dtevr::Dtevsam,
            Dtevr_SPEC,
            crate::common::R,
        >::from_register(self, 0)
    }
    #[doc = "DTC Error Status Flag"]
    #[inline(always)]
    pub fn dtesta(
        self,
    ) -> crate::common::RegisterField<
        16,
        0x1,
        1,
        0,
        dtevr::Dtesta,
        dtevr::Dtesta,
        Dtevr_SPEC,
        crate::common::RW,
    > {
        crate::common::RegisterField::<
            16,
            0x1,
            1,
            0,
            dtevr::Dtesta,
            dtevr::Dtesta,
            Dtevr_SPEC,
            crate::common::RW,
        >::from_register(self, 0)
    }
}
impl ::core::default::Default for Dtevr {
    #[inline(always)]
    fn default() -> Dtevr {
        <crate::RegValueT<Dtevr_SPEC> as RegisterValue<_>>::new(0)
    }
}
pub mod dtevr {
    #[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd)]
    pub struct Dtevsam_SPEC;
    pub type Dtevsam = crate::EnumBitfieldStruct<u8, Dtevsam_SPEC>;
    impl Dtevsam {
        #[doc = "Secure vector number"]
        pub const _0: Self = Self::new(0);
        #[doc = "Non-Secure vector number"]
        pub const _1: Self = Self::new(1);
    }
    #[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd)]
    pub struct Dtesta_SPEC;
    pub type Dtesta = crate::EnumBitfieldStruct<u8, Dtesta_SPEC>;
    impl Dtesta {
        #[doc = "No DTC transfer error occurred"]
        pub const _0: Self = Self::new(0);
        #[doc = "DTC transfer error occurred"]
        pub const _1: Self = Self::new(1);
    }
}