mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 19:27:35 +00:00
Kernel/USB: Rework UHCI interrupt transfer schedule
This reworks the way the UHCI schedule is set up to handle interrupt transfers, creating 11 queue heads each assigned a different period/latency, so that interrupt transfers can be linked into the schedule with their specified period more easily.
This commit is contained in:
parent
4a3a0ac19e
commit
550b3c7330
2 changed files with 28 additions and 11 deletions
|
@ -7,9 +7,9 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <AK/Platform.h>
|
||||
|
||||
#include <AK/Array.h>
|
||||
#include <AK/NonnullOwnPtr.h>
|
||||
#include <AK/Platform.h>
|
||||
#include <Kernel/Arch/x86/IO.h>
|
||||
#include <Kernel/Bus/PCI/Device.h>
|
||||
#include <Kernel/Bus/USB/UHCI/UHCIDescriptorPool.h>
|
||||
|
@ -31,6 +31,7 @@ class UHCIController final
|
|||
|
||||
static constexpr u8 MAXIMUM_NUMBER_OF_TDS = 128; // Upper pool limit. This consumes the second page we have allocated
|
||||
static constexpr u8 MAXIMUM_NUMBER_OF_QHS = 64;
|
||||
static constexpr u8 NUMBER_OF_INTERRUPT_QHS = 11;
|
||||
|
||||
public:
|
||||
static constexpr u8 NUMBER_OF_ROOT_PORTS = 2;
|
||||
|
@ -102,7 +103,7 @@ private:
|
|||
Vector<TransferDescriptor*> m_iso_td_list;
|
||||
|
||||
QueueHead* m_schedule_begin_anchor;
|
||||
QueueHead* m_interrupt_qh_anchor;
|
||||
Array<QueueHead*, NUMBER_OF_INTERRUPT_QHS> m_interrupt_qh_anchor_arr;
|
||||
QueueHead* m_ls_control_qh_anchor;
|
||||
QueueHead* m_fs_control_qh_anchor;
|
||||
// Always final queue in the schedule, may loop back to previous QH for bandwidth
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue