From 545ec4d21fa6b239cb7ee27f86a21baea9563f9b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 27 Jul 2017 21:28:16 -0600 Subject: [PATCH] Add more debugging --- xhcid/src/xhci/event.rs | 7 +++---- xhcid/src/xhci/mod.rs | 17 ++++++++++------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/xhcid/src/xhci/event.rs b/xhcid/src/xhci/event.rs index 309eed22..ae428281 100644 --- a/xhcid/src/xhci/event.rs +++ b/xhcid/src/xhci/event.rs @@ -6,9 +6,8 @@ use super::trb::Trb; #[repr(packed)] pub struct EventRingSte { pub address: Mmio, - pub size: Mmio, - _rsvd: Mmio, - _rsvd2: Mmio, + pub size: Mmio, + _rsvd: Mmio, } pub struct EventRing { @@ -24,7 +23,7 @@ impl EventRing { }; ring.ste.address.write(ring.trbs.physical() as u64); - ring.ste.size.write(ring.trbs.len() as u16); + ring.ste.size.write(ring.trbs.len() as u32); Ok(ring) } diff --git a/xhcid/src/xhci/mod.rs b/xhcid/src/xhci/mod.rs index 6b4d4a21..a9c4b3f4 100644 --- a/xhcid/src/xhci/mod.rs +++ b/xhcid/src/xhci/mod.rs @@ -96,37 +96,40 @@ impl Xhci { } pub fn init(&mut self, max_slots: u8) { - println!(" - Set enabled slots"); // Set enabled slots + println!(" - Set enabled slots to {}", max_slots); self.op.config.write(max_slots as u32); println!(" - Enabled Slots: {}", self.op.config.read() & 0xFF); - println!(" - Write DCBAAP"); // Set device context address array pointer + println!(" - Write DCBAAP"); self.op.dcbaap.write(self.devices.dcbaap()); - println!(" - Write CRCR"); // Set command ring control register + println!(" - Write CRCR"); self.op.crcr.write(self.cmd.crcr()); - println!(" - Write ERST"); // Set event ring segment table registers + println!(" - Interrupter 0: {:X}", self.run.ints.as_ptr() as usize); + println!(" - Write ERSTZ"); self.run.ints[0].erstsz.write(1); + println!(" - Write ERSTBA: {:X}", self.cmd.events.ste.physical() as u64); self.run.ints[0].erstba.write(self.cmd.events.ste.physical() as u64); + println!(" - Write ERDP"); self.run.ints[0].erdp.write(self.cmd.events.trbs.physical() as u64); - println!(" - Start"); // Set run/stop to 1 + println!(" - Start"); self.op.usb_cmd.writef(1, true); - println!(" - Wait for running"); // Wait until controller is running + println!(" - Wait for running"); while self.op.usb_sts.readf(1) { println!(" - Waiting for XHCI running"); } - println!(" - Ring doorbell"); // Ring command doorbell + println!(" - Ring doorbell"); self.dbs[0].write(0); println!(" - XHCI initialized");