#![allow(non_snake_case, non_upper_case_globals)]
#![allow(non_camel_case_types)]
use crate::{RORegister, RWRegister};
#[cfg(not(feature = "nosync"))]
use core::marker::PhantomData;
pub mod CTRL {
pub mod CHANNEL_INTERRUPT_ENABLE {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const CH0: u32 = 0b00000001;
pub const CH1: u32 = 0b00000010;
pub const CH2: u32 = 0b00000100;
pub const CH3: u32 = 0b00001000;
}
}
pub mod ENABLE_CONTEXT_SWITCHING {
pub const offset: u32 = 21;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ENABLE_CONTEXT_CACHING {
pub const offset: u32 = 22;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod GATHER_RESIDUAL_WRITES {
pub const offset: u32 = 23;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PRESENT_SHA {
pub const offset: u32 = 28;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Absent: u32 = 0b0;
pub const Present: u32 = 0b1;
}
}
pub mod PRESENT_CRYPTO {
pub const offset: u32 = 29;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub use super::PRESENT_SHA::RW;
}
pub mod CLKGATE {
pub const offset: u32 = 30;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SFTRST {
pub const offset: u32 = 31;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod CTRL_SET {
pub use super::CTRL::CHANNEL_INTERRUPT_ENABLE;
pub use super::CTRL::CLKGATE;
pub use super::CTRL::ENABLE_CONTEXT_CACHING;
pub use super::CTRL::ENABLE_CONTEXT_SWITCHING;
pub use super::CTRL::GATHER_RESIDUAL_WRITES;
pub use super::CTRL::PRESENT_CRYPTO;
pub use super::CTRL::PRESENT_SHA;
pub use super::CTRL::SFTRST;
}
pub mod CTRL_CLR {
pub use super::CTRL::CHANNEL_INTERRUPT_ENABLE;
pub use super::CTRL::CLKGATE;
pub use super::CTRL::ENABLE_CONTEXT_CACHING;
pub use super::CTRL::ENABLE_CONTEXT_SWITCHING;
pub use super::CTRL::GATHER_RESIDUAL_WRITES;
pub use super::CTRL::PRESENT_CRYPTO;
pub use super::CTRL::PRESENT_SHA;
pub use super::CTRL::SFTRST;
}
pub mod CTRL_TOG {
pub use super::CTRL::CHANNEL_INTERRUPT_ENABLE;
pub use super::CTRL::CLKGATE;
pub use super::CTRL::ENABLE_CONTEXT_CACHING;
pub use super::CTRL::ENABLE_CONTEXT_SWITCHING;
pub use super::CTRL::GATHER_RESIDUAL_WRITES;
pub use super::CTRL::PRESENT_CRYPTO;
pub use super::CTRL::PRESENT_SHA;
pub use super::CTRL::SFTRST;
}
pub mod STAT {
pub mod IRQ {
pub const offset: u32 = 0;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod READY_CHANNELS {
pub const offset: u32 = 16;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const CH0: u32 = 0b00000001;
pub const CH1: u32 = 0b00000010;
pub const CH2: u32 = 0b00000100;
pub const CH3: u32 = 0b00001000;
}
}
pub mod CUR_CHANNEL {
pub const offset: u32 = 24;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const None: u32 = 0b0000;
pub const CH0: u32 = 0b0001;
pub const CH1: u32 = 0b0010;
pub const CH2: u32 = 0b0011;
pub const CH3: u32 = 0b0100;
}
}
pub mod OTP_KEY_READY {
pub const offset: u32 = 28;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod STAT_SET {
pub use super::STAT::CUR_CHANNEL;
pub use super::STAT::IRQ;
pub use super::STAT::OTP_KEY_READY;
pub use super::STAT::READY_CHANNELS;
}
pub mod STAT_CLR {
pub use super::STAT::CUR_CHANNEL;
pub use super::STAT::IRQ;
pub use super::STAT::OTP_KEY_READY;
pub use super::STAT::READY_CHANNELS;
}
pub mod STAT_TOG {
pub use super::STAT::CUR_CHANNEL;
pub use super::STAT::IRQ;
pub use super::STAT::OTP_KEY_READY;
pub use super::STAT::READY_CHANNELS;
}
pub mod CHANNELCTRL {
pub mod ENABLE_CHANNEL {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const CH0: u32 = 0b00000001;
pub const CH1: u32 = 0b00000010;
pub const CH2: u32 = 0b00000100;
pub const CH3: u32 = 0b00001000;
}
}
pub mod HIGH_PRIORITY_CHANNEL {
pub const offset: u32 = 8;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub use super::ENABLE_CHANNEL::RW;
}
pub mod CH0_IRQ_MERGED {
pub const offset: u32 = 16;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod CHANNELCTRL_SET {
pub use super::CHANNELCTRL::CH0_IRQ_MERGED;
pub use super::CHANNELCTRL::ENABLE_CHANNEL;
pub use super::CHANNELCTRL::HIGH_PRIORITY_CHANNEL;
}
pub mod CHANNELCTRL_CLR {
pub use super::CHANNELCTRL::CH0_IRQ_MERGED;
pub use super::CHANNELCTRL::ENABLE_CHANNEL;
pub use super::CHANNELCTRL::HIGH_PRIORITY_CHANNEL;
}
pub mod CHANNELCTRL_TOG {
pub use super::CHANNELCTRL::CH0_IRQ_MERGED;
pub use super::CHANNELCTRL::ENABLE_CHANNEL;
pub use super::CHANNELCTRL::HIGH_PRIORITY_CHANNEL;
}
pub mod CAPABILITY0 {
pub mod NUM_KEYS {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod NUM_CHANNELS {
pub const offset: u32 = 8;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DISABLE_UNIQUE_KEY {
pub const offset: u32 = 29;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DISABLE_DECRYPT {
pub const offset: u32 = 31;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod CAPABILITY1 {
pub mod CIPHER_ALGORITHMS {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const AES128: u32 = 0b0000000000000001;
}
}
pub mod HASH_ALGORITHMS {
pub const offset: u32 = 16;
pub const mask: u32 = 0xffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const SHA1: u32 = 0b0000000000000001;
pub const CRC32: u32 = 0b0000000000000010;
pub const SHA256: u32 = 0b0000000000000100;
}
}
}
pub mod CONTEXT {
pub mod ADDR {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod KEY {
pub mod SUBWORD {
pub const offset: u32 = 0;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod INDEX {
pub const offset: u32 = 4;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod KEYDATA {
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 PACKET0 {
pub mod ADDR {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod PACKET1 {
pub mod INTERRUPT {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DECR_SEMAPHORE {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CHAIN {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CHAIN_CONTIGUOUS {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ENABLE_MEMCOPY {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ENABLE_CIPHER {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ENABLE_HASH {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ENABLE_BLIT {
pub const offset: u32 = 7;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CIPHER_ENCRYPT {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const DECRYPT: u32 = 0b0;
pub const ENCRYPT: u32 = 0b1;
}
}
pub mod CIPHER_INIT {
pub const offset: u32 = 9;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OTP_KEY {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PAYLOAD_KEY {
pub const offset: u32 = 11;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod HASH_INIT {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod HASH_TERM {
pub const offset: u32 = 13;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CHECK_HASH {
pub const offset: u32 = 14;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod HASH_OUTPUT {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const INPUT: u32 = 0b0;
pub const OUTPUT: u32 = 0b1;
}
}
pub mod CONSTANT_FILL {
pub const offset: u32 = 16;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TEST_SEMA_IRQ {
pub const offset: u32 = 17;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod KEY_BYTESWAP {
pub const offset: u32 = 18;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod KEY_WORDSWAP {
pub const offset: u32 = 19;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod INPUT_BYTESWAP {
pub const offset: u32 = 20;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod INPUT_WORDSWAP {
pub const offset: u32 = 21;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OUTPUT_BYTESWAP {
pub const offset: u32 = 22;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OUTPUT_WORDSWAP {
pub const offset: u32 = 23;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TAG {
pub const offset: u32 = 24;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod PACKET2 {
pub mod CIPHER_SELECT {
pub const offset: u32 = 0;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const AES128: u32 = 0b0000;
}
}
pub mod CIPHER_MODE {
pub const offset: u32 = 4;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const ECB: u32 = 0b0000;
pub const CBC: u32 = 0b0001;
}
}
pub mod KEY_SELECT {
pub const offset: u32 = 8;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const KEY0: u32 = 0b00000000;
pub const KEY1: u32 = 0b00000001;
pub const KEY2: u32 = 0b00000010;
pub const KEY3: u32 = 0b00000011;
pub const UNIQUE_KEY: u32 = 0b11111110;
pub const OTP_KEY: u32 = 0b11111111;
}
}
pub mod HASH_SELECT {
pub const offset: u32 = 16;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const SHA1: u32 = 0b0000;
pub const CRC32: u32 = 0b0001;
pub const SHA256: u32 = 0b0010;
}
}
pub mod CIPHER_CFG {
pub const offset: u32 = 24;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod PACKET3 {
pub use super::PACKET0::ADDR;
}
pub mod PACKET4 {
pub use super::PACKET0::ADDR;
}
pub mod PACKET5 {
pub mod COUNT {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod PACKET6 {
pub use super::PACKET0::ADDR;
}
pub mod CH0CMDPTR {
pub use super::CONTEXT::ADDR;
}
pub mod CH0SEMA {
pub mod INCREMENT {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod VALUE {
pub const offset: u32 = 16;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod CH0STAT {
pub mod HASH_MISMATCH {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_SETUP {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_PACKET {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_SRC {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_DST {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_PAGEFAULT {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_CODE {
pub const offset: u32 = 16;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NEXT_CHAIN_IS_0: u32 = 0b00000001;
pub const NO_CHAIN: u32 = 0b00000010;
pub const CONTEXT_ERROR: u32 = 0b00000011;
pub const PAYLOAD_ERROR: u32 = 0b00000100;
pub const INVALID_MODE: u32 = 0b00000101;
}
}
pub mod TAG {
pub const offset: u32 = 24;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod CH0STAT_SET {
pub use super::CH0STAT::ERROR_CODE;
pub use super::CH0STAT::ERROR_DST;
pub use super::CH0STAT::ERROR_PACKET;
pub use super::CH0STAT::ERROR_PAGEFAULT;
pub use super::CH0STAT::ERROR_SETUP;
pub use super::CH0STAT::ERROR_SRC;
pub use super::CH0STAT::HASH_MISMATCH;
pub use super::CH0STAT::TAG;
}
pub mod CH0STAT_CLR {
pub use super::CH0STAT::ERROR_CODE;
pub use super::CH0STAT::ERROR_DST;
pub use super::CH0STAT::ERROR_PACKET;
pub use super::CH0STAT::ERROR_PAGEFAULT;
pub use super::CH0STAT::ERROR_SETUP;
pub use super::CH0STAT::ERROR_SRC;
pub use super::CH0STAT::HASH_MISMATCH;
pub use super::CH0STAT::TAG;
}
pub mod CH0STAT_TOG {
pub use super::CH0STAT::ERROR_CODE;
pub use super::CH0STAT::ERROR_DST;
pub use super::CH0STAT::ERROR_PACKET;
pub use super::CH0STAT::ERROR_PAGEFAULT;
pub use super::CH0STAT::ERROR_SETUP;
pub use super::CH0STAT::ERROR_SRC;
pub use super::CH0STAT::HASH_MISMATCH;
pub use super::CH0STAT::TAG;
}
pub mod CH0OPTS {
pub mod RECOVERY_TIMER {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod CH0OPTS_SET {
pub use super::CH0OPTS::RECOVERY_TIMER;
}
pub mod CH0OPTS_CLR {
pub use super::CH0OPTS::RECOVERY_TIMER;
}
pub mod CH0OPTS_TOG {
pub use super::CH0OPTS::RECOVERY_TIMER;
}
pub mod CH1CMDPTR {
pub use super::CONTEXT::ADDR;
}
pub mod CH1SEMA {
pub use super::CH0SEMA::INCREMENT;
pub use super::CH0SEMA::VALUE;
}
pub mod CH1STAT {
pub mod HASH_MISMATCH {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_SETUP {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_PACKET {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_SRC {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_DST {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_PAGEFAULT {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_CODE {
pub const offset: u32 = 16;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NEXT_CHAIN_IS_0: u32 = 0b00000001;
pub const NO_CHAIN: u32 = 0b00000010;
pub const CONTEXT_ERROR: u32 = 0b00000011;
pub const PAYLOAD_ERROR: u32 = 0b00000100;
pub const INVALID_MODE: u32 = 0b00000101;
}
}
pub mod TAG {
pub const offset: u32 = 24;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod CH1STAT_SET {
pub use super::CH1STAT::ERROR_CODE;
pub use super::CH1STAT::ERROR_DST;
pub use super::CH1STAT::ERROR_PACKET;
pub use super::CH1STAT::ERROR_PAGEFAULT;
pub use super::CH1STAT::ERROR_SETUP;
pub use super::CH1STAT::ERROR_SRC;
pub use super::CH1STAT::HASH_MISMATCH;
pub use super::CH1STAT::TAG;
}
pub mod CH1STAT_CLR {
pub use super::CH1STAT::ERROR_CODE;
pub use super::CH1STAT::ERROR_DST;
pub use super::CH1STAT::ERROR_PACKET;
pub use super::CH1STAT::ERROR_PAGEFAULT;
pub use super::CH1STAT::ERROR_SETUP;
pub use super::CH1STAT::ERROR_SRC;
pub use super::CH1STAT::HASH_MISMATCH;
pub use super::CH1STAT::TAG;
}
pub mod CH1STAT_TOG {
pub use super::CH1STAT::ERROR_CODE;
pub use super::CH1STAT::ERROR_DST;
pub use super::CH1STAT::ERROR_PACKET;
pub use super::CH1STAT::ERROR_PAGEFAULT;
pub use super::CH1STAT::ERROR_SETUP;
pub use super::CH1STAT::ERROR_SRC;
pub use super::CH1STAT::HASH_MISMATCH;
pub use super::CH1STAT::TAG;
}
pub mod CH1OPTS {
pub use super::CH0OPTS::RECOVERY_TIMER;
}
pub mod CH1OPTS_SET {
pub use super::CH0OPTS::RECOVERY_TIMER;
}
pub mod CH1OPTS_CLR {
pub use super::CH0OPTS::RECOVERY_TIMER;
}
pub mod CH1OPTS_TOG {
pub use super::CH0OPTS::RECOVERY_TIMER;
}
pub mod CH2CMDPTR {
pub use super::CONTEXT::ADDR;
}
pub mod CH2SEMA {
pub use super::CH0SEMA::INCREMENT;
pub use super::CH0SEMA::VALUE;
}
pub mod CH2STAT {
pub mod HASH_MISMATCH {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_SETUP {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_PACKET {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_SRC {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_DST {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_PAGEFAULT {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_CODE {
pub const offset: u32 = 16;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NEXT_CHAIN_IS_0: u32 = 0b00000001;
pub const NO_CHAIN: u32 = 0b00000010;
pub const CONTEXT_ERROR: u32 = 0b00000011;
pub const PAYLOAD_ERROR: u32 = 0b00000100;
pub const INVALID_MODE: u32 = 0b00000101;
}
}
pub mod TAG {
pub const offset: u32 = 24;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod CH2STAT_SET {
pub use super::CH2STAT::ERROR_CODE;
pub use super::CH2STAT::ERROR_DST;
pub use super::CH2STAT::ERROR_PACKET;
pub use super::CH2STAT::ERROR_PAGEFAULT;
pub use super::CH2STAT::ERROR_SETUP;
pub use super::CH2STAT::ERROR_SRC;
pub use super::CH2STAT::HASH_MISMATCH;
pub use super::CH2STAT::TAG;
}
pub mod CH2STAT_CLR {
pub use super::CH2STAT::ERROR_CODE;
pub use super::CH2STAT::ERROR_DST;
pub use super::CH2STAT::ERROR_PACKET;
pub use super::CH2STAT::ERROR_PAGEFAULT;
pub use super::CH2STAT::ERROR_SETUP;
pub use super::CH2STAT::ERROR_SRC;
pub use super::CH2STAT::HASH_MISMATCH;
pub use super::CH2STAT::TAG;
}
pub mod CH2STAT_TOG {
pub use super::CH2STAT::ERROR_CODE;
pub use super::CH2STAT::ERROR_DST;
pub use super::CH2STAT::ERROR_PACKET;
pub use super::CH2STAT::ERROR_PAGEFAULT;
pub use super::CH2STAT::ERROR_SETUP;
pub use super::CH2STAT::ERROR_SRC;
pub use super::CH2STAT::HASH_MISMATCH;
pub use super::CH2STAT::TAG;
}
pub mod CH2OPTS {
pub use super::CH0OPTS::RECOVERY_TIMER;
}
pub mod CH2OPTS_SET {
pub use super::CH0OPTS::RECOVERY_TIMER;
}
pub mod CH2OPTS_CLR {
pub use super::CH0OPTS::RECOVERY_TIMER;
}
pub mod CH2OPTS_TOG {
pub use super::CH0OPTS::RECOVERY_TIMER;
}
pub mod CH3CMDPTR {
pub use super::CONTEXT::ADDR;
}
pub mod CH3SEMA {
pub use super::CH0SEMA::INCREMENT;
pub use super::CH0SEMA::VALUE;
}
pub mod CH3STAT {
pub mod HASH_MISMATCH {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_SETUP {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_PACKET {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_SRC {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_DST {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_PAGEFAULT {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERROR_CODE {
pub const offset: u32 = 16;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NEXT_CHAIN_IS_0: u32 = 0b00000001;
pub const NO_CHAIN: u32 = 0b00000010;
pub const CONTEXT_ERROR: u32 = 0b00000011;
pub const PAYLOAD_ERROR: u32 = 0b00000100;
pub const INVALID_MODE: u32 = 0b00000101;
}
}
pub mod TAG {
pub const offset: u32 = 24;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod CH3STAT_SET {
pub use super::CH3STAT::ERROR_CODE;
pub use super::CH3STAT::ERROR_DST;
pub use super::CH3STAT::ERROR_PACKET;
pub use super::CH3STAT::ERROR_PAGEFAULT;
pub use super::CH3STAT::ERROR_SETUP;
pub use super::CH3STAT::ERROR_SRC;
pub use super::CH3STAT::HASH_MISMATCH;
pub use super::CH3STAT::TAG;
}
pub mod CH3STAT_CLR {
pub use super::CH3STAT::ERROR_CODE;
pub use super::CH3STAT::ERROR_DST;
pub use super::CH3STAT::ERROR_PACKET;
pub use super::CH3STAT::ERROR_PAGEFAULT;
pub use super::CH3STAT::ERROR_SETUP;
pub use super::CH3STAT::ERROR_SRC;
pub use super::CH3STAT::HASH_MISMATCH;
pub use super::CH3STAT::TAG;
}
pub mod CH3STAT_TOG {
pub use super::CH3STAT::ERROR_CODE;
pub use super::CH3STAT::ERROR_DST;
pub use super::CH3STAT::ERROR_PACKET;
pub use super::CH3STAT::ERROR_PAGEFAULT;
pub use super::CH3STAT::ERROR_SETUP;
pub use super::CH3STAT::ERROR_SRC;
pub use super::CH3STAT::HASH_MISMATCH;
pub use super::CH3STAT::TAG;
}
pub mod CH3OPTS {
pub use super::CH0OPTS::RECOVERY_TIMER;
}
pub mod CH3OPTS_SET {
pub use super::CH0OPTS::RECOVERY_TIMER;
}
pub mod CH3OPTS_CLR {
pub use super::CH0OPTS::RECOVERY_TIMER;
}
pub mod CH3OPTS_TOG {
pub use super::CH0OPTS::RECOVERY_TIMER;
}
pub mod DBGSELECT {
pub mod INDEX {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const CONTROL: u32 = 0b00000001;
pub const OTPKEY0: u32 = 0b00010000;
pub const OTPKEY1: u32 = 0b00010001;
pub const OTPKEY2: u32 = 0b00010010;
pub const OTPKEY3: u32 = 0b00010011;
}
}
}
pub mod DBGDATA {
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 PAGETABLE {
pub mod ENABLE {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod FLUSH {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod BASE {
pub const offset: u32 = 2;
pub const mask: u32 = 0x3fffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod VERSION {
pub mod STEP {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MINOR {
pub const offset: u32 = 16;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MAJOR {
pub const offset: u32 = 24;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
#[repr(C)]
pub struct RegisterBlock {
pub CTRL: RWRegister<u32>,
pub CTRL_SET: RWRegister<u32>,
pub CTRL_CLR: RWRegister<u32>,
pub CTRL_TOG: RWRegister<u32>,
pub STAT: RWRegister<u32>,
pub STAT_SET: RWRegister<u32>,
pub STAT_CLR: RWRegister<u32>,
pub STAT_TOG: RWRegister<u32>,
pub CHANNELCTRL: RWRegister<u32>,
pub CHANNELCTRL_SET: RWRegister<u32>,
pub CHANNELCTRL_CLR: RWRegister<u32>,
pub CHANNELCTRL_TOG: RWRegister<u32>,
pub CAPABILITY0: RWRegister<u32>,
_reserved1: [u32; 3],
pub CAPABILITY1: RORegister<u32>,
_reserved2: [u32; 3],
pub CONTEXT: RWRegister<u32>,
_reserved3: [u32; 3],
pub KEY: RWRegister<u32>,
_reserved4: [u32; 3],
pub KEYDATA: RWRegister<u32>,
_reserved5: [u32; 3],
pub PACKET0: RORegister<u32>,
_reserved6: [u32; 3],
pub PACKET1: RORegister<u32>,
_reserved7: [u32; 3],
pub PACKET2: RORegister<u32>,
_reserved8: [u32; 3],
pub PACKET3: RORegister<u32>,
_reserved9: [u32; 3],
pub PACKET4: RORegister<u32>,
_reserved10: [u32; 3],
pub PACKET5: RORegister<u32>,
_reserved11: [u32; 3],
pub PACKET6: RORegister<u32>,
_reserved12: [u32; 7],
pub CH0CMDPTR: RWRegister<u32>,
_reserved13: [u32; 3],
pub CH0SEMA: RWRegister<u32>,
_reserved14: [u32; 3],
pub CH0STAT: RWRegister<u32>,
pub CH0STAT_SET: RWRegister<u32>,
pub CH0STAT_CLR: RWRegister<u32>,
pub CH0STAT_TOG: RWRegister<u32>,
pub CH0OPTS: RWRegister<u32>,
pub CH0OPTS_SET: RWRegister<u32>,
pub CH0OPTS_CLR: RWRegister<u32>,
pub CH0OPTS_TOG: RWRegister<u32>,
pub CH1CMDPTR: RWRegister<u32>,
_reserved15: [u32; 3],
pub CH1SEMA: RWRegister<u32>,
_reserved16: [u32; 3],
pub CH1STAT: RWRegister<u32>,
pub CH1STAT_SET: RWRegister<u32>,
pub CH1STAT_CLR: RWRegister<u32>,
pub CH1STAT_TOG: RWRegister<u32>,
pub CH1OPTS: RWRegister<u32>,
pub CH1OPTS_SET: RWRegister<u32>,
pub CH1OPTS_CLR: RWRegister<u32>,
pub CH1OPTS_TOG: RWRegister<u32>,
pub CH2CMDPTR: RWRegister<u32>,
_reserved17: [u32; 3],
pub CH2SEMA: RWRegister<u32>,
_reserved18: [u32; 3],
pub CH2STAT: RWRegister<u32>,
pub CH2STAT_SET: RWRegister<u32>,
pub CH2STAT_CLR: RWRegister<u32>,
pub CH2STAT_TOG: RWRegister<u32>,
pub CH2OPTS: RWRegister<u32>,
pub CH2OPTS_SET: RWRegister<u32>,
pub CH2OPTS_CLR: RWRegister<u32>,
pub CH2OPTS_TOG: RWRegister<u32>,
pub CH3CMDPTR: RWRegister<u32>,
_reserved19: [u32; 3],
pub CH3SEMA: RWRegister<u32>,
_reserved20: [u32; 3],
pub CH3STAT: RWRegister<u32>,
pub CH3STAT_SET: RWRegister<u32>,
pub CH3STAT_CLR: RWRegister<u32>,
pub CH3STAT_TOG: RWRegister<u32>,
pub CH3OPTS: RWRegister<u32>,
pub CH3OPTS_SET: RWRegister<u32>,
pub CH3OPTS_CLR: RWRegister<u32>,
pub CH3OPTS_TOG: RWRegister<u32>,
_reserved21: [u32; 128],
pub DBGSELECT: RWRegister<u32>,
_reserved22: [u32; 3],
pub DBGDATA: RORegister<u32>,
_reserved23: [u32; 3],
pub PAGETABLE: RWRegister<u32>,
_reserved24: [u32; 3],
pub VERSION: RORegister<u32>,
}
pub struct ResetValues {
pub CTRL: u32,
pub CTRL_SET: u32,
pub CTRL_CLR: u32,
pub CTRL_TOG: u32,
pub STAT: u32,
pub STAT_SET: u32,
pub STAT_CLR: u32,
pub STAT_TOG: u32,
pub CHANNELCTRL: u32,
pub CHANNELCTRL_SET: u32,
pub CHANNELCTRL_CLR: u32,
pub CHANNELCTRL_TOG: u32,
pub CAPABILITY0: u32,
pub CAPABILITY1: u32,
pub CONTEXT: u32,
pub KEY: u32,
pub KEYDATA: u32,
pub PACKET0: u32,
pub PACKET1: u32,
pub PACKET2: u32,
pub PACKET3: u32,
pub PACKET4: u32,
pub PACKET5: u32,
pub PACKET6: u32,
pub CH0CMDPTR: u32,
pub CH0SEMA: u32,
pub CH0STAT: u32,
pub CH0STAT_SET: u32,
pub CH0STAT_CLR: u32,
pub CH0STAT_TOG: u32,
pub CH0OPTS: u32,
pub CH0OPTS_SET: u32,
pub CH0OPTS_CLR: u32,
pub CH0OPTS_TOG: u32,
pub CH1CMDPTR: u32,
pub CH1SEMA: u32,
pub CH1STAT: u32,
pub CH1STAT_SET: u32,
pub CH1STAT_CLR: u32,
pub CH1STAT_TOG: u32,
pub CH1OPTS: u32,
pub CH1OPTS_SET: u32,
pub CH1OPTS_CLR: u32,
pub CH1OPTS_TOG: u32,
pub CH2CMDPTR: u32,
pub CH2SEMA: u32,
pub CH2STAT: u32,
pub CH2STAT_SET: u32,
pub CH2STAT_CLR: u32,
pub CH2STAT_TOG: u32,
pub CH2OPTS: u32,
pub CH2OPTS_SET: u32,
pub CH2OPTS_CLR: u32,
pub CH2OPTS_TOG: u32,
pub CH3CMDPTR: u32,
pub CH3SEMA: u32,
pub CH3STAT: u32,
pub CH3STAT_SET: u32,
pub CH3STAT_CLR: u32,
pub CH3STAT_TOG: u32,
pub CH3OPTS: u32,
pub CH3OPTS_SET: u32,
pub CH3OPTS_CLR: u32,
pub CH3OPTS_TOG: u32,
pub DBGSELECT: u32,
pub DBGDATA: u32,
pub PAGETABLE: u32,
pub VERSION: 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 = "rtfm")]
unsafe impl Send for Instance {}