use rigless::soc::{Access, FieldSpec, Layout, ReadAction, RegisterSpec, Width, WriteModify};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Register {
Sr = 0,
Cr1 = 1,
Cr2 = 2,
Smpr1 = 3,
Smpr2 = 4,
Jofr1 = 5,
Jofr2 = 6,
Jofr3 = 7,
Jofr4 = 8,
Htr = 9,
Ltr = 10,
Sqr1 = 11,
Sqr2 = 12,
Sqr3 = 13,
Jsqr = 14,
Jdr1 = 15,
Jdr2 = 16,
Jdr3 = 17,
Jdr4 = 18,
Dr = 19,
}
impl Register {
pub const ALL: [Self; 20] = [Self::Sr, Self::Cr1, Self::Cr2, Self::Smpr1, Self::Smpr2, Self::Jofr1, Self::Jofr2, Self::Jofr3, Self::Jofr4, Self::Htr, Self::Ltr, Self::Sqr1, Self::Sqr2, Self::Sqr3, Self::Jsqr, Self::Jdr1, Self::Jdr2, Self::Jdr3, Self::Jdr4, Self::Dr];
}
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 sr {
use super::FieldSpec;
pub const AWD: &FieldSpec = &super::REGISTERS[0].fields[0];
pub const EOC: &FieldSpec = &super::REGISTERS[0].fields[1];
pub const JEOC: &FieldSpec = &super::REGISTERS[0].fields[2];
pub const JSTRT: &FieldSpec = &super::REGISTERS[0].fields[3];
pub const STRT: &FieldSpec = &super::REGISTERS[0].fields[4];
pub const OVR: &FieldSpec = &super::REGISTERS[0].fields[5];
}
pub mod cr1 {
use super::FieldSpec;
pub const AWDCH: &FieldSpec = &super::REGISTERS[1].fields[0];
pub const EOCIE: &FieldSpec = &super::REGISTERS[1].fields[1];
pub const AWDIE: &FieldSpec = &super::REGISTERS[1].fields[2];
pub const JEOCIE: &FieldSpec = &super::REGISTERS[1].fields[3];
pub const SCAN: &FieldSpec = &super::REGISTERS[1].fields[4];
pub const AWDSGL: &FieldSpec = &super::REGISTERS[1].fields[5];
pub const JAUTO: &FieldSpec = &super::REGISTERS[1].fields[6];
pub const DISCEN: &FieldSpec = &super::REGISTERS[1].fields[7];
pub const JDISCEN: &FieldSpec = &super::REGISTERS[1].fields[8];
pub const DISCNUM: &FieldSpec = &super::REGISTERS[1].fields[9];
pub const JAWDEN: &FieldSpec = &super::REGISTERS[1].fields[10];
pub const AWDEN: &FieldSpec = &super::REGISTERS[1].fields[11];
pub const RES: &FieldSpec = &super::REGISTERS[1].fields[12];
pub const OVRIE: &FieldSpec = &super::REGISTERS[1].fields[13];
}
pub mod cr2 {
use super::FieldSpec;
pub const ADON: &FieldSpec = &super::REGISTERS[2].fields[0];
pub const CONT: &FieldSpec = &super::REGISTERS[2].fields[1];
pub const DMA: &FieldSpec = &super::REGISTERS[2].fields[2];
pub const DDS: &FieldSpec = &super::REGISTERS[2].fields[3];
pub const EOCS: &FieldSpec = &super::REGISTERS[2].fields[4];
pub const ALIGN: &FieldSpec = &super::REGISTERS[2].fields[5];
pub const JEXTSEL: &FieldSpec = &super::REGISTERS[2].fields[6];
pub const JEXTEN: &FieldSpec = &super::REGISTERS[2].fields[7];
pub const JSWSTART: &FieldSpec = &super::REGISTERS[2].fields[8];
pub const EXTSEL: &FieldSpec = &super::REGISTERS[2].fields[9];
pub const EXTEN: &FieldSpec = &super::REGISTERS[2].fields[10];
pub const SWSTART: &FieldSpec = &super::REGISTERS[2].fields[11];
}
pub mod smpr1 {
use super::FieldSpec;
pub const SMPX_X: &FieldSpec = &super::REGISTERS[3].fields[0];
}
pub mod smpr2 {
use super::FieldSpec;
pub const SMPX_X: &FieldSpec = &super::REGISTERS[4].fields[0];
}
pub mod jofr1 {
use super::FieldSpec;
pub const JOFFSET1: &FieldSpec = &super::REGISTERS[5].fields[0];
}
pub mod jofr2 {
use super::FieldSpec;
pub const JOFFSET2: &FieldSpec = &super::REGISTERS[6].fields[0];
}
pub mod jofr3 {
use super::FieldSpec;
pub const JOFFSET3: &FieldSpec = &super::REGISTERS[7].fields[0];
}
pub mod jofr4 {
use super::FieldSpec;
pub const JOFFSET4: &FieldSpec = &super::REGISTERS[8].fields[0];
}
pub mod htr {
use super::FieldSpec;
pub const HT: &FieldSpec = &super::REGISTERS[9].fields[0];
}
pub mod ltr {
use super::FieldSpec;
pub const LT: &FieldSpec = &super::REGISTERS[10].fields[0];
}
pub mod sqr1 {
use super::FieldSpec;
pub const SQ13: &FieldSpec = &super::REGISTERS[11].fields[0];
pub const SQ14: &FieldSpec = &super::REGISTERS[11].fields[1];
pub const SQ15: &FieldSpec = &super::REGISTERS[11].fields[2];
pub const SQ16: &FieldSpec = &super::REGISTERS[11].fields[3];
pub const L: &FieldSpec = &super::REGISTERS[11].fields[4];
}
pub mod sqr2 {
use super::FieldSpec;
pub const SQ7: &FieldSpec = &super::REGISTERS[12].fields[0];
pub const SQ8: &FieldSpec = &super::REGISTERS[12].fields[1];
pub const SQ9: &FieldSpec = &super::REGISTERS[12].fields[2];
pub const SQ10: &FieldSpec = &super::REGISTERS[12].fields[3];
pub const SQ11: &FieldSpec = &super::REGISTERS[12].fields[4];
pub const SQ12: &FieldSpec = &super::REGISTERS[12].fields[5];
}
pub mod sqr3 {
use super::FieldSpec;
pub const SQ1: &FieldSpec = &super::REGISTERS[13].fields[0];
pub const SQ2: &FieldSpec = &super::REGISTERS[13].fields[1];
pub const SQ3: &FieldSpec = &super::REGISTERS[13].fields[2];
pub const SQ4: &FieldSpec = &super::REGISTERS[13].fields[3];
pub const SQ5: &FieldSpec = &super::REGISTERS[13].fields[4];
pub const SQ6: &FieldSpec = &super::REGISTERS[13].fields[5];
}
pub mod jsqr {
use super::FieldSpec;
pub const JSQ1: &FieldSpec = &super::REGISTERS[14].fields[0];
pub const JSQ2: &FieldSpec = &super::REGISTERS[14].fields[1];
pub const JSQ3: &FieldSpec = &super::REGISTERS[14].fields[2];
pub const JSQ4: &FieldSpec = &super::REGISTERS[14].fields[3];
pub const JL: &FieldSpec = &super::REGISTERS[14].fields[4];
}
pub mod jdr1 {
use super::FieldSpec;
pub const JDATA: &FieldSpec = &super::REGISTERS[15].fields[0];
}
pub mod jdr2 {
use super::FieldSpec;
pub const JDATA: &FieldSpec = &super::REGISTERS[16].fields[0];
}
pub mod jdr3 {
use super::FieldSpec;
pub const JDATA: &FieldSpec = &super::REGISTERS[17].fields[0];
}
pub mod jdr4 {
use super::FieldSpec;
pub const JDATA: &FieldSpec = &super::REGISTERS[18].fields[0];
}
pub mod dr {
use super::FieldSpec;
pub const DATA: &FieldSpec = &super::REGISTERS[19].fields[0];
}
pub static REGISTERS: [RegisterSpec; 20] = [
RegisterSpec { name: "SR", offset: 0x0, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "AWD", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EOC", bit: 1, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JEOC", bit: 2, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JSTRT", bit: 3, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "STRT", bit: 4, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "OVR", bit: 5, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "CR1", offset: 0x4, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "AWDCH", bit: 0, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EOCIE", bit: 5, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "AWDIE", bit: 6, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JEOCIE", bit: 7, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SCAN", bit: 8, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "AWDSGL", bit: 9, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JAUTO", bit: 10, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DISCEN", bit: 11, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JDISCEN", bit: 12, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DISCNUM", bit: 13, width: 3, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JAWDEN", bit: 22, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "AWDEN", bit: 23, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "RES", bit: 24, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "OVRIE", bit: 26, width: 1, access: Access::ReadWrite, 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: "ADON", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CONT", bit: 1, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DMA", bit: 8, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DDS", bit: 9, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EOCS", bit: 10, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "ALIGN", bit: 11, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JEXTSEL", bit: 16, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JEXTEN", bit: 20, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JSWSTART", bit: 22, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EXTSEL", bit: 24, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "EXTEN", bit: 28, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SWSTART", bit: 30, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "SMPR1", offset: 0xC, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "SMPx_x", bit: 0, width: 32, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "SMPR2", offset: 0x10, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "SMPx_x", bit: 0, width: 32, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "JOFR1", offset: 0x14, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "JOFFSET1", bit: 0, width: 12, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "JOFR2", offset: 0x18, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "JOFFSET2", bit: 0, width: 12, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "JOFR3", offset: 0x1C, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "JOFFSET3", bit: 0, width: 12, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "JOFR4", offset: 0x20, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "JOFFSET4", bit: 0, width: 12, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "HTR", offset: 0x24, width: Width::W32, reset: 0x0000_0FFF, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "HT", bit: 0, width: 12, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "LTR", offset: 0x28, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "LT", bit: 0, width: 12, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "SQR1", offset: 0x2C, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "SQ13", bit: 0, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SQ14", bit: 5, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SQ15", bit: 10, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SQ16", bit: 15, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "L", bit: 20, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "SQR2", offset: 0x30, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "SQ7", bit: 0, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SQ8", bit: 5, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SQ9", bit: 10, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SQ10", bit: 15, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SQ11", bit: 20, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SQ12", bit: 25, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "SQR3", offset: 0x34, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "SQ1", bit: 0, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SQ2", bit: 5, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SQ3", bit: 10, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SQ4", bit: 15, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SQ5", bit: 20, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "SQ6", bit: 25, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "JSQR", offset: 0x38, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "JSQ1", bit: 0, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JSQ2", bit: 5, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JSQ3", bit: 10, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JSQ4", bit: 15, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "JL", bit: 20, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "JDR1", offset: 0x3C, width: Width::W32, reset: 0x0000_0000, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "JDATA", bit: 0, width: 16, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "JDR2", offset: 0x40, width: Width::W32, reset: 0x0000_0000, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "JDATA", bit: 0, width: 16, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "JDR3", offset: 0x44, width: Width::W32, reset: 0x0000_0000, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "JDATA", bit: 0, width: 16, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "JDR4", offset: 0x48, width: Width::W32, reset: 0x0000_0000, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "JDATA", bit: 0, width: 16, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "DR", offset: 0x4C, width: Width::W32, reset: 0x0000_0000, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "DATA", bit: 0, width: 16, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
] },
];