libboard_zynq::dmac: enable mod, add channel_regs()
This commit is contained in:
parent
d7e8ba297b
commit
03da85dcea
|
@ -1 +1,3 @@
|
||||||
|
//! PrimeCell DMA Controller (PL330)
|
||||||
|
|
||||||
mod regs;
|
mod regs;
|
||||||
|
|
|
@ -93,12 +93,102 @@ pub struct RegisterBlock {
|
||||||
pub pcell_id_1: PCellId1,
|
pub pcell_id_1: PCellId1,
|
||||||
pub pcell_id_2: PCellId2,
|
pub pcell_id_2: PCellId2,
|
||||||
pub pcell_id_3: PCellId3,
|
pub pcell_id_3: PCellId3,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
register_at!(RegisterBlock, 0xF8004000, dmac0_ns);
|
register_at!(RegisterBlock, 0xF8004000, dmac0_ns);
|
||||||
register_at!(RegisterBlock, 0xF8003000, dmac0_s);
|
register_at!(RegisterBlock, 0xF8003000, dmac0_s);
|
||||||
|
|
||||||
|
impl RegisterBlock {
|
||||||
|
pub fn channel_regs(&mut self, channel: usize) -> Option<ChannelRegisters>
|
||||||
|
{
|
||||||
|
match channel {
|
||||||
|
0 => Some(ChannelRegisters {
|
||||||
|
ftc: &mut self.ftc[0],
|
||||||
|
cs: &mut self.cs0,
|
||||||
|
cpc: &mut self.cpc0,
|
||||||
|
sa: &mut self.sa0,
|
||||||
|
da: &mut self.da0,
|
||||||
|
cc: &mut self.cc0,
|
||||||
|
lc: [&mut self.lc0_0, &mut self.lc0_1],
|
||||||
|
}),
|
||||||
|
1 => Some(ChannelRegisters {
|
||||||
|
ftc: &mut self.ftc[1],
|
||||||
|
cs: &mut self.cs1,
|
||||||
|
cpc: &mut self.cpc1,
|
||||||
|
sa: &mut self.sa1,
|
||||||
|
da: &mut self.da1,
|
||||||
|
cc: &mut self.cc1,
|
||||||
|
lc: [&mut self.lc1_0, &mut self.lc1_1],
|
||||||
|
}),
|
||||||
|
2 => Some(ChannelRegisters {
|
||||||
|
ftc: &mut self.ftc[2],
|
||||||
|
cs: &mut self.cs2,
|
||||||
|
cpc: &mut self.cpc2,
|
||||||
|
sa: &mut self.sa2,
|
||||||
|
da: &mut self.da2,
|
||||||
|
cc: &mut self.cc2,
|
||||||
|
lc: [&mut self.lc2_0, &mut self.lc2_1],
|
||||||
|
}),
|
||||||
|
3 => Some(ChannelRegisters {
|
||||||
|
ftc: &mut self.ftc[3],
|
||||||
|
cs: &mut self.cs3,
|
||||||
|
cpc: &mut self.cpc3,
|
||||||
|
sa: &mut self.sa3,
|
||||||
|
da: &mut self.da3,
|
||||||
|
cc: &mut self.cc3,
|
||||||
|
lc: [&mut self.lc3_0, &mut self.lc3_1],
|
||||||
|
}),
|
||||||
|
4 => Some(ChannelRegisters {
|
||||||
|
ftc: &mut self.ftc[4],
|
||||||
|
cs: &mut self.cs4,
|
||||||
|
cpc: &mut self.cpc4,
|
||||||
|
sa: &mut self.sa4,
|
||||||
|
da: &mut self.da4,
|
||||||
|
cc: &mut self.cc4,
|
||||||
|
lc: [&mut self.lc4_0, &mut self.lc4_1],
|
||||||
|
}),
|
||||||
|
5 => Some(ChannelRegisters {
|
||||||
|
ftc: &mut self.ftc[5],
|
||||||
|
cs: &mut self.cs5,
|
||||||
|
cpc: &mut self.cpc5,
|
||||||
|
sa: &mut self.sa5,
|
||||||
|
da: &mut self.da5,
|
||||||
|
cc: &mut self.cc5,
|
||||||
|
lc: [&mut self.lc5_0, &mut self.lc5_1],
|
||||||
|
}),
|
||||||
|
6 => Some(ChannelRegisters {
|
||||||
|
ftc: &mut self.ftc[6],
|
||||||
|
cs: &mut self.cs6,
|
||||||
|
cpc: &mut self.cpc6,
|
||||||
|
sa: &mut self.sa6,
|
||||||
|
da: &mut self.da6,
|
||||||
|
cc: &mut self.cc6,
|
||||||
|
lc: [&mut self.lc6_0, &mut self.lc6_1],
|
||||||
|
}),
|
||||||
|
7 => Some(ChannelRegisters {
|
||||||
|
ftc: &mut self.ftc[7],
|
||||||
|
cs: &mut self.cs7,
|
||||||
|
cpc: &mut self.cpc7,
|
||||||
|
sa: &mut self.sa7,
|
||||||
|
da: &mut self.da7,
|
||||||
|
cc: &mut self.cc7,
|
||||||
|
lc: [&mut self.lc7_0, &mut self.lc7_1],
|
||||||
|
}),
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct ChannelRegisters<'a> {
|
||||||
|
ftc: &'a mut Ftc,
|
||||||
|
cs: &'a mut Cs,
|
||||||
|
cpc: &'a mut Cpc,
|
||||||
|
sa: &'a mut Sa,
|
||||||
|
da: &'a mut Da,
|
||||||
|
cc: &'a mut Cc,
|
||||||
|
lc: [&'a mut Lc; 2],
|
||||||
|
}
|
||||||
|
|
||||||
#[allow(unused)]
|
#[allow(unused)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
pub enum WakeUpEvent{
|
pub enum WakeUpEvent{
|
||||||
|
|
|
@ -11,3 +11,4 @@ pub mod axi_gp;
|
||||||
pub mod ddr;
|
pub mod ddr;
|
||||||
pub mod mpcore;
|
pub mod mpcore;
|
||||||
pub mod flash;
|
pub mod flash;
|
||||||
|
pub mod dmac;
|
||||||
|
|
Loading…
Reference in New Issue