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;