use rigless::soc::{Access, FieldSpec, Layout, ReadAction, RegisterSpec, Width, WriteModify};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Register {
Cr1 = 0,
Csr1 = 1,
Cr2 = 2,
Cr3 = 3,
Cpucr = 4,
D3cr = 5,
Wkupcr = 6,
Wkupfr = 7,
Wkupepr = 8,
}
impl Register {
pub const ALL: [Self; 9] = [Self::Cr1, Self::Csr1, Self::Cr2, Self::Cr3, Self::Cpucr, Self::D3cr, Self::Wkupcr, Self::Wkupfr, Self::Wkupepr];
}
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 cr1 {
use super::FieldSpec;
pub const LPDS: &FieldSpec = &super::REGISTERS[0].fields[0];
pub const PVDE: &FieldSpec = &super::REGISTERS[0].fields[1];
pub const PLS: &FieldSpec = &super::REGISTERS[0].fields[2];
pub const DBP: &FieldSpec = &super::REGISTERS[0].fields[3];
pub const FLPS: &FieldSpec = &super::REGISTERS[0].fields[4];
pub const SVOS: &FieldSpec = &super::REGISTERS[0].fields[5];
pub const AVDEN: &FieldSpec = &super::REGISTERS[0].fields[6];
pub const ALS: &FieldSpec = &super::REGISTERS[0].fields[7];
}
pub mod csr1 {
use super::FieldSpec;
pub const PVDO: &FieldSpec = &super::REGISTERS[1].fields[0];
pub const ACTVOSRDY: &FieldSpec = &super::REGISTERS[1].fields[1];
pub const ACTVOS: &FieldSpec = &super::REGISTERS[1].fields[2];
pub const AVDO: &FieldSpec = &super::REGISTERS[1].fields[3];
}
pub mod cr2 {
use super::FieldSpec;
pub const BREN: &FieldSpec = &super::REGISTERS[2].fields[0];
pub const MONEN: &FieldSpec = &super::REGISTERS[2].fields[1];
pub const BRRDY: &FieldSpec = &super::REGISTERS[2].fields[2];
pub const VBATL: &FieldSpec = &super::REGISTERS[2].fields[3];
pub const VBATH: &FieldSpec = &super::REGISTERS[2].fields[4];
pub const TEMPL: &FieldSpec = &super::REGISTERS[2].fields[5];
pub const TEMPH: &FieldSpec = &super::REGISTERS[2].fields[6];
}
pub mod cr3 {
use super::FieldSpec;
pub const BYPASS: &FieldSpec = &super::REGISTERS[3].fields[0];
pub const LDOEN: &FieldSpec = &super::REGISTERS[3].fields[1];
pub const SCUEN: &FieldSpec = &super::REGISTERS[3].fields[2];
pub const VBE: &FieldSpec = &super::REGISTERS[3].fields[3];
pub const VBRS: &FieldSpec = &super::REGISTERS[3].fields[4];
pub const USB33DEN: &FieldSpec = &super::REGISTERS[3].fields[5];
pub const USBREGEN: &FieldSpec = &super::REGISTERS[3].fields[6];
pub const USB33RDY: &FieldSpec = &super::REGISTERS[3].fields[7];
}
pub mod cpucr {
use super::FieldSpec;
pub const PDDS_D1: &FieldSpec = &super::REGISTERS[4].fields[0];
pub const PDDS_D2: &FieldSpec = &super::REGISTERS[4].fields[1];
pub const PDDS_D3: &FieldSpec = &super::REGISTERS[4].fields[2];
pub const STOPF: &FieldSpec = &super::REGISTERS[4].fields[3];
pub const SBF: &FieldSpec = &super::REGISTERS[4].fields[4];
pub const SBF_D1: &FieldSpec = &super::REGISTERS[4].fields[5];
pub const SBF_D2: &FieldSpec = &super::REGISTERS[4].fields[6];
pub const CSSF: &FieldSpec = &super::REGISTERS[4].fields[7];
pub const RUN_D3: &FieldSpec = &super::REGISTERS[4].fields[8];
}
pub mod d3cr {
use super::FieldSpec;
pub const VOSRDY: &FieldSpec = &super::REGISTERS[5].fields[0];
pub const VOS: &FieldSpec = &super::REGISTERS[5].fields[1];
}
pub mod wkupcr {
use super::FieldSpec;
pub const WKUPC: &FieldSpec = &super::REGISTERS[6].fields[0];
}
pub mod wkupfr {
use super::FieldSpec;
pub const WKUPF1: &FieldSpec = &super::REGISTERS[7].fields[0];
pub const WKUPF2: &FieldSpec = &super::REGISTERS[7].fields[1];
pub const WKUPF3: &FieldSpec = &super::REGISTERS[7].fields[2];
pub const WKUPF4: &FieldSpec = &super::REGISTERS[7].fields[3];
pub const WKUPF5: &FieldSpec = &super::REGISTERS[7].fields[4];
pub const WKUPF6: &FieldSpec = &super::REGISTERS[7].fields[5];
}
pub mod wkupepr {
use super::FieldSpec;
pub const WKUPEN1: &FieldSpec = &super::REGISTERS[8].fields[0];
pub const WKUPEN2: &FieldSpec = &super::REGISTERS[8].fields[1];
pub const WKUPEN3: &FieldSpec = &super::REGISTERS[8].fields[2];
pub const WKUPEN4: &FieldSpec = &super::REGISTERS[8].fields[3];
pub const WKUPEN5: &FieldSpec = &super::REGISTERS[8].fields[4];
pub const WKUPEN6: &FieldSpec = &super::REGISTERS[8].fields[5];
pub const WKUPP1: &FieldSpec = &super::REGISTERS[8].fields[6];
pub const WKUPP2: &FieldSpec = &super::REGISTERS[8].fields[7];
pub const WKUPP3: &FieldSpec = &super::REGISTERS[8].fields[8];
pub const WKUPP4: &FieldSpec = &super::REGISTERS[8].fields[9];
pub const WKUPP5: &FieldSpec = &super::REGISTERS[8].fields[10];
pub const WKUPP6: &FieldSpec = &super::REGISTERS[8].fields[11];
pub const WKUPPUPD1: &FieldSpec = &super::REGISTERS[8].fields[12];
pub const WKUPPUPD2: &FieldSpec = &super::REGISTERS[8].fields[13];
pub const WKUPPUPD3: &FieldSpec = &super::REGISTERS[8].fields[14];
pub const WKUPPUPD4: &FieldSpec = &super::REGISTERS[8].fields[15];
pub const WKUPPUPD5: &FieldSpec = &super::REGISTERS[8].fields[16];
pub const WKUPPUPD6: &FieldSpec = &super::REGISTERS[8].fields[17];
}
pub static REGISTERS: [RegisterSpec; 9] = [
RegisterSpec { name: "CR1", offset: 0x0, width: Width::W32, reset: 0xF000_C000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "LPDS", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "PVDE", bit: 4, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "PLS", bit: 5, width: 3, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBP", bit: 8, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "FLPS", bit: 9, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SVOS", bit: 14, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "AVDEN", bit: 16, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "ALS", bit: 17, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "CSR1", offset: 0x4, width: Width::W32, reset: 0x0000_4000, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "PVDO", bit: 4, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "ACTVOSRDY", bit: 13, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "ACTVOS", bit: 14, width: 2, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "AVDO", bit: 16, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "CR2", offset: 0x8, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "BREN", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "MONEN", bit: 4, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "BRRDY", bit: 16, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "VBATL", bit: 20, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "VBATH", bit: 21, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TEMPL", bit: 22, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TEMPH", bit: 23, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "CR3", offset: 0xC, width: Width::W32, reset: 0x0000_0006, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "BYPASS", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "LDOEN", bit: 1, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SCUEN", bit: 2, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "VBE", bit: 8, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "VBRS", bit: 9, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "USB33DEN", bit: 24, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "USBREGEN", bit: 25, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "USB33RDY", bit: 26, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "CPUCR", offset: 0x10, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "PDDS_D1", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "PDDS_D2", bit: 1, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "PDDS_D3", bit: 2, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "STOPF", bit: 5, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SBF", bit: 6, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SBF_D1", bit: 7, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SBF_D2", bit: 8, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CSSF", bit: 9, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "RUN_D3", bit: 11, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "D3CR", offset: 0x18, width: Width::W32, reset: 0x0000_4000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "VOSRDY", bit: 13, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "VOS", bit: 14, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "WKUPCR", offset: 0x20, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "WKUPC", bit: 0, width: 6, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "WKUPFR", offset: 0x24, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "WKUPF1", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPF2", bit: 1, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPF3", bit: 2, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPF4", bit: 3, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPF5", bit: 4, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPF6", bit: 5, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "WKUPEPR", offset: 0x28, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "WKUPEN1", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPEN2", bit: 1, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPEN3", bit: 2, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPEN4", bit: 3, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPEN5", bit: 4, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPEN6", bit: 5, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPP1", bit: 8, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPP2", bit: 9, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPP3", bit: 10, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPP4", bit: 11, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPP5", bit: 12, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPP6", bit: 13, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPPUPD1", bit: 16, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPPUPD2", bit: 18, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPPUPD3", bit: 20, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPPUPD4", bit: 22, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPPUPD5", bit: 24, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "WKUPPUPD6", bit: 26, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
];