Skip to content

Commit

Permalink
Add more debugging
Browse files Browse the repository at this point in the history
  • Loading branch information
jackpot51 committed Jul 28, 2017
1 parent 84a8a6c commit 545ec4d
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 11 deletions.
7 changes: 3 additions & 4 deletions xhcid/src/xhci/event.rs
Expand Up @@ -6,9 +6,8 @@ use super::trb::Trb;
#[repr(packed)]
pub struct EventRingSte {
pub address: Mmio<u64>,
pub size: Mmio<u16>,
_rsvd: Mmio<u16>,
_rsvd2: Mmio<u32>,
pub size: Mmio<u32>,
_rsvd: Mmio<u32>,
}

pub struct EventRing {
Expand All @@ -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)
}
Expand Down
17 changes: 10 additions & 7 deletions xhcid/src/xhci/mod.rs
Expand Up @@ -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");
Expand Down

0 comments on commit 545ec4d

Please sign in to comment.