From be868a43185826b02bf6d091019bb779678525bb Mon Sep 17 00:00:00 2001 From: salmonik Date: Mon, 17 Aug 2026 14:53:52 +0200 Subject: USB2/1.1 (EHCI/UHCI) drivers + real-hardware bring-up hardening - Add polled EHCI (USB2) and UHCI (USB1.1) host-controller drivers with HID boot mouse support, wired into cursor polling and the 'usb' shell cmd - Add USB Legacy ownership handoff (claim_usb_legacy) plus config_write_byte - Harden boot: verify the PIT/timer ticks before shell entry, EOI stray interrupts in the LAPIC to stop interrupt storms, bound PS/2 controller waits, and INTx-disable AHCI (polled driver) - Add boot stage markers, klog screen echo, and QR lock; scheduler mark_shell_running; NO_USB stopgap to keep BIOS USB-Legacy input alive - alloc_pages_above for DMA buffers that must avoid low conventional memory - Expand DEBUG_NOTES with EHCI/QEMU bring-up findings --- shell/src/lib.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'shell/src/lib.rs') diff --git a/shell/src/lib.rs b/shell/src/lib.rs index a54f338..bb048d8 100644 --- a/shell/src/lib.rs +++ b/shell/src/lib.rs @@ -2239,9 +2239,10 @@ fn cmd_pci(p: &Parsed) { } fn cmd_usb(p: &Parsed) { - // `usb rescan` clears the failed-port mask so discovery retries. + // `usb rescan` clears the failed-port masks so discovery retries. if p.args.first().is_some_and(|w| w == "rescan") { rsnix::usb::rescan(); + rsnix::ehci::rescan(); let mut pipe = Pipeline::new(&p.filters, &p.output); let _ = pipe.line("usb: rescanning ports"); pipe.end(); @@ -2262,6 +2263,14 @@ fn cmd_usb(p: &Parsed) { } } pipe.end(); + // UHCI (USB1.1 companion) — full/low-speed keyboards and mice. + let mut pipe = Pipeline::new(&p.filters, &p.output); + for l in rsnix::uhci::diagnose().lines() { + if !pipe.line(l) { + break; + } + } + pipe.end(); } fn cmd_poweroff() -> ! { -- cgit v1.2.3