use rigless::soc::{Access, FieldSpec, Layout, ReadAction, RegisterSpec, Width, WriteModify};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Register {
Csr = 0,
Ccr = 1,
Cdr = 2,
Cdr2 = 3,
}
impl Register {
pub const ALL: [Self; 4] = [Self::Csr, Self::Ccr, Self::Cdr, Self::Cdr2];
}
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 csr {
use super::FieldSpec;
pub const ADRDY_MST: &FieldSpec = &super::REGISTERS[0].fields[0];
pub const EOSMP_MST: &FieldSpec = &super::REGISTERS[0].fields[1];
pub const EOC_MST: &FieldSpec = &super::REGISTERS[0].fields[2];
pub const EOS_MST: &FieldSpec = &super::REGISTERS[0].fields[3];
pub const OVR_MST: &FieldSpec = &super::REGISTERS[0].fields[4];
pub const JEOC_MST: &FieldSpec = &super::REGISTERS[0].fields[5];
pub const JEOS_MST: &FieldSpec = &super::REGISTERS[0].fields[6];
pub const AWD1_MST: &FieldSpec = &super::REGISTERS[0].fields[7];
pub const AWD2_MST: &FieldSpec = &super::REGISTERS[0].fields[8];
pub const AWD3_MST: &FieldSpec = &super::REGISTERS[0].fields[9];
pub const JQOVF_MST: &FieldSpec = &super::REGISTERS[0].fields[10];
pub const ADRDY_SLV: &FieldSpec = &super::REGISTERS[0].fields[11];
pub const EOSMP_SLV: &FieldSpec = &super::REGISTERS[0].fields[12];
pub const EOC_SLV: &FieldSpec = &super::REGISTERS[0].fields[13];
pub const EOS_SLV: &FieldSpec = &super::REGISTERS[0].fields[14];
pub const OVR_SLV: &FieldSpec = &super::REGISTERS[0].fields[15];
pub const JEOC_SLV: &FieldSpec = &super::REGISTERS[0].fields[16];
pub const JEOS_SLV: &FieldSpec = &super::REGISTERS[0].fields[17];
pub const AWD1_SLV: &FieldSpec = &super::REGISTERS[0].fields[18];
pub const AWD2_SLV: &FieldSpec = &super::REGISTERS[0].fields[19];
pub const AWD3_SLV: &FieldSpec = &super::REGISTERS[0].fields[20];
pub const JQOVF_SLV: &FieldSpec = &super::REGISTERS[0].fields[21];
}
pub mod ccr {
use super::FieldSpec;
pub const DUAL: &FieldSpec = &super::REGISTERS[1].fields[0];
pub const DELAY: &FieldSpec = &super::REGISTERS[1].fields[1];
pub const DAMDF: &FieldSpec = &super::REGISTERS[1].fields[2];
pub const CKMODE: &FieldSpec = &super::REGISTERS[1].fields[3];
pub const PRESC: &FieldSpec = &super::REGISTERS[1].fields[4];
pub const VREFEN: &FieldSpec = &super::REGISTERS[1].fields[5];
pub const VSENSEEN: &FieldSpec = &super::REGISTERS[1].fields[6];
pub const VBATEN: &FieldSpec = &super::REGISTERS[1].fields[7];
}
pub mod cdr {
use super::FieldSpec;
pub const RDATA_MST: &FieldSpec = &super::REGISTERS[2].fields[0];
pub const RDATA_SLV: &FieldSpec = &super::REGISTERS[2].fields[1];
}
pub mod cdr2 {
use super::FieldSpec;
pub const RDATA_ALT: &FieldSpec = &super::REGISTERS[3].fields[0];
}
pub static REGISTERS: [RegisterSpec; 4] = [
RegisterSpec { name: "CSR", offset: 0x0, width: Width::W32, reset: 0x0000_0000, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "ADRDY_MST", bit: 0, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EOSMP_MST", bit: 1, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EOC_MST", bit: 2, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EOS_MST", bit: 3, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "OVR_MST", bit: 4, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JEOC_MST", bit: 5, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JEOS_MST", bit: 6, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "AWD1_MST", bit: 7, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "AWD2_MST", bit: 8, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "AWD3_MST", bit: 9, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JQOVF_MST", bit: 10, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "ADRDY_SLV", bit: 16, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EOSMP_SLV", bit: 17, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EOC_SLV", bit: 18, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EOS_SLV", bit: 19, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "OVR_SLV", bit: 20, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JEOC_SLV", bit: 21, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JEOS_SLV", bit: 22, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "AWD1_SLV", bit: 23, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "AWD2_SLV", bit: 24, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "AWD3_SLV", bit: 25, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JQOVF_SLV", bit: 26, width: 1, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "CCR", offset: 0x8, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "DUAL", bit: 0, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DELAY", bit: 8, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DAMDF", bit: 14, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CKMODE", bit: 16, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "PRESC", bit: 18, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "VREFEN", bit: 22, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "VSENSEEN", bit: 23, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "VBATEN", bit: 24, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "CDR", offset: 0xC, width: Width::W32, reset: 0x0000_0000, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "RDATA_MST", bit: 0, width: 16, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "RDATA_SLV", bit: 16, width: 16, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "CDR2", offset: 0x10, width: Width::W32, reset: 0x0000_0000, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "RDATA_ALT", bit: 0, width: 32, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
] },
];