use rigless::soc::{Access, FieldSpec, Layout, ReadAction, RegisterSpec, Width, WriteModify};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Register {
Cr = 0,
Isr = 1,
Ifcr = 2,
Fgmar = 3,
Fgor = 4,
Bgmar = 5,
Bgor = 6,
Fgpfccr = 7,
Fgcolr = 8,
Bgpfccr = 9,
Bgcolr = 10,
Fgcmar = 11,
Bgcmar = 12,
Opfccr = 13,
Ocolr = 14,
Omar = 15,
Oor = 16,
Nlr = 17,
Lwr = 18,
Amtcr = 19,
}
impl Register {
pub const ALL: [Self; 20] = [Self::Cr, Self::Isr, Self::Ifcr, Self::Fgmar, Self::Fgor, Self::Bgmar, Self::Bgor, Self::Fgpfccr, Self::Fgcolr, Self::Bgpfccr, Self::Bgcolr, Self::Fgcmar, Self::Bgcmar, Self::Opfccr, Self::Ocolr, Self::Omar, Self::Oor, Self::Nlr, Self::Lwr, Self::Amtcr];
}
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 START: &FieldSpec = &super::REGISTERS[0].fields[0];
pub const SUSP: &FieldSpec = &super::REGISTERS[0].fields[1];
pub const ABORT: &FieldSpec = &super::REGISTERS[0].fields[2];
pub const TEIE: &FieldSpec = &super::REGISTERS[0].fields[3];
pub const TCIE: &FieldSpec = &super::REGISTERS[0].fields[4];
pub const TWIE: &FieldSpec = &super::REGISTERS[0].fields[5];
pub const CAEIE: &FieldSpec = &super::REGISTERS[0].fields[6];
pub const CTCIE: &FieldSpec = &super::REGISTERS[0].fields[7];
pub const CEIE: &FieldSpec = &super::REGISTERS[0].fields[8];
pub const MODE: &FieldSpec = &super::REGISTERS[0].fields[9];
}
pub mod isr {
use super::FieldSpec;
pub const TEIF: &FieldSpec = &super::REGISTERS[1].fields[0];
pub const TCIF: &FieldSpec = &super::REGISTERS[1].fields[1];
pub const TWIF: &FieldSpec = &super::REGISTERS[1].fields[2];
pub const CAEIF: &FieldSpec = &super::REGISTERS[1].fields[3];
pub const CTCIF: &FieldSpec = &super::REGISTERS[1].fields[4];
pub const CEIF: &FieldSpec = &super::REGISTERS[1].fields[5];
}
pub mod ifcr {
use super::FieldSpec;
pub const CTEIF: &FieldSpec = &super::REGISTERS[2].fields[0];
pub const CTCIF: &FieldSpec = &super::REGISTERS[2].fields[1];
pub const CTWIF: &FieldSpec = &super::REGISTERS[2].fields[2];
pub const CAECIF: &FieldSpec = &super::REGISTERS[2].fields[3];
pub const CCTCIF: &FieldSpec = &super::REGISTERS[2].fields[4];
pub const CCEIF: &FieldSpec = &super::REGISTERS[2].fields[5];
}
pub mod fgmar {
use super::FieldSpec;
pub const MA: &FieldSpec = &super::REGISTERS[3].fields[0];
}
pub mod fgor {
use super::FieldSpec;
pub const LO: &FieldSpec = &super::REGISTERS[4].fields[0];
}
pub mod bgmar {
use super::FieldSpec;
pub const MA: &FieldSpec = &super::REGISTERS[5].fields[0];
}
pub mod bgor {
use super::FieldSpec;
pub const LO: &FieldSpec = &super::REGISTERS[6].fields[0];
}
pub mod fgpfccr {
use super::FieldSpec;
pub const CM: &FieldSpec = &super::REGISTERS[7].fields[0];
pub const CCM: &FieldSpec = &super::REGISTERS[7].fields[1];
pub const START: &FieldSpec = &super::REGISTERS[7].fields[2];
pub const CS: &FieldSpec = &super::REGISTERS[7].fields[3];
pub const AM: &FieldSpec = &super::REGISTERS[7].fields[4];
pub const CSS: &FieldSpec = &super::REGISTERS[7].fields[5];
pub const AI: &FieldSpec = &super::REGISTERS[7].fields[6];
pub const RBS: &FieldSpec = &super::REGISTERS[7].fields[7];
pub const ALPHA: &FieldSpec = &super::REGISTERS[7].fields[8];
}
pub mod fgcolr {
use super::FieldSpec;
pub const BLUE: &FieldSpec = &super::REGISTERS[8].fields[0];
pub const GREEN: &FieldSpec = &super::REGISTERS[8].fields[1];
pub const RED: &FieldSpec = &super::REGISTERS[8].fields[2];
}
pub mod bgpfccr {
use super::FieldSpec;
pub const CM: &FieldSpec = &super::REGISTERS[9].fields[0];
pub const CCM: &FieldSpec = &super::REGISTERS[9].fields[1];
pub const START: &FieldSpec = &super::REGISTERS[9].fields[2];
pub const CS: &FieldSpec = &super::REGISTERS[9].fields[3];
pub const AM: &FieldSpec = &super::REGISTERS[9].fields[4];
pub const AI: &FieldSpec = &super::REGISTERS[9].fields[5];
pub const RBS: &FieldSpec = &super::REGISTERS[9].fields[6];
pub const ALPHA: &FieldSpec = &super::REGISTERS[9].fields[7];
}
pub mod bgcolr {
use super::FieldSpec;
pub const BLUE: &FieldSpec = &super::REGISTERS[10].fields[0];
pub const GREEN: &FieldSpec = &super::REGISTERS[10].fields[1];
pub const RED: &FieldSpec = &super::REGISTERS[10].fields[2];
}
pub mod fgcmar {
use super::FieldSpec;
pub const MA: &FieldSpec = &super::REGISTERS[11].fields[0];
}
pub mod bgcmar {
use super::FieldSpec;
pub const MA: &FieldSpec = &super::REGISTERS[12].fields[0];
}
pub mod opfccr {
use super::FieldSpec;
pub const CM: &FieldSpec = &super::REGISTERS[13].fields[0];
pub const AI: &FieldSpec = &super::REGISTERS[13].fields[1];
pub const RBS: &FieldSpec = &super::REGISTERS[13].fields[2];
}
pub mod ocolr {
use super::FieldSpec;
pub const BLUE: &FieldSpec = &super::REGISTERS[14].fields[0];
pub const GREEN: &FieldSpec = &super::REGISTERS[14].fields[1];
pub const RED: &FieldSpec = &super::REGISTERS[14].fields[2];
pub const ALPHA: &FieldSpec = &super::REGISTERS[14].fields[3];
}
pub mod omar {
use super::FieldSpec;
pub const MA: &FieldSpec = &super::REGISTERS[15].fields[0];
}
pub mod oor {
use super::FieldSpec;
pub const LO: &FieldSpec = &super::REGISTERS[16].fields[0];
}
pub mod nlr {
use super::FieldSpec;
pub const NL: &FieldSpec = &super::REGISTERS[17].fields[0];
pub const PL: &FieldSpec = &super::REGISTERS[17].fields[1];
}
pub mod lwr {
use super::FieldSpec;
pub const LW: &FieldSpec = &super::REGISTERS[18].fields[0];
}
pub mod amtcr {
use super::FieldSpec;
pub const EN: &FieldSpec = &super::REGISTERS[19].fields[0];
pub const DT: &FieldSpec = &super::REGISTERS[19].fields[1];
}
pub static REGISTERS: [RegisterSpec; 20] = [
RegisterSpec { name: "CR", offset: 0x0, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "START", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SUSP", bit: 1, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "ABORT", bit: 2, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TEIE", bit: 8, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TCIE", bit: 9, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TWIE", bit: 10, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CAEIE", bit: 11, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CTCIE", bit: 12, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CEIE", bit: 13, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "MODE", bit: 16, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "ISR", offset: 0x4, width: Width::W32, reset: 0x0000_0000, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "TEIF", bit: 0, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TCIF", bit: 1, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TWIF", bit: 2, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CAEIF", bit: 3, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CTCIF", bit: 4, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CEIF", bit: 5, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "IFCR", offset: 0x8, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "CTEIF", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CTCIF", bit: 1, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CTWIF", bit: 2, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CAECIF", bit: 3, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CCTCIF", bit: 4, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CCEIF", bit: 5, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "FGMAR", offset: 0xC, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "MA", bit: 0, width: 32, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "FGOR", offset: 0x10, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "LO", bit: 0, width: 14, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "BGMAR", offset: 0x14, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "MA", bit: 0, width: 32, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "BGOR", offset: 0x18, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "LO", bit: 0, width: 14, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "FGPFCCR", offset: 0x1C, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "CM", bit: 0, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CCM", bit: 4, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "START", bit: 5, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CS", bit: 8, width: 8, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "AM", bit: 16, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CSS", bit: 18, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "AI", bit: 20, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "RBS", bit: 21, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "ALPHA", bit: 24, width: 8, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "FGCOLR", offset: 0x20, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "BLUE", bit: 0, width: 8, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "GREEN", bit: 8, width: 8, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "RED", bit: 16, width: 8, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "BGPFCCR", offset: 0x24, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "CM", bit: 0, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CCM", bit: 4, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "START", bit: 5, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CS", bit: 8, width: 8, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "AM", bit: 16, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "AI", bit: 20, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "RBS", bit: 21, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "ALPHA", bit: 24, width: 8, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "BGCOLR", offset: 0x28, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "BLUE", bit: 0, width: 8, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "GREEN", bit: 8, width: 8, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "RED", bit: 16, width: 8, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "FGCMAR", offset: 0x2C, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "MA", bit: 0, width: 32, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "BGCMAR", offset: 0x30, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "MA", bit: 0, width: 32, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "OPFCCR", offset: 0x34, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "CM", bit: 0, width: 3, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "AI", bit: 20, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "RBS", bit: 21, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "OCOLR", offset: 0x38, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "BLUE", bit: 0, width: 8, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "GREEN", bit: 8, width: 8, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "RED", bit: 16, width: 8, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "ALPHA", bit: 24, width: 8, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "OMAR", offset: 0x3C, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "MA", bit: 0, width: 32, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "OOR", offset: 0x40, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "LO", bit: 0, width: 14, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "NLR", offset: 0x44, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "NL", bit: 0, width: 16, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "PL", bit: 16, width: 14, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "LWR", offset: 0x48, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "LW", bit: 0, width: 16, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "AMTCR", offset: 0x4C, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "EN", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DT", bit: 8, width: 8, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
];