diff options
| author | salmonik <salmonik@tuta.io> | 2026-08-17 14:53:52 +0200 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-08-17 14:53:52 +0200 |
| commit | be868a43185826b02bf6d091019bb779678525bb (patch) | |
| tree | 586988c15f1d700b1621c7f0208584b30878a56c /rsnix/src/cursor.rs | |
| parent | v0.5.10: change em-dashes to dashes (diff) | |
| download | rs-dos-be868a43185826b02bf6d091019bb779678525bb.tar.gz rs-dos-be868a43185826b02bf6d091019bb779678525bb.zip | |
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
Diffstat (limited to '')
| -rw-r--r-- | rsnix/src/cursor.rs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/rsnix/src/cursor.rs b/rsnix/src/cursor.rs index d9d97bc..31b919e 100644 --- a/rsnix/src/cursor.rs +++ b/rsnix/src/cursor.rs | |||
| @@ -50,7 +50,11 @@ fn forward_target() -> Option<usize> { | |||
| 50 | 50 | ||
| 51 | fn task_main() { | 51 | fn task_main() { |
| 52 | loop { | 52 | loop { |
| 53 | while let Some(ev) = crate::usb::poll_mouse().or_else(crate::ps2::try_poll_mouse) { | 53 | while let Some(ev) = crate::usb::poll_mouse() |
| 54 | .or_else(crate::ehci::poll_mouse) | ||
| 55 | .or_else(crate::uhci::poll_mouse) | ||
| 56 | .or_else(crate::ps2::try_poll_mouse) | ||
| 57 | { | ||
| 54 | crate::gop::cursor_move(ev.dx, ev.dy); | 58 | crate::gop::cursor_move(ev.dx, ev.dy); |
| 55 | crate::gop::cursor_set_buttons(btn_bits(&ev)); | 59 | crate::gop::cursor_set_buttons(btn_bits(&ev)); |
| 56 | if let Some(id) = forward_target() | 60 | if let Some(id) = forward_target() |
