use rigless::soc::{Access, FieldSpec, Layout, ReadAction, RegisterSpec, Width, WriteModify};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Register {
Cr = 0,
Cfgr = 1,
Txdr = 2,
Rxdr = 3,
Isr = 4,
Ier = 5,
}
impl Register {
pub const ALL: [Self; 6] = [Self::Cr, Self::Cfgr, Self::Txdr, Self::Rxdr, Self::Isr, Self::Ier];
}
impl Layout for Register {
const REGISTERS: &'static [RegisterSpec] = ®ISTERS;
fn from_index(index: usize) -> Option<Self> {
Self::ALL.get(index).copied()
}
fn index(self) -> usize {
self as usize
}
}
pub mod cr {
use super::FieldSpec;
pub const CECEN: &FieldSpec = &super::REGISTERS[0].fields[0];
pub const TXSOM: &FieldSpec = &super::REGISTERS[0].fields[1];
pub const TXEOM: &FieldSpec = &super::REGISTERS[0].fields[2];
}
pub mod cfgr {
use super::FieldSpec;
pub const SFT: &FieldSpec = &super::REGISTERS[1].fields[0];
pub const RXTOL: &FieldSpec = &super::REGISTERS[1].fields[1];
pub const BRESTP: &FieldSpec = &super::REGISTERS[1].fields[2];
pub const BREGEN: &FieldSpec = &super::REGISTERS[1].fields[3];
pub const LBPEGEN: &FieldSpec = &super::REGISTERS[1].fields[4];
pub const BRDNOGEN: &FieldSpec = &super::REGISTERS[1].fields[5];
pub const SFTOPT: &FieldSpec = &super::REGISTERS[1].fields[6];
pub const OAR: &FieldSpec = &super::REGISTERS[1].fields[7];
pub const LSTN: &FieldSpec = &super::REGISTERS[1].fields[8];
}
pub mod txdr {
use super::FieldSpec;
pub const TXD: &FieldSpec = &super::REGISTERS[2].fields[0];
}
pub mod rxdr {
use super::FieldSpec;
pub const RXD: &FieldSpec = &super::REGISTERS[3].fields[0];
}
pub mod isr {
use super::FieldSpec;
pub const RXBR: &FieldSpec = &super::REGISTERS[4].fields[0];
pub const RXEND: &FieldSpec = &super::REGISTERS[4].fields[1];
pub const RXOVR: &FieldSpec = &super::REGISTERS[4].fields[2];
pub const BRE: &FieldSpec = &super::REGISTERS[4].fields[3];
pub const SBPE: &FieldSpec = &super::REGISTERS[4].fields[4];
pub const LBPE: &FieldSpec = &super::REGISTERS[4].fields[5];
pub const RXACKE: &FieldSpec = &super::REGISTERS[4].fields[6];
pub const ARBLST: &FieldSpec = &super::REGISTERS[4].fields[7];
pub const TXBR: &FieldSpec = &super::REGISTERS[4].fields[8];
pub const TXEND: &FieldSpec = &super::REGISTERS[4].fields[9];
pub const TXUDR: &FieldSpec = &super::REGISTERS[4].fields[10];
pub const TXERR: &FieldSpec = &super::REGISTERS[4].fields[11];
pub const TXACKE: &FieldSpec = &super::REGISTERS[4].fields[12];
}
pub mod ier {
use super::FieldSpec;
pub const RXBRIE: &FieldSpec = &super::REGISTERS[5].fields[0];
pub const RXENDIE: &FieldSpec = &super::REGISTERS[5].fields[1];
pub const RXOVRIE: &FieldSpec = &super::REGISTERS[5].fields[2];
pub const BREIE: &FieldSpec = &super::REGISTERS[5].fields[3];
pub const SBPEIE: &FieldSpec = &super::REGISTERS[5].fields[4];
pub const LBPEIE: &FieldSpec = &super::REGISTERS[5].fields[5];
pub const RXACKIE: &FieldSpec = &super::REGISTERS[5].fields[6];
pub const ARBLSTIE: &FieldSpec = &super::REGISTERS[5].fields[7];
pub const TXBRIE: &FieldSpec = &super::REGISTERS[5].fields[8];
pub const TXENDIE: &FieldSpec = &super::REGISTERS[5].fields[9];
pub const TXUDRIE: &FieldSpec = &super::REGISTERS[5].fields[10];
pub const TXERRIE: &FieldSpec = &super::REGISTERS[5].fields[11];
pub const TXACKIE: &FieldSpec = &super::REGISTERS[5].fields[12];
}
pub static REGISTERS: [RegisterSpec; 6] = [
RegisterSpec { name: "CR", offset: 0x0, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "CECEN", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TXSOM", bit: 1, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TXEOM", bit: 2, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "CFGR", offset: 0x4, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "SFT", bit: 0, width: 3, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "RXTOL", bit: 3, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "BRESTP", bit: 4, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "BREGEN", bit: 5, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "LBPEGEN", bit: 6, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "BRDNOGEN", bit: 7, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SFTOPT", bit: 8, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "OAR", bit: 16, width: 15, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "LSTN", bit: 31, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "TXDR", offset: 0x8, width: Width::W32, reset: 0x0000_0000, access: Access::WriteOnly, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "TXD", bit: 0, width: 8, access: Access::WriteOnly, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "RXDR", offset: 0xC, width: Width::W32, reset: 0x0000_0000, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "RXD", bit: 0, width: 8, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "ISR", offset: 0x10, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "RXBR", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "RXEND", bit: 1, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "RXOVR", bit: 2, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "BRE", bit: 3, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SBPE", bit: 4, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "LBPE", bit: 5, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "RXACKE", bit: 6, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "ARBLST", bit: 7, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TXBR", bit: 8, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TXEND", bit: 9, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TXUDR", bit: 10, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TXERR", bit: 11, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TXACKE", bit: 12, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "IER", offset: 0x14, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "RXBRIE", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "RXENDIE", bit: 1, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "RXOVRIE", bit: 2, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "BREIE", bit: 3, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SBPEIE", bit: 4, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "LBPEIE", bit: 5, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "RXACKIE", bit: 6, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "ARBLSTIE", bit: 7, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TXBRIE", bit: 8, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TXENDIE", bit: 9, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TXUDRIE", bit: 10, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TXERRIE", bit: 11, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TXACKIE", bit: 12, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
];