forked from M-Labs/zynq-rs
41 lines
825 B
Rust
41 lines
825 B
Rust
use libregister::*;
|
|
use crate::slcr;
|
|
mod regs;
|
|
|
|
pub struct DevC {
|
|
regs: &'static mut regs::RegisterBlock,
|
|
}
|
|
|
|
impl DevC {
|
|
pub fn new() -> Self {
|
|
DevC {
|
|
regs: regs::RegisterBlock::devc(),
|
|
}
|
|
}
|
|
|
|
pub fn enable(&mut self) {
|
|
self.regs.control.modify(|_, w| {
|
|
w.pcap_mode(true)
|
|
.pcap_pr(true)
|
|
})
|
|
}
|
|
pub fn disable(&mut self) {
|
|
self.regs.control.modify(|_, w| {
|
|
w.pcap_mode(false)
|
|
.pcap_pr(false)
|
|
})
|
|
}
|
|
|
|
pub fn program(&mut self) {
|
|
slcr::RegisterBlock::unlocked(|slcr| {
|
|
slcr.init_preload_fpga();
|
|
});
|
|
|
|
while !self.regs.int_sts.read().ixr_pcfg_done() {}
|
|
|
|
slcr::RegisterBlock::unlocked(|slcr| {
|
|
slcr.init_postload_fpga();
|
|
});
|
|
}
|
|
}
|