Skip to content

Commit

Permalink
Merge pull request rp-rs#406 from ithinuel/add-suspend-and-remote-wak…
Browse files Browse the repository at this point in the history
…eup-support

Add suspend, resume and remote wakeup support.
  • Loading branch information
jannic authored Jul 31, 2022
2 parents 6e325ba + 5dd095b commit b1fcb7e
Showing 1 changed file with 30 additions and 4 deletions.
34 changes: 30 additions & 4 deletions rp2040-hal/src/usb.rs
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,14 @@ impl UsbBus {
inner: Mutex::new(RefCell::new(Inner::new(ctrl_reg, ctrl_dpram))),
}
}

/// Generates a resume request on the bus.
pub fn remote_wakeup(&self) {
interrupt::free(|cs| {
let inner = self.inner.borrow(cs).borrow_mut();
inner.ctrl_reg.sie_ctrl.modify(|_, w| w.resume().set_bit());
});
}
}

impl UsbBusTrait for UsbBus {
Expand Down Expand Up @@ -434,6 +442,10 @@ impl UsbBusTrait for UsbBus {
.set_bit()
.bus_reset()
.set_bit()
.dev_resume_from_host()
.set_bit()
.dev_suspend()
.set_bit()
.setup_req()
.set_bit()
});
Expand Down Expand Up @@ -518,21 +530,35 @@ impl UsbBusTrait for UsbBus {
})
}
fn suspend(&self) {
todo!()
interrupt::free(|cs| {
let inner = self.inner.borrow(cs).borrow_mut();
inner
.ctrl_reg
.sie_status
.modify(|_, w| w.suspended().set_bit());
});
}
fn resume(&self) {
todo!()
interrupt::free(|cs| {
let inner = self.inner.borrow(cs).borrow_mut();
inner
.ctrl_reg
.sie_status
.modify(|_, w| w.resume().set_bit());
});
}
fn poll(&self) -> PollResult {
interrupt::free(|cs| {
let mut inner = self.inner.borrow(cs).borrow_mut();
// TODO: check for suspend request
// TODO: check for resume request

// check for bus reset
let sie_status = inner.ctrl_reg.sie_status.read();
if sie_status.bus_reset().bit_is_set() {
return PollResult::Reset;
} else if sie_status.suspended().bit_is_set() {
return PollResult::Suspend;
} else if sie_status.resume().bit_is_set() {
return PollResult::Resume;
}

let (mut ep_out, mut ep_in_complete, mut ep_setup): (u16, u16, u16) = (0, 0, 0);
Expand Down

0 comments on commit b1fcb7e

Please sign in to comment.