Kernel: Refactor some xHCI code and add new definitions

This commit is contained in:
2024-07-12 11:25:24 +03:00
parent 62003d96f3
commit 240684bc1f
4 changed files with 50 additions and 23 deletions

View File

@@ -199,6 +199,27 @@ namespace Kernel::XHCI
uint32_t dword3;
} raw;
struct
{
uint64_t data_buffer_pointer : 64;
uint32_t trb_transfer_length : 17;
uint32_t td_size : 5;
uint32_t interrupt_target : 10;
uint32_t cycle_bit : 1;
uint32_t evaluate_next_trb : 1;
uint32_t interrupt_on_short_packet : 1;
uint32_t no_snoop : 1;
uint32_t chain_bit : 1;
uint32_t interrupt_on_completion : 1;
uint32_t immediate_data : 1;
uint32_t : 2;
uint32_t block_event_interrupt : 1;
uint32_t trb_type : 6;
uint32_t : 16;
} normal;
struct
{
uint32_t bmRequestType : 8;
@@ -340,6 +361,18 @@ namespace Kernel::XHCI
uint32_t slot_id : 8;
} address_device_command;
struct
{
uint64_t input_context_pointer : 64;
uint32_t : 32;
uint32_t cycle_bit : 1;
uint32_t : 8;
uint32_t deconfigure : 1;
uint32_t trb_type : 6;
uint32_t : 8;
uint32_t slot_id : 8;
} configure_endpoint_command;
struct
{
uint64_t ring_segment_ponter : 64;
@@ -444,7 +477,7 @@ namespace Kernel::XHCI
uint64_t tr_dequeue_pointer;
uint32_t average_trb_length : 16;
uint32_t max_esit_paylod_lo : 16;
uint32_t max_esit_payload_lo : 16;
uint32_t : 32;
uint32_t : 32;

View File

@@ -18,6 +18,7 @@ namespace Kernel
struct Endpoint
{
BAN::UniqPtr<DMARegion> transfer_ring;
uint32_t max_packet_size { 0 };
uint32_t dequeue_index { 0 };
uint32_t enqueue_index { 0 };
bool cycle_bit { 1 };
@@ -57,8 +58,6 @@ namespace Kernel
Mutex m_mutex;
uint32_t m_max_packet_size { 0 };
BAN::UniqPtr<DMARegion> m_input_context;
BAN::UniqPtr<DMARegion> m_output_context;