diff --git a/xhcid/src/xhci/mod.rs b/xhcid/src/xhci/mod.rs index cb817769ae..a1b9229859 100644 --- a/xhcid/src/xhci/mod.rs +++ b/xhcid/src/xhci/mod.rs @@ -337,7 +337,7 @@ impl Xhci { println!(" - Enable slot"); - self.run.ints[0].erdp.write(self.cmd.erdp()); // TODO: ? + self.run.ints[0].erdp.write(self.cmd.erdp()); let slot = Self::enable_port_slot(&mut self.cmd, &mut self.dbs); diff --git a/xhcid/src/xhci/scheme.rs b/xhcid/src/xhci/scheme.rs index ee57ec76ea..324998af8f 100644 --- a/xhcid/src/xhci/scheme.rs +++ b/xhcid/src/xhci/scheme.rs @@ -792,7 +792,8 @@ impl SchemeMut for Xhci { Ok(buf.len()) } EndpointHandleTy::Status(ref mut offset) => { - let status = self.dev_ctx.contexts.get(port_num).ok_or(Error::new(EBADF))?.endpoints.get(endp_num as usize).ok_or(Error::new(EBADF))?.a.read() & ENDPOINT_CONTEXT_STATUS_MASK; + let ps = self.port_states.get(&port_num).ok_or(Error::new(EBADF))?; + let status = self.dev_ctx.contexts.get(ps.slot as usize).ok_or(Error::new(EBADF))?.endpoints.get(endp_num as usize).ok_or(Error::new(EBADF))?.a.read() & ENDPOINT_CONTEXT_STATUS_MASK; let string = match status { // TODO: Give this its own enum.