blob: b39304f301247caa735f3ab48ae6326eacdea5c1 [file] [log] [blame]
// Generated register constants for smc_ctrl.
// This file is licensed under either of:
// Apache License, Version 2.0 (LICENSE-APACHE <http://www.apache.org/licenses/LICENSE-2.0>)
// MIT License (LICENSE-MIT <http://opensource.org/licenses/MIT>)
// Build date: 2023-02-22T01:20:33.682585
// Original reference file: hw/matcha/hw/top_matcha/ip/smc_ctrl/data/smc_ctrl.hjson
use kernel::common::registers::{
register_bitfields, register_structs, ReadWrite
};
use kernel::common::StaticRef;
// Register width
pub const SMC_CTRL_PARAM_REG_WIDTH: u32 = 32;
pub const SMC_CTRL_REGISTERS: StaticRef<SmcCtrlRegisters> =
unsafe { StaticRef::new(matcha_config::SMC_CTRL_BASE_ADDRESS as *const SmcCtrlRegisters) };
pub static mut SMC_CTRL: SmcCtrl = SmcCtrl::new(SMC_CTRL_REGISTERS /*, matcha_config::CHIP_PERIPH_FREQ*/);
register_structs! {
pub SmcCtrlRegisters {
// Register write enable for software controllable boot enable.
(0x0000 => pub(crate) smc_boot_en_regwen: ReadWrite<u32, SMC_BOOT_EN_REGWEN::Register>),
// Software controllable boot enable.
(0x0004 => pub(crate) smc_boot_en_ctrl: ReadWrite<u32, SMC_BOOT_EN_CTRL::Register>),
(0x0008 => @END),
}
}
register_bitfields![u32,
pub(crate) SMC_BOOT_EN_REGWEN [
REGWEN OFFSET(0) NUMBITS(1) []
],
pub(crate) SMC_BOOT_EN_CTRL [
EN_CTRL OFFSET(0) NUMBITS(1) []
]
];
// End generated register constants for smc_ctrl
pub struct SmcCtrl {
registers: StaticRef<SmcCtrlRegisters>,
}
pub trait SmcCtrlHal {
fn smc_ctrl_start(&self);
}
impl SmcCtrl {
pub const fn new(base: StaticRef<SmcCtrlRegisters>) -> SmcCtrl {
SmcCtrl {
registers: base,
}
}
}
impl SmcCtrlHal for SmcCtrl {
fn smc_ctrl_start(&self) {
self.registers.smc_boot_en_ctrl.modify(SMC_BOOT_EN_CTRL::EN_CTRL::SET);
}
}