X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FUSB%2FUHCI%2Fuhci.h;h=159bbabe7ea6f62d6e01c2d8a00fbe2f7cde7728;hb=533ed3e53b3b16da86c4e792eb52e0570e2cd21f;hp=40b589b1bed9fb83ebc11dbc08454660793e872f;hpb=0dd59ddf18248c362e351ae13c7b89bb15831ee4;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/USB/UHCI/uhci.h b/KernelLand/Modules/USB/UHCI/uhci.h index 40b589b1..159bbabe 100644 --- a/KernelLand/Modules/USB/UHCI/uhci.h +++ b/KernelLand/Modules/USB/UHCI/uhci.h @@ -85,7 +85,7 @@ struct sUHCI_TD { tUHCI_ExtraTDInfo *ExtraInfo; char bActive; // Allocated - char bComplete; // Job complete + Uint8 QueueIndex; // QH, 0-127 are interrupt, 128 undef, 129 Control, 130 Bulk char bFreePointer; // Free \a BufferPointer once done } _info; } __attribute__((aligned(16))); @@ -164,9 +164,31 @@ struct sUHCI_Controller tUSBHub *RootHub; - tUHCI_QH InterruptQH; - tUHCI_QH ControlQH; - tUHCI_QH BulkQH; + /** + * \brief Load in bytes on each interrupt queue + */ + int InterruptLoad[128]; + + tPAddr PhysTDQHPage; + struct + { + // 127 Interrupt Queue Heads + // - 4ms -> 256ms range of periods + tUHCI_QH InterruptQHs[0]; + tUHCI_QH InterruptQHs_256ms[64]; + tUHCI_QH InterruptQHs_128ms[32]; + tUHCI_QH InterruptQHs_64ms [16]; + tUHCI_QH InterruptQHs_32ms [ 8]; + tUHCI_QH InterruptQHs_16ms [ 4]; + tUHCI_QH InterruptQHs_8ms [ 2]; + tUHCI_QH InterruptQHs_4ms [ 1]; + tUHCI_QH _padding; + + tUHCI_QH ControlQH; + tUHCI_QH BulkQH; + + tUHCI_TD LocalTDPool[ (4096-(128+2)*sizeof(tUHCI_QH)) / sizeof(tUHCI_TD) ]; + } *TDQHPage; }; // === ENUMERATIONS ===