#![allow(non_snake_case, non_upper_case_globals)]
#![allow(non_camel_case_types)]
use crate::{RORegister, RWRegister, WORegister};
#[cfg(not(feature = "nosync"))]
use core::marker::PhantomData;
pub mod SAI_GCR {
pub mod SYNCIN {
pub const offset: u32 = 0;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SYNCOUT {
pub const offset: u32 = 4;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SAI_ACR1 {
pub mod MODE {
pub const offset: u32 = 0;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PRTCFG {
pub const offset: u32 = 2;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DS {
pub const offset: u32 = 5;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod LSBFIRST {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CKSTR {
pub const offset: u32 = 9;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SYNCEN {
pub const offset: u32 = 10;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MONO {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OUTDRIV {
pub const offset: u32 = 13;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SAIEN {
pub const offset: u32 = 16;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DMAEN {
pub const offset: u32 = 17;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod NODIV {
pub const offset: u32 = 19;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MCKDIV {
pub const offset: u32 = 20;
pub const mask: u32 = 0x3f << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OSR {
pub const offset: u32 = 26;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MCKEN {
pub const offset: u32 = 27;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SAI_ACR2 {
pub mod FTH {
pub const offset: u32 = 0;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod FFLUSH {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TRIS {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MUTE {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MUTEVAL {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MUTECNT {
pub const offset: u32 = 7;
pub const mask: u32 = 0x3f << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CPL {
pub const offset: u32 = 13;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod COMP {
pub const offset: u32 = 14;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SAI_AFRCR {
pub mod FRL {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod FSALL {
pub const offset: u32 = 8;
pub const mask: u32 = 0x7f << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod FSDEF {
pub const offset: u32 = 16;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod FSPOL {
pub const offset: u32 = 17;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod FSOFF {
pub const offset: u32 = 18;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SAI_ASLOTR {
pub mod FBOFF {
pub const offset: u32 = 0;
pub const mask: u32 = 0b11111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SLOTSZ {
pub const offset: u32 = 6;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod NBSLOT {
pub const offset: u32 = 8;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SLOTEN {
pub const offset: u32 = 16;
pub const mask: u32 = 0xffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SAI_AIM {
pub mod OVRUDRIE {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MUTEDETIE {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod WCKCFGIE {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod FREQIE {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CNRDYIE {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod AFSDETIE {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod LFSDETIE {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SAI_ASR {
pub mod OVRUDR {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MUTEDET {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod WCKCFG {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod FREQ {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CNRDY {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod AFSDET {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod LFSDET {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod FLVL {
pub const offset: u32 = 16;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SAI_ACLRFR {
pub mod COVRUDR {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CMUTEDET {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CWCKCFG {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CCNRDY {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CAFSDET {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CLFSDET {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SAI_ADR {
pub mod DATA {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SAI_BCR1 {
pub use super::SAI_ACR1::CKSTR;
pub use super::SAI_ACR1::DMAEN;
pub use super::SAI_ACR1::DS;
pub use super::SAI_ACR1::LSBFIRST;
pub use super::SAI_ACR1::MCKDIV;
pub use super::SAI_ACR1::MCKEN;
pub use super::SAI_ACR1::MODE;
pub use super::SAI_ACR1::MONO;
pub use super::SAI_ACR1::NODIV;
pub use super::SAI_ACR1::OSR;
pub use super::SAI_ACR1::OUTDRIV;
pub use super::SAI_ACR1::PRTCFG;
pub use super::SAI_ACR1::SAIEN;
pub use super::SAI_ACR1::SYNCEN;
}
pub mod SAI_BCR2 {
pub use super::SAI_ACR2::COMP;
pub use super::SAI_ACR2::CPL;
pub use super::SAI_ACR2::FFLUSH;
pub use super::SAI_ACR2::FTH;
pub use super::SAI_ACR2::MUTE;
pub use super::SAI_ACR2::MUTECNT;
pub use super::SAI_ACR2::MUTEVAL;
pub use super::SAI_ACR2::TRIS;
}
pub mod SAI_BFRCR {
pub use super::SAI_AFRCR::FRL;
pub use super::SAI_AFRCR::FSALL;
pub use super::SAI_AFRCR::FSDEF;
pub use super::SAI_AFRCR::FSOFF;
pub use super::SAI_AFRCR::FSPOL;
}
pub mod SAI_BSLOTR {
pub use super::SAI_ASLOTR::FBOFF;
pub use super::SAI_ASLOTR::NBSLOT;
pub use super::SAI_ASLOTR::SLOTEN;
pub use super::SAI_ASLOTR::SLOTSZ;
}
pub mod SAI_BIM {
pub use super::SAI_AIM::AFSDETIE;
pub use super::SAI_AIM::CNRDYIE;
pub use super::SAI_AIM::FREQIE;
pub use super::SAI_AIM::LFSDETIE;
pub use super::SAI_AIM::MUTEDETIE;
pub use super::SAI_AIM::OVRUDRIE;
pub use super::SAI_AIM::WCKCFGIE;
}
pub mod SAI_BSR {
pub use super::SAI_ASR::AFSDET;
pub use super::SAI_ASR::CNRDY;
pub use super::SAI_ASR::FLVL;
pub use super::SAI_ASR::FREQ;
pub use super::SAI_ASR::LFSDET;
pub use super::SAI_ASR::MUTEDET;
pub use super::SAI_ASR::OVRUDR;
pub use super::SAI_ASR::WCKCFG;
}
pub mod SAI_BCLRFR {
pub use super::SAI_ACLRFR::CAFSDET;
pub use super::SAI_ACLRFR::CCNRDY;
pub use super::SAI_ACLRFR::CLFSDET;
pub use super::SAI_ACLRFR::CMUTEDET;
pub use super::SAI_ACLRFR::COVRUDR;
pub use super::SAI_ACLRFR::CWCKCFG;
}
pub mod SAI_BDR {
pub use super::SAI_ADR::DATA;
}
pub mod SAI_PDMCR {
pub mod PDMEN {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MICNBR {
pub const offset: u32 = 4;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CKEN1 {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CKEN2 {
pub const offset: u32 = 9;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CKEN3 {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CKEN4 {
pub const offset: u32 = 11;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SAI_PDMDLY {
pub mod DLYM1L {
pub const offset: u32 = 0;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DLYM1R {
pub const offset: u32 = 4;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DLYM2L {
pub const offset: u32 = 8;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DLYM2R {
pub const offset: u32 = 12;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DLYM3L {
pub const offset: u32 = 16;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DLYM3R {
pub const offset: u32 = 20;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DLYM4L {
pub const offset: u32 = 24;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DLYM4R {
pub const offset: u32 = 28;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SAI_HWCFGR {
pub mod FIFO_SIZE {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SPDIF_PDM {
pub const offset: u32 = 8;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OPTION_REGOUT {
pub const offset: u32 = 12;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SAI_VERR {
pub mod MINREV {
pub const offset: u32 = 0;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MAJREV {
pub const offset: u32 = 4;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SAI_IPIDR {
pub mod ID {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SAI_SIDR {
pub mod SID {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
#[repr(C)]
pub struct RegisterBlock {
pub SAI_GCR: RWRegister<u32>,
pub SAI_ACR1: RWRegister<u32>,
pub SAI_ACR2: RWRegister<u32>,
pub SAI_AFRCR: RWRegister<u32>,
pub SAI_ASLOTR: RWRegister<u32>,
pub SAI_AIM: RWRegister<u32>,
pub SAI_ASR: RORegister<u32>,
pub SAI_ACLRFR: WORegister<u32>,
pub SAI_ADR: RWRegister<u32>,
pub SAI_BCR1: RWRegister<u32>,
pub SAI_BCR2: RWRegister<u32>,
pub SAI_BFRCR: RWRegister<u32>,
pub SAI_BSLOTR: RWRegister<u32>,
pub SAI_BIM: RWRegister<u32>,
pub SAI_BSR: RORegister<u32>,
pub SAI_BCLRFR: WORegister<u32>,
pub SAI_BDR: RWRegister<u32>,
pub SAI_PDMCR: RWRegister<u32>,
pub SAI_PDMDLY: RWRegister<u32>,
_reserved1: [u32; 233],
pub SAI_HWCFGR: RORegister<u32>,
pub SAI_VERR: RORegister<u32>,
pub SAI_IPIDR: RORegister<u32>,
pub SAI_SIDR: RORegister<u32>,
}
pub struct ResetValues {
pub SAI_GCR: u32,
pub SAI_ACR1: u32,
pub SAI_ACR2: u32,
pub SAI_AFRCR: u32,
pub SAI_ASLOTR: u32,
pub SAI_AIM: u32,
pub SAI_ASR: u32,
pub SAI_ACLRFR: u32,
pub SAI_ADR: u32,
pub SAI_BCR1: u32,
pub SAI_BCR2: u32,
pub SAI_BFRCR: u32,
pub SAI_BSLOTR: u32,
pub SAI_BIM: u32,
pub SAI_BSR: u32,
pub SAI_BCLRFR: u32,
pub SAI_BDR: u32,
pub SAI_PDMCR: u32,
pub SAI_PDMDLY: u32,
pub SAI_HWCFGR: u32,
pub SAI_VERR: u32,
pub SAI_IPIDR: u32,
pub SAI_SIDR: u32,
}
#[cfg(not(feature = "nosync"))]
pub struct Instance {
pub(crate) addr: u32,
pub(crate) _marker: PhantomData<*const RegisterBlock>,
}
#[cfg(not(feature = "nosync"))]
impl ::core::ops::Deref for Instance {
type Target = RegisterBlock;
#[inline(always)]
fn deref(&self) -> &RegisterBlock {
unsafe { &*(self.addr as *const _) }
}
}
#[cfg(feature = "rtic")]
unsafe impl Send for Instance {}
pub mod SAI1 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x4400a000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
SAI_GCR: 0x00000000,
SAI_ACR1: 0x00000040,
SAI_ACR2: 0x00000000,
SAI_AFRCR: 0x00000007,
SAI_ASLOTR: 0x00000000,
SAI_AIM: 0x00000000,
SAI_ASR: 0x00000008,
SAI_ACLRFR: 0x00000000,
SAI_ADR: 0x00000000,
SAI_BCR1: 0x00000040,
SAI_BCR2: 0x00000000,
SAI_BFRCR: 0x00000007,
SAI_BSLOTR: 0x00000000,
SAI_BIM: 0x00000000,
SAI_BSR: 0x00000008,
SAI_BCLRFR: 0x00000000,
SAI_BDR: 0x00000000,
SAI_PDMCR: 0x00000000,
SAI_PDMDLY: 0x00000000,
SAI_HWCFGR: 0x00000108,
SAI_VERR: 0x00000021,
SAI_IPIDR: 0x00130031,
SAI_SIDR: 0xA3C5DD01,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut SAI1_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if SAI1_TAKEN {
None
} else {
SAI1_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if SAI1_TAKEN && inst.addr == INSTANCE.addr {
SAI1_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
SAI1_TAKEN = true;
INSTANCE
}
}
pub const SAI1: *const RegisterBlock = 0x4400a000 as *const _;
pub mod SAI2 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x4400b000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
SAI_GCR: 0x00000000,
SAI_ACR1: 0x00000040,
SAI_ACR2: 0x00000000,
SAI_AFRCR: 0x00000007,
SAI_ASLOTR: 0x00000000,
SAI_AIM: 0x00000000,
SAI_ASR: 0x00000008,
SAI_ACLRFR: 0x00000000,
SAI_ADR: 0x00000000,
SAI_BCR1: 0x00000040,
SAI_BCR2: 0x00000000,
SAI_BFRCR: 0x00000007,
SAI_BSLOTR: 0x00000000,
SAI_BIM: 0x00000000,
SAI_BSR: 0x00000008,
SAI_BCLRFR: 0x00000000,
SAI_BDR: 0x00000000,
SAI_PDMCR: 0x00000000,
SAI_PDMDLY: 0x00000000,
SAI_HWCFGR: 0x00000108,
SAI_VERR: 0x00000021,
SAI_IPIDR: 0x00130031,
SAI_SIDR: 0xA3C5DD01,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut SAI2_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if SAI2_TAKEN {
None
} else {
SAI2_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if SAI2_TAKEN && inst.addr == INSTANCE.addr {
SAI2_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
SAI2_TAKEN = true;
INSTANCE
}
}
pub const SAI2: *const RegisterBlock = 0x4400b000 as *const _;
pub mod SAI3 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x4400c000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
SAI_GCR: 0x00000000,
SAI_ACR1: 0x00000040,
SAI_ACR2: 0x00000000,
SAI_AFRCR: 0x00000007,
SAI_ASLOTR: 0x00000000,
SAI_AIM: 0x00000000,
SAI_ASR: 0x00000008,
SAI_ACLRFR: 0x00000000,
SAI_ADR: 0x00000000,
SAI_BCR1: 0x00000040,
SAI_BCR2: 0x00000000,
SAI_BFRCR: 0x00000007,
SAI_BSLOTR: 0x00000000,
SAI_BIM: 0x00000000,
SAI_BSR: 0x00000008,
SAI_BCLRFR: 0x00000000,
SAI_BDR: 0x00000000,
SAI_PDMCR: 0x00000000,
SAI_PDMDLY: 0x00000000,
SAI_HWCFGR: 0x00000108,
SAI_VERR: 0x00000021,
SAI_IPIDR: 0x00130031,
SAI_SIDR: 0xA3C5DD01,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut SAI3_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if SAI3_TAKEN {
None
} else {
SAI3_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if SAI3_TAKEN && inst.addr == INSTANCE.addr {
SAI3_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
SAI3_TAKEN = true;
INSTANCE
}
}
pub const SAI3: *const RegisterBlock = 0x4400c000 as *const _;
pub mod SAI4 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x50027000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
SAI_GCR: 0x00000000,
SAI_ACR1: 0x00000040,
SAI_ACR2: 0x00000000,
SAI_AFRCR: 0x00000007,
SAI_ASLOTR: 0x00000000,
SAI_AIM: 0x00000000,
SAI_ASR: 0x00000008,
SAI_ACLRFR: 0x00000000,
SAI_ADR: 0x00000000,
SAI_BCR1: 0x00000040,
SAI_BCR2: 0x00000000,
SAI_BFRCR: 0x00000007,
SAI_BSLOTR: 0x00000000,
SAI_BIM: 0x00000000,
SAI_BSR: 0x00000008,
SAI_BCLRFR: 0x00000000,
SAI_BDR: 0x00000000,
SAI_PDMCR: 0x00000000,
SAI_PDMDLY: 0x00000000,
SAI_HWCFGR: 0x00000108,
SAI_VERR: 0x00000021,
SAI_IPIDR: 0x00130031,
SAI_SIDR: 0xA3C5DD01,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut SAI4_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if SAI4_TAKEN {
None
} else {
SAI4_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if SAI4_TAKEN && inst.addr == INSTANCE.addr {
SAI4_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
SAI4_TAKEN = true;
INSTANCE
}
}
pub const SAI4: *const RegisterBlock = 0x50027000 as *const _;