use rigless::soc::{Access, FieldSpec, Layout, ReadAction, RegisterSpec, Width, WriteModify};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Register {
Memrm = 0,
Pmc = 1,
Exticr1 = 2,
Exticr2 = 3,
Exticr3 = 4,
Exticr4 = 5,
Cmpcr = 6,
}
impl Register {
pub const ALL: [Self; 7] = [Self::Memrm, Self::Pmc, Self::Exticr1, Self::Exticr2, Self::Exticr3, Self::Exticr4, Self::Cmpcr];
}
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 memrm {
use super::FieldSpec;
pub const MEM_MODE: &FieldSpec = &super::REGISTERS[0].fields[0];
pub const FB_MODE: &FieldSpec = &super::REGISTERS[0].fields[1];
pub const SWP_FMC: &FieldSpec = &super::REGISTERS[0].fields[2];
}
pub mod pmc {
use super::FieldSpec;
pub const ADC1DC2: &FieldSpec = &super::REGISTERS[1].fields[0];
pub const ADC2DC2: &FieldSpec = &super::REGISTERS[1].fields[1];
pub const ADC3DC2: &FieldSpec = &super::REGISTERS[1].fields[2];
pub const MII_RMII_SEL: &FieldSpec = &super::REGISTERS[1].fields[3];
}
pub mod exticr1 {
use super::FieldSpec;
pub const EXTI0: &FieldSpec = &super::REGISTERS[2].fields[0];
pub const EXTI1: &FieldSpec = &super::REGISTERS[2].fields[1];
pub const EXTI2: &FieldSpec = &super::REGISTERS[2].fields[2];
pub const EXTI3: &FieldSpec = &super::REGISTERS[2].fields[3];
}
pub mod exticr2 {
use super::FieldSpec;
pub const EXTI4: &FieldSpec = &super::REGISTERS[3].fields[0];
pub const EXTI5: &FieldSpec = &super::REGISTERS[3].fields[1];
pub const EXTI6: &FieldSpec = &super::REGISTERS[3].fields[2];
pub const EXTI7: &FieldSpec = &super::REGISTERS[3].fields[3];
}
pub mod exticr3 {
use super::FieldSpec;
pub const EXTI8: &FieldSpec = &super::REGISTERS[4].fields[0];
pub const EXTI9: &FieldSpec = &super::REGISTERS[4].fields[1];
pub const EXTI10: &FieldSpec = &super::REGISTERS[4].fields[2];
pub const EXTI11: &FieldSpec = &super::REGISTERS[4].fields[3];
}
pub mod exticr4 {
use super::FieldSpec;
pub const EXTI12: &FieldSpec = &super::REGISTERS[5].fields[0];
pub const EXTI13: &FieldSpec = &super::REGISTERS[5].fields[1];
pub const EXTI14: &FieldSpec = &super::REGISTERS[5].fields[2];
pub const EXTI15: &FieldSpec = &super::REGISTERS[5].fields[3];
}
pub mod cmpcr {
use super::FieldSpec;
pub const CMP_PD: &FieldSpec = &super::REGISTERS[6].fields[0];
pub const READY: &FieldSpec = &super::REGISTERS[6].fields[1];
}
pub static REGISTERS: [RegisterSpec; 7] = [
RegisterSpec { name: "MEMRM", offset: 0x0, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "MEM_MODE", bit: 0, width: 3, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "FB_MODE", bit: 8, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SWP_FMC", bit: 10, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "PMC", offset: 0x4, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "ADC1DC2", bit: 16, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "ADC2DC2", bit: 17, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "ADC3DC2", bit: 18, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "MII_RMII_SEL", bit: 23, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "EXTICR1", offset: 0x8, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "EXTI0", bit: 0, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EXTI1", bit: 4, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EXTI2", bit: 8, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EXTI3", bit: 12, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "EXTICR2", offset: 0xC, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "EXTI4", bit: 0, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EXTI5", bit: 4, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EXTI6", bit: 8, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EXTI7", bit: 12, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "EXTICR3", offset: 0x10, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "EXTI8", bit: 0, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EXTI9", bit: 4, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EXTI10", bit: 8, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EXTI11", bit: 12, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "EXTICR4", offset: 0x14, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "EXTI12", bit: 0, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EXTI13", bit: 4, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EXTI14", bit: 8, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EXTI15", bit: 12, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "CMPCR", offset: 0x20, width: Width::W32, reset: 0x0000_0000, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "CMP_PD", bit: 0, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "READY", bit: 8, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
] },
];