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