1#[derive(PartialEq, Eq, Debug)]
2#[cfg_attr(feature = "defmt", derive(defmt::Format))]
3pub struct InvalidCounterResetVal(pub(crate) ());
4
5pub fn enable_rom_scrubbing(scrub_rate: u32) -> Result<(), InvalidCounterResetVal> {
10 let syscfg = unsafe { va108xx::Sysconfig::steal() };
11 if scrub_rate == 0 || scrub_rate > u32::pow(2, 24) {
12 return Err(InvalidCounterResetVal(()));
13 }
14 syscfg.rom_scrub().write(|w| unsafe { w.bits(scrub_rate) });
15 Ok(())
16}
17
18pub fn disable_rom_scrubbing() {
19 let syscfg = unsafe { va108xx::Sysconfig::steal() };
20 syscfg.rom_scrub().write(|w| unsafe { w.bits(0) });
21}
22
23pub fn enable_ram_scrubbing(scrub_rate: u32) -> Result<(), InvalidCounterResetVal> {
28 let syscfg = unsafe { va108xx::Sysconfig::steal() };
29 if scrub_rate == 0 || scrub_rate > u32::pow(2, 24) {
30 return Err(InvalidCounterResetVal(()));
31 }
32 syscfg.ram_scrub().write(|w| unsafe { w.bits(scrub_rate) });
33 Ok(())
34}
35
36pub fn disable_ram_scrubbing() {
37 let syscfg = unsafe { va108xx::Sysconfig::steal() };
38 syscfg.ram_scrub().write(|w| unsafe { w.bits(0) });
39}
40
41pub use vorago_shared_hal::sysconfig::{
42 assert_peripheral_reset, disable_peripheral_clock, enable_peripheral_clock,
43};