use crate::{
clock::ll::{ClockTree, SpiFunctionClockConfig, SpiInstance},
peripherals::HP_SYS_CLKRST,
};
impl SpiInstance {
pub(crate) fn enable_function_clock_impl(self, _clocks: &mut ClockTree, _en: bool) {
}
pub(crate) fn configure_function_clock_impl(
self,
_clocks: &mut ClockTree,
_old_config: Option<SpiFunctionClockConfig>,
new_config: SpiFunctionClockConfig,
) {
let source = match new_config {
SpiFunctionClockConfig::Xtal => 0,
SpiFunctionClockConfig::RcFast => 1,
SpiFunctionClockConfig::Spll => 4,
};
let div_num = match new_config {
SpiFunctionClockConfig::Xtal => 0,
SpiFunctionClockConfig::RcFast => 0,
SpiFunctionClockConfig::Spll => 2,
};
match self {
Self::Spi2 => {
HP_SYS_CLKRST::regs()
.peri_clk_ctrl116()
.modify(|_, w| unsafe {
w.gpspi2_clk_src_sel().bits(source);
w.gpspi2_hs_clk_div_num().bits(div_num)
});
}
Self::Spi3 => {
HP_SYS_CLKRST::regs()
.peri_clk_ctrl116()
.modify(|_, w| unsafe { w.gpspi3_clk_src_sel().bits(source) });
HP_SYS_CLKRST::regs()
.peri_clk_ctrl117()
.modify(|_, w| unsafe { w.gpspi3_hs_clk_div_num().bits(div_num) });
}
}
}
}