From 2258135cfccd3bd605e9c19c5e6659a005d6dc4a Mon Sep 17 00:00:00 2001 From: Drew Galbraith Date: Thu, 8 May 2025 00:34:40 -0700 Subject: [PATCH] [voyageurs] Zero-out command structures before passing them to XHCI. This fixes two XHCI driver issues. --- sys/voyageurs/xhci/device_slot.cpp | 1 + sys/voyageurs/xhci/xhci_driver.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/sys/voyageurs/xhci/device_slot.cpp b/sys/voyageurs/xhci/device_slot.cpp index e9fc3b4..1634f7c 100644 --- a/sys/voyageurs/xhci/device_slot.cpp +++ b/sys/voyageurs/xhci/device_slot.cpp @@ -31,6 +31,7 @@ XhciTrb DeviceSlot::CreateAddressDeviceCommand(uint8_t root_port, uint16_t max_packet_size) { // Initialize Slot Context and Endpoint 0 Context. input_context_->input.add_contexts = 0x3; + input_context_->input.drop_contexts = 0; // Set context_entries to 1. XHCI 4.3.3 input_context_->slot_context.route_speed_entries = (0x1 << 27) | route_string; input_context_->slot_context.latency_port_number = root_port << 16; diff --git a/sys/voyageurs/xhci/xhci_driver.cpp b/sys/voyageurs/xhci/xhci_driver.cpp index ce1a128..4eedce0 100644 --- a/sys/voyageurs/xhci/xhci_driver.cpp +++ b/sys/voyageurs/xhci/xhci_driver.cpp @@ -293,6 +293,8 @@ glcr::ErrorCode XhciDriver::InitiateEventRingSegmentTable() { event_ring_segment_table_[0].ring_segment_base = event_ring_.PhysicalAddress(); event_ring_segment_table_[0].ring_segment_size = ers_size & 0xFFFF; + event_ring_segment_table_[0].reserved1 = 0; + event_ring_segment_table_[0].reserved2 = 0; runtime_->interrupters[0].event_ring_dequeue_pointer = event_ring_.PhysicalAddress() | 0x8;