#[doc = "Register `CPUIRQSEL30` reader"]
pub type R = crate::R<Cpuirqsel30Spec>;
#[doc = "Register `CPUIRQSEL30` writer"]
pub type W = crate::W<Cpuirqsel30Spec>;
#[doc = "6:0\\]
Read/write selection value Writing any other value than values defined by a ENUM may result in undefined behavior.\n\nValue on reset: 0"]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[repr(u8)]
pub enum Ev {
#[doc = "121: Always asserted"]
AlwaysActive = 121,
#[doc = "119: RTC periodic event controlled by AON_RTC:CTL.RTC_UPD_EN"]
AonRtcUpd = 119,
#[doc = "114: Loopback of OBSMUX0 through AUX, corresponds to AUX_EVCTL:EVTOMCUFLAGS.OBSMUX0"]
AuxObsmux0 = 114,
#[doc = "113: AUX ADC FIFO watermark event, corresponds to AUX_EVCTL:EVTOMCUFLAGS.ADC_FIFO_ALMOST_FULL"]
AuxAdcFifoAlmostFull = 113,
#[doc = "112: AUX ADC done, corresponds to AUX_EVCTL:EVTOMCUFLAGS.ADC_DONE"]
AuxAdcDone = 112,
#[doc = "111: Autotake event from AUX semaphore, configured by AUX_SMPH:AUTOTAKE"]
AuxSmphAutotakeDone = 111,
#[doc = "110: AUX timer 1 event, corresponds to AUX_EVCTL:EVTOMCUFLAGS.TIMER1_EV"]
AuxTimer1Ev = 110,
#[doc = "109: AUX timer 0 event, corresponds to AUX_EVCTL:EVTOMCUFLAGS.TIMER0_EV"]
AuxTimer0Ev = 109,
#[doc = "108: AUX TDC measurement done event, corresponds to the flag AUX_EVCTL:EVTOMCUFLAGS.TDC_DONE and the AUX_TDC status AUX_TDC:STAT.DONE"]
AuxTdcDone = 108,
#[doc = "107: AUX Compare B event, corresponds to AUX_EVCTL:EVTOMCUFLAGS.AUX_COMPB"]
AuxCompb = 107,
#[doc = "105: AON wakeup event, corresponds flags are here AUX_EVCTL:EVTOMCUFLAGS.AON_WU_EV"]
AuxAonWuEv = 105,
#[doc = "94: CRYPTO DMA input done event, the correspondingg flag is CRYPTO:IRQSTAT.DMA_IN_DONE. Controlled by CRYPTO:IRQEN.DMA_IN_DONE"]
CryptoDmaDoneIrq = 94,
#[doc = "22: DMA done for software tiggered UDMA channel 18, see UDMA0:SOFTREQ"]
DmaCh18Done = 22,
#[doc = "20: DMA done for software tiggered UDMA channel 0, see UDMA0:SOFTREQ"]
DmaCh0Done = 20,
#[doc = "10: AUX Software event 0, AUX_EVCTL:SWEVSET.SWEV0"]
AonAuxSwev0 = 10,
#[doc = "8: Interrupt event from I2S"]
I2sIrq = 8,
#[doc = "3: AON programmable event 2. Event selected by AON_EVENT MCU event selector, AON_EVENT:EVTOMCUSEL.AON_PROG2_EV"]
AonProg2 = 3,
#[doc = "2: AON programmable event 1. Event selected by AON_EVENT MCU event selector, AON_EVENT:EVTOMCUSEL.AON_PROG1_EV"]
AonProg1 = 2,
#[doc = "0: Always inactive"]
None = 0,
}
impl From<Ev> for u8 {
#[inline(always)]
fn from(variant: Ev) -> Self {
variant as _
}
}
impl crate::FieldSpec for Ev {
type Ux = u8;
}
impl crate::IsEnum for Ev {}
#[doc = "Field `EV` reader - 6:0\\]
Read/write selection value Writing any other value than values defined by a ENUM may result in undefined behavior."]
pub type EvR = crate::FieldReader<Ev>;
impl EvR {
#[doc = "Get enumerated values variant"]
#[inline(always)]
pub const fn variant(&self) -> Option<Ev> {
match self.bits {
121 => Some(Ev::AlwaysActive),
119 => Some(Ev::AonRtcUpd),
114 => Some(Ev::AuxObsmux0),
113 => Some(Ev::AuxAdcFifoAlmostFull),
112 => Some(Ev::AuxAdcDone),
111 => Some(Ev::AuxSmphAutotakeDone),
110 => Some(Ev::AuxTimer1Ev),
109 => Some(Ev::AuxTimer0Ev),
108 => Some(Ev::AuxTdcDone),
107 => Some(Ev::AuxCompb),
105 => Some(Ev::AuxAonWuEv),
94 => Some(Ev::CryptoDmaDoneIrq),
22 => Some(Ev::DmaCh18Done),
20 => Some(Ev::DmaCh0Done),
10 => Some(Ev::AonAuxSwev0),
8 => Some(Ev::I2sIrq),
3 => Some(Ev::AonProg2),
2 => Some(Ev::AonProg1),
0 => Some(Ev::None),
_ => None,
}
}
#[doc = "Always asserted"]
#[inline(always)]
pub fn is_always_active(&self) -> bool {
*self == Ev::AlwaysActive
}
#[doc = "RTC periodic event controlled by AON_RTC:CTL.RTC_UPD_EN"]
#[inline(always)]
pub fn is_aon_rtc_upd(&self) -> bool {
*self == Ev::AonRtcUpd
}
#[doc = "Loopback of OBSMUX0 through AUX, corresponds to AUX_EVCTL:EVTOMCUFLAGS.OBSMUX0"]
#[inline(always)]
pub fn is_aux_obsmux0(&self) -> bool {
*self == Ev::AuxObsmux0
}
#[doc = "AUX ADC FIFO watermark event, corresponds to AUX_EVCTL:EVTOMCUFLAGS.ADC_FIFO_ALMOST_FULL"]
#[inline(always)]
pub fn is_aux_adc_fifo_almost_full(&self) -> bool {
*self == Ev::AuxAdcFifoAlmostFull
}
#[doc = "AUX ADC done, corresponds to AUX_EVCTL:EVTOMCUFLAGS.ADC_DONE"]
#[inline(always)]
pub fn is_aux_adc_done(&self) -> bool {
*self == Ev::AuxAdcDone
}
#[doc = "Autotake event from AUX semaphore, configured by AUX_SMPH:AUTOTAKE"]
#[inline(always)]
pub fn is_aux_smph_autotake_done(&self) -> bool {
*self == Ev::AuxSmphAutotakeDone
}
#[doc = "AUX timer 1 event, corresponds to AUX_EVCTL:EVTOMCUFLAGS.TIMER1_EV"]
#[inline(always)]
pub fn is_aux_timer1_ev(&self) -> bool {
*self == Ev::AuxTimer1Ev
}
#[doc = "AUX timer 0 event, corresponds to AUX_EVCTL:EVTOMCUFLAGS.TIMER0_EV"]
#[inline(always)]
pub fn is_aux_timer0_ev(&self) -> bool {
*self == Ev::AuxTimer0Ev
}
#[doc = "AUX TDC measurement done event, corresponds to the flag AUX_EVCTL:EVTOMCUFLAGS.TDC_DONE and the AUX_TDC status AUX_TDC:STAT.DONE"]
#[inline(always)]
pub fn is_aux_tdc_done(&self) -> bool {
*self == Ev::AuxTdcDone
}
#[doc = "AUX Compare B event, corresponds to AUX_EVCTL:EVTOMCUFLAGS.AUX_COMPB"]
#[inline(always)]
pub fn is_aux_compb(&self) -> bool {
*self == Ev::AuxCompb
}
#[doc = "AON wakeup event, corresponds flags are here AUX_EVCTL:EVTOMCUFLAGS.AON_WU_EV"]
#[inline(always)]
pub fn is_aux_aon_wu_ev(&self) -> bool {
*self == Ev::AuxAonWuEv
}
#[doc = "CRYPTO DMA input done event, the correspondingg flag is CRYPTO:IRQSTAT.DMA_IN_DONE. Controlled by CRYPTO:IRQEN.DMA_IN_DONE"]
#[inline(always)]
pub fn is_crypto_dma_done_irq(&self) -> bool {
*self == Ev::CryptoDmaDoneIrq
}
#[doc = "DMA done for software tiggered UDMA channel 18, see UDMA0:SOFTREQ"]
#[inline(always)]
pub fn is_dma_ch18_done(&self) -> bool {
*self == Ev::DmaCh18Done
}
#[doc = "DMA done for software tiggered UDMA channel 0, see UDMA0:SOFTREQ"]
#[inline(always)]
pub fn is_dma_ch0_done(&self) -> bool {
*self == Ev::DmaCh0Done
}
#[doc = "AUX Software event 0, AUX_EVCTL:SWEVSET.SWEV0"]
#[inline(always)]
pub fn is_aon_aux_swev0(&self) -> bool {
*self == Ev::AonAuxSwev0
}
#[doc = "Interrupt event from I2S"]
#[inline(always)]
pub fn is_i2s_irq(&self) -> bool {
*self == Ev::I2sIrq
}
#[doc = "AON programmable event 2. Event selected by AON_EVENT MCU event selector, AON_EVENT:EVTOMCUSEL.AON_PROG2_EV"]
#[inline(always)]
pub fn is_aon_prog2(&self) -> bool {
*self == Ev::AonProg2
}
#[doc = "AON programmable event 1. Event selected by AON_EVENT MCU event selector, AON_EVENT:EVTOMCUSEL.AON_PROG1_EV"]
#[inline(always)]
pub fn is_aon_prog1(&self) -> bool {
*self == Ev::AonProg1
}
#[doc = "Always inactive"]
#[inline(always)]
pub fn is_none(&self) -> bool {
*self == Ev::None
}
}
#[doc = "Field `EV` writer - 6:0\\]
Read/write selection value Writing any other value than values defined by a ENUM may result in undefined behavior."]
pub type EvW<'a, REG> = crate::FieldWriter<'a, REG, 7, Ev>;
impl<'a, REG> EvW<'a, REG>
where
REG: crate::Writable + crate::RegisterSpec,
REG::Ux: From<u8>,
{
#[doc = "Always asserted"]
#[inline(always)]
pub fn always_active(self) -> &'a mut crate::W<REG> {
self.variant(Ev::AlwaysActive)
}
#[doc = "RTC periodic event controlled by AON_RTC:CTL.RTC_UPD_EN"]
#[inline(always)]
pub fn aon_rtc_upd(self) -> &'a mut crate::W<REG> {
self.variant(Ev::AonRtcUpd)
}
#[doc = "Loopback of OBSMUX0 through AUX, corresponds to AUX_EVCTL:EVTOMCUFLAGS.OBSMUX0"]
#[inline(always)]
pub fn aux_obsmux0(self) -> &'a mut crate::W<REG> {
self.variant(Ev::AuxObsmux0)
}
#[doc = "AUX ADC FIFO watermark event, corresponds to AUX_EVCTL:EVTOMCUFLAGS.ADC_FIFO_ALMOST_FULL"]
#[inline(always)]
pub fn aux_adc_fifo_almost_full(self) -> &'a mut crate::W<REG> {
self.variant(Ev::AuxAdcFifoAlmostFull)
}
#[doc = "AUX ADC done, corresponds to AUX_EVCTL:EVTOMCUFLAGS.ADC_DONE"]
#[inline(always)]
pub fn aux_adc_done(self) -> &'a mut crate::W<REG> {
self.variant(Ev::AuxAdcDone)
}
#[doc = "Autotake event from AUX semaphore, configured by AUX_SMPH:AUTOTAKE"]
#[inline(always)]
pub fn aux_smph_autotake_done(self) -> &'a mut crate::W<REG> {
self.variant(Ev::AuxSmphAutotakeDone)
}
#[doc = "AUX timer 1 event, corresponds to AUX_EVCTL:EVTOMCUFLAGS.TIMER1_EV"]
#[inline(always)]
pub fn aux_timer1_ev(self) -> &'a mut crate::W<REG> {
self.variant(Ev::AuxTimer1Ev)
}
#[doc = "AUX timer 0 event, corresponds to AUX_EVCTL:EVTOMCUFLAGS.TIMER0_EV"]
#[inline(always)]
pub fn aux_timer0_ev(self) -> &'a mut crate::W<REG> {
self.variant(Ev::AuxTimer0Ev)
}
#[doc = "AUX TDC measurement done event, corresponds to the flag AUX_EVCTL:EVTOMCUFLAGS.TDC_DONE and the AUX_TDC status AUX_TDC:STAT.DONE"]
#[inline(always)]
pub fn aux_tdc_done(self) -> &'a mut crate::W<REG> {
self.variant(Ev::AuxTdcDone)
}
#[doc = "AUX Compare B event, corresponds to AUX_EVCTL:EVTOMCUFLAGS.AUX_COMPB"]
#[inline(always)]
pub fn aux_compb(self) -> &'a mut crate::W<REG> {
self.variant(Ev::AuxCompb)
}
#[doc = "AON wakeup event, corresponds flags are here AUX_EVCTL:EVTOMCUFLAGS.AON_WU_EV"]
#[inline(always)]
pub fn aux_aon_wu_ev(self) -> &'a mut crate::W<REG> {
self.variant(Ev::AuxAonWuEv)
}
#[doc = "CRYPTO DMA input done event, the correspondingg flag is CRYPTO:IRQSTAT.DMA_IN_DONE. Controlled by CRYPTO:IRQEN.DMA_IN_DONE"]
#[inline(always)]
pub fn crypto_dma_done_irq(self) -> &'a mut crate::W<REG> {
self.variant(Ev::CryptoDmaDoneIrq)
}
#[doc = "DMA done for software tiggered UDMA channel 18, see UDMA0:SOFTREQ"]
#[inline(always)]
pub fn dma_ch18_done(self) -> &'a mut crate::W<REG> {
self.variant(Ev::DmaCh18Done)
}
#[doc = "DMA done for software tiggered UDMA channel 0, see UDMA0:SOFTREQ"]
#[inline(always)]
pub fn dma_ch0_done(self) -> &'a mut crate::W<REG> {
self.variant(Ev::DmaCh0Done)
}
#[doc = "AUX Software event 0, AUX_EVCTL:SWEVSET.SWEV0"]
#[inline(always)]
pub fn aon_aux_swev0(self) -> &'a mut crate::W<REG> {
self.variant(Ev::AonAuxSwev0)
}
#[doc = "Interrupt event from I2S"]
#[inline(always)]
pub fn i2s_irq(self) -> &'a mut crate::W<REG> {
self.variant(Ev::I2sIrq)
}
#[doc = "AON programmable event 2. Event selected by AON_EVENT MCU event selector, AON_EVENT:EVTOMCUSEL.AON_PROG2_EV"]
#[inline(always)]
pub fn aon_prog2(self) -> &'a mut crate::W<REG> {
self.variant(Ev::AonProg2)
}
#[doc = "AON programmable event 1. Event selected by AON_EVENT MCU event selector, AON_EVENT:EVTOMCUSEL.AON_PROG1_EV"]
#[inline(always)]
pub fn aon_prog1(self) -> &'a mut crate::W<REG> {
self.variant(Ev::AonProg1)
}
#[doc = "Always inactive"]
#[inline(always)]
pub fn none(self) -> &'a mut crate::W<REG> {
self.variant(Ev::None)
}
}
impl R {
#[doc = "Bits 0:6 - 6:0\\]
Read/write selection value Writing any other value than values defined by a ENUM may result in undefined behavior."]
#[inline(always)]
pub fn ev(&self) -> EvR {
EvR::new((self.bits & 0x7f) as u8)
}
}
impl W {
#[doc = "Bits 0:6 - 6:0\\]
Read/write selection value Writing any other value than values defined by a ENUM may result in undefined behavior."]
#[inline(always)]
#[must_use]
pub fn ev(&mut self) -> EvW<Cpuirqsel30Spec> {
EvW::new(self, 0)
}
}
#[doc = "Output Selection for CPU Interrupt 30\n\nYou can [`read`](crate::generic::Reg::read) this register and get [`cpuirqsel30::R`](R). You can [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`write_with_zero`](crate::generic::Reg::write_with_zero) this register using [`cpuirqsel30::W`](W). You can also [`modify`](crate::generic::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api)."]
pub struct Cpuirqsel30Spec;
impl crate::RegisterSpec for Cpuirqsel30Spec {
type Ux = u32;
}
#[doc = "`read()` method returns [`cpuirqsel30::R`](R) reader structure"]
impl crate::Readable for Cpuirqsel30Spec {}
#[doc = "`write(|w| ..)` method takes [`cpuirqsel30::W`](W) writer structure"]
impl crate::Writable for Cpuirqsel30Spec {
type Safety = crate::Unsafe;
const ZERO_TO_MODIFY_FIELDS_BITMAP: u32 = 0;
const ONE_TO_MODIFY_FIELDS_BITMAP: u32 = 0;
}
#[doc = "`reset()` method sets CPUIRQSEL30 to value 0"]
impl crate::Resettable for Cpuirqsel30Spec {
const RESET_VALUE: u32 = 0;
}