1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
pub mod usb;
pub mod usbphy;
pub use ral_registers::{modify_reg, read_reg, write_reg, RORegister, RWRegister};
use crate::Peripherals;
pub mod endpoint_control {
use crate::ral;
#[allow(non_snake_case)]
pub struct EndptCtrl<'a> {
pub ENDPTCTRL: &'a ral::RWRegister<u32>,
}
#[allow(non_snake_case)]
pub mod ENDPTCTRL {
pub use super::ral::usb::ENDPTCTRL1::*;
}
pub fn register(usb: &super::usb::Instance, endpoint: usize) -> EndptCtrl {
EndptCtrl {
ENDPTCTRL: match endpoint {
0 => &usb.ENDPTCTRL0,
1 => &usb.ENDPTCTRL1,
2 => &usb.ENDPTCTRL2,
3 => &usb.ENDPTCTRL3,
4 => &usb.ENDPTCTRL4,
5 => &usb.ENDPTCTRL5,
6 => &usb.ENDPTCTRL6,
7 => &usb.ENDPTCTRL7,
_ => unreachable!("ENDPTCTRL register {} doesn't exist", endpoint),
},
}
}
}
pub struct Instances {
pub usb: usb::Instance,
pub usbphy: usbphy::Instance,
}
pub fn instances<P: Peripherals>(peripherals: P) -> Instances {
let usb = usb::Instance {
addr: peripherals.usb().cast(),
};
let usbphy = usbphy::Instance {
addr: peripherals.usbphy().cast(),
};
Instances { usb, usbphy }
}