use rigless::soc::{Access, FieldSpec, Layout, ReadAction, RegisterSpec, Width, WriteModify};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Register {
Opamp1Csr = 0,
Opamp1Otr = 1,
Opamp1Hsotr = 2,
Opamp2Csr = 3,
Opamp2Otr = 4,
Opamp2Hsotr = 5,
}
impl Register {
pub const ALL: [Self; 6] = [Self::Opamp1Csr, Self::Opamp1Otr, Self::Opamp1Hsotr, Self::Opamp2Csr, Self::Opamp2Otr, Self::Opamp2Hsotr];
}
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 opamp1_csr {
use super::FieldSpec;
pub const OPAEN: &FieldSpec = &super::REGISTERS[0].fields[0];
pub const FORCE_VP: &FieldSpec = &super::REGISTERS[0].fields[1];
pub const VP_SEL: &FieldSpec = &super::REGISTERS[0].fields[2];
pub const VM_SEL: &FieldSpec = &super::REGISTERS[0].fields[3];
pub const OPAHSM: &FieldSpec = &super::REGISTERS[0].fields[4];
pub const CALON: &FieldSpec = &super::REGISTERS[0].fields[5];
pub const CALSEL: &FieldSpec = &super::REGISTERS[0].fields[6];
pub const PGA_GAIN: &FieldSpec = &super::REGISTERS[0].fields[7];
pub const USERTRIM: &FieldSpec = &super::REGISTERS[0].fields[8];
pub const TSTREF: &FieldSpec = &super::REGISTERS[0].fields[9];
pub const CALOUT: &FieldSpec = &super::REGISTERS[0].fields[10];
}
pub mod opamp1_otr {
use super::FieldSpec;
pub const TRIMOFFSETN: &FieldSpec = &super::REGISTERS[1].fields[0];
pub const TRIMOFFSETP: &FieldSpec = &super::REGISTERS[1].fields[1];
}
pub mod opamp1_hsotr {
use super::FieldSpec;
pub const TRIMLPOFFSETN: &FieldSpec = &super::REGISTERS[2].fields[0];
pub const TRIMLPOFFSETP: &FieldSpec = &super::REGISTERS[2].fields[1];
}
pub mod opamp2_csr {
use super::FieldSpec;
pub const OPAEN: &FieldSpec = &super::REGISTERS[3].fields[0];
pub const FORCE_VP: &FieldSpec = &super::REGISTERS[3].fields[1];
pub const VM_SEL: &FieldSpec = &super::REGISTERS[3].fields[2];
pub const OPAHSM: &FieldSpec = &super::REGISTERS[3].fields[3];
pub const CALON: &FieldSpec = &super::REGISTERS[3].fields[4];
pub const CALSEL: &FieldSpec = &super::REGISTERS[3].fields[5];
pub const PGA_GAIN: &FieldSpec = &super::REGISTERS[3].fields[6];
pub const USERTRIM: &FieldSpec = &super::REGISTERS[3].fields[7];
pub const TSTREF: &FieldSpec = &super::REGISTERS[3].fields[8];
pub const CALOUT: &FieldSpec = &super::REGISTERS[3].fields[9];
}
pub mod opamp2_otr {
use super::FieldSpec;
pub const TRIMOFFSETN: &FieldSpec = &super::REGISTERS[4].fields[0];
pub const TRIMOFFSETP: &FieldSpec = &super::REGISTERS[4].fields[1];
}
pub mod opamp2_hsotr {
use super::FieldSpec;
pub const TRIMLPOFFSETN: &FieldSpec = &super::REGISTERS[5].fields[0];
pub const TRIMLPOFFSETP: &FieldSpec = &super::REGISTERS[5].fields[1];
}
pub static REGISTERS: [RegisterSpec; 6] = [
RegisterSpec { name: "OPAMP1_CSR", offset: 0x0, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "OPAEN", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "FORCE_VP", bit: 1, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "VP_SEL", bit: 2, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "VM_SEL", bit: 5, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "OPAHSM", bit: 8, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CALON", bit: 11, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CALSEL", bit: 12, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "PGA_GAIN", bit: 14, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "USERTRIM", bit: 18, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TSTREF", bit: 29, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CALOUT", bit: 30, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "OPAMP1_OTR", offset: 0x4, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "TRIMOFFSETN", bit: 0, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TRIMOFFSETP", bit: 8, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "OPAMP1_HSOTR", offset: 0x8, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "TRIMLPOFFSETN", bit: 0, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TRIMLPOFFSETP", bit: 8, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "OPAMP2_CSR", offset: 0x10, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "OPAEN", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "FORCE_VP", bit: 1, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "VM_SEL", bit: 5, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "OPAHSM", bit: 8, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CALON", bit: 11, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CALSEL", bit: 12, width: 2, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "PGA_GAIN", bit: 14, width: 4, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "USERTRIM", bit: 18, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TSTREF", bit: 29, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "CALOUT", bit: 30, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "OPAMP2_OTR", offset: 0x14, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "TRIMOFFSETN", bit: 0, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TRIMOFFSETP", bit: 8, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "OPAMP2_HSOTR", offset: 0x18, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "TRIMLPOFFSETN", bit: 0, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TRIMLPOFFSETP", bit: 8, width: 5, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
];