|
XenevaOS
|


Go to the source code of this file.
Classes | |
| struct | _xhci_cap_regs_ |
| struct | _xhci_op_regs_ |
| struct | _xhci_intr_reg_ |
| struct | _xhci_runtime_regs_ |
| struct | _xhci_doorbell_ |
| struct | _xhci_trb_ |
| struct | _xhci_ex_cap_ |
| struct | _xhci_port_reg_ |
| struct | _endp_ |
| struct | _xhci_slot_ |
| struct | _xhci_event_trb_ |
| struct | _xhci_link_trb_ |
| struct | _xhci_setup_trb_t_ |
| struct | _xhci_data_trb_ |
| struct | _xhci_status_trb_ |
| struct | _xhci_ex_cap_protocol_ |
| struct | __xhci_legacy_cap__ |
| struct | _xhci_noop_trb_ |
| struct | _xhci_erst_ |
| struct | _xhci_input_ctx_ |
| struct | _xhci_dev_ |
| struct | _usb_hotplug_ |
| struct | USB_REQUEST_PACKET |
Macros | |
| #define | XHCI_VENDOR_INTEL 0x8086 |
| #define | XHCI_VENDOR_AMD 0x1022 |
| #define | XHCI_VENDOR_ASMEDIA 0x1B21 |
| #define | XHCI_VENDOR_LINUX_FOUNDATION 0x1D6A |
| #define | XHCI_VENDOR_NEC 0x1033 |
| #define | XHCI_VENDOR_NVIDIA 0x10DE |
| #define | XHCI_VENDOR_FRESCO 0x1E31 |
| #define | XHCI_VENDOR_VIA 0x1106 |
| #define | XHCI_USB_CMD_INTE (1<<2) |
| #define | XHCI_USB_CMD_HSEE (1<<3) |
| #define | XHCI_USB_STS_HCH (1<<0) |
| #define | XHCI_USB_STS_HSE (1<<2) |
| #define | XHCI_USB_STS_EINT (1<<3) |
| #define | XHCI_USB_STS_PCD (1<<4) |
| #define | XHCI_USB_STS_SSS (1<<8) |
| #define | XHCI_USB_STS_RSS (1<<9) |
| #define | XHCI_USB_STS_SRE (1<<10) |
| #define | XHCI_USB_STS_CNR (1<<11) |
| #define | XHCI_USB_STS_HCE (1<<12) |
| #define | XHCI_USB_CFG_MXSLOT_ENABLE 0xFF |
| #define | XHCI_USB_CFG_U3_EN (1<<8) |
| #define | XHCI_USB_CFG_CINFO_EN (1 << 9) |
| #define | XHCI_USB_CCR_RCS (1<<0) |
| #define | XHCI_USB_CCR_CS (1<<1) |
| #define | XHCI_USB_CCR_CA (1<<2) |
| #define | XHCI_USB_CCR_CRR (1<<3) |
| #define | XHCI_USB_CCR_PTR_LO 0xFFFFFFC0 |
| #define | XCHI_USB_CCR_PTR 0xFFFFFFFFFFFFFFC0 |
| #define | XHCI_PORTSC_CCS (1<<0) |
| #define | XHCI_PORTSC_PED (1<<1) |
| #define | XHCI_PORTSC_OCA (1<<3) |
| #define | XHCI_PORTSC_PR (1<<4) |
| #define | XHCI_PORTSC_PP (1<<9) |
| #define | XHCI_PORTSC_CSC (1<<17) |
| #define | XHCI_PORTSC_PEC (1<<18) |
| #define | XHCI_PORTSC_PRC (1<<21) |
| #define | XHCI_PORTSC_WPR (1<<31) |
| #define | XHCI_INT_ERDP_BUSY (1<<3) |
| #define | XHCI_TRB_SIZE 16 |
| #define | XHCI_EVENT_RING_SEG_TBL_ENTRY_SIZE 16 |
| #define | XHCI_TRB_ENT 0x200000000 |
| #define | XHCI_TRB_ISP 0x400000000 |
| #define | XHCI_TRB_IOC 0x2000000000 |
| #define | XHCI_TRB_IDT 0x4000000000 |
| #define | XHCI_TRB_TRT(x) ((uint64_t)x << 48) |
| #define | XHCI_TRB_DIR_IN ((uint64_t)1 << 48) |
| #define | XHCI_DOORBELL_ENDPOINT_0 1 |
| #define | XHCI_DOORBELL_ENDPOINT_1 2 |
| #define | USB_SPEED_RESERVED 0 |
| #define | USB_FULL_SPEED 1 |
| #define | USB_LOW_SPEED 2 |
| #define | USB_HIGH_SPEED 3 |
| #define | USB_SUPER_SPEED 4 |
| #define | USB_SUPER_SPEED_PLUS 5 |
| #define | TRB_TRANSFER_NORMAL 1 |
| #define | TRB_TRANSFER_SETUP_STAGE 2 |
| #define | TRB_TRANSFER_DATA_STAGE 3 |
| #define | TRB_TRANSFER_STATUS_STAGE 4 |
| #define | TRB_TRANSFER_ISOCH 5 |
| #define | TRB_TRANSFER_LINK 6 |
| #define | TRB_TRANSFER_EVENT_DATA 7 |
| #define | TRB_TRANSFER_NO_OP 8 |
| #define | TRB_CMD_ENABLE_SLOT 9 |
| #define | TRB_CMD_DISABLE_SLOT 10 |
| #define | TRB_CMD_ADDRESS_DEV 11 |
| #define | TRB_CMD_CONFIG_ENDPOINT 12 |
| #define | TRB_CMD_EVALUATE_CTX 13 |
| #define | TRB_CMD_RESET_ENDPOINT 14 |
| #define | TRB_CMD_STOP_ENDPOINT 15 |
| #define | TRB_CMD_SET_TR_DEQ_POINTER 16 |
| #define | TRB_CMD_RESET_DEV 17 |
| #define | TRB_CMD_FORCE_EVENT 18 |
| #define | TRB_CMD_NEGOTIATE_BANDWIDTH 19 |
| #define | TRB_CMD_SET_LATENCY_TOLERANCE_VALUE 20 |
| #define | TRB_CMD_GET_PORT_BANDWIDTH 21 |
| #define | TRB_CMD_FORCE_HEADER 22 |
| #define | TRB_CMD_NO_OP 23 |
| #define | TRB_CMD_GET_EXT_PROPERTY 24 |
| #define | TRB_CMD_SET_EXT_PROPERTY 25 |
| #define | TRB_EVENT_TRANSFER 32 |
| #define | TRB_EVENT_CMD_COMPLETION 33 |
| #define | TRB_EVENT_PORT_STATUS_CHANGE 34 |
| #define | TRB_EVENT_BANDWIDTH_REQUEST 35 |
| #define | TRB_EVENT_DOORBELL 36 |
| #define | TRB_EVENT_HOST_CONTROLLER 37 |
| #define | TRB_EVENT_DEVICE_NOTIFICATION 38 |
| #define | TRB_EVENT_MFINDEX 39 |
| #define | CTL_TRANSFER_TRT_NO_DATA 0 |
| #define | CTL_TRANSFER_TRT_RESV 1 |
| #define | CTL_TRANSFER_TRT_OUT_DATA 2 |
| #define | CTL_TRANSFER_TRT_IN_DATA 3 |
| #define | USB_SLOT_CTX_DWORD0(entries, hub, multi_tt, speed, route_string) (((entries & 0x1F) << 27) | ((hub & 1) << 26) | ((multi_tt & 1) << 25) | ((speed & 0xF) << 20) | (route_string & ((1 << 20) - 1))) |
| #define | USB_SLOT_CTX_DWORD1(num_ports, root_hub_port, max_exit_latency) (((num_ports & 0xFF) << 24) | ((root_hub_port & 0xFF) << 16) | (max_exit_latency & 0xFFFF)) |
| #define | USB_ENDPOINT_CTX_DWORD0(max_esit_high, interval, lsa, max_p_streams, mult, ep_state) (((max_esit_high & 0xFF) << 24) | ((interval & 0xFF) << 16) | ((lsa & 1) << 15) | ((max_p_streams & 0x1F) << 10) | ((mult & 0x3) << 8) | (ep_state & 0x7)) |
| #define | USB_ENDPOINT_CTX_DWORD1(max_packet_size, max_burst_size, hid, ep_type, cerr) (((max_packet_size & 0xFFFF) << 16) | ((max_burst_size & 0xFF) << 8) | ((hid & 1) << 7) | ((ep_type & 0x7) << 3) | ((cerr & 0x3) << 1)) |
| #define | USB_ENDPOINT_CTX_DWORD2(trdp, dcs) ((trdp & 0xFFFFFFFF) | (dcs & 1)) |
| #define | USB_ENDPOINT_CTX_DWORD3(trdp) ((trdp >> 32) & 0xFFFFFFFF) |
| #define | USB_ENDPOINT_CTX_DWORD4(max_esit_lo, average_trb_len) (((max_esit_lo & 0xFFFF) << 16) | (average_trb_len & 0xFFFF)) |
| #define CTL_TRANSFER_TRT_IN_DATA 3 |
| #define CTL_TRANSFER_TRT_NO_DATA 0 |
| #define CTL_TRANSFER_TRT_OUT_DATA 2 |
| #define CTL_TRANSFER_TRT_RESV 1 |
| #define TRB_CMD_ADDRESS_DEV 11 |
| #define TRB_CMD_CONFIG_ENDPOINT 12 |
| #define TRB_CMD_DISABLE_SLOT 10 |
| #define TRB_CMD_ENABLE_SLOT 9 |
| #define TRB_CMD_EVALUATE_CTX 13 |
| #define TRB_CMD_FORCE_EVENT 18 |
| #define TRB_CMD_FORCE_HEADER 22 |
| #define TRB_CMD_GET_EXT_PROPERTY 24 |
| #define TRB_CMD_GET_PORT_BANDWIDTH 21 |
| #define TRB_CMD_NEGOTIATE_BANDWIDTH 19 |
| #define TRB_CMD_NO_OP 23 |
| #define TRB_CMD_RESET_DEV 17 |
| #define TRB_CMD_RESET_ENDPOINT 14 |
| #define TRB_CMD_SET_EXT_PROPERTY 25 |
| #define TRB_CMD_SET_LATENCY_TOLERANCE_VALUE 20 |
| #define TRB_CMD_SET_TR_DEQ_POINTER 16 |
| #define TRB_CMD_STOP_ENDPOINT 15 |
| #define TRB_EVENT_BANDWIDTH_REQUEST 35 |
| #define TRB_EVENT_CMD_COMPLETION 33 |
| #define TRB_EVENT_DEVICE_NOTIFICATION 38 |
| #define TRB_EVENT_DOORBELL 36 |
| #define TRB_EVENT_HOST_CONTROLLER 37 |
| #define TRB_EVENT_MFINDEX 39 |
| #define TRB_EVENT_PORT_STATUS_CHANGE 34 |
| #define TRB_EVENT_TRANSFER 32 |
| #define TRB_TRANSFER_DATA_STAGE 3 |
| #define TRB_TRANSFER_EVENT_DATA 7 |
| #define TRB_TRANSFER_ISOCH 5 |
| #define TRB_TRANSFER_LINK 6 |
| #define TRB_TRANSFER_NO_OP 8 |
| #define TRB_TRANSFER_NORMAL 1 |
| #define TRB_TRANSFER_SETUP_STAGE 2 |
| #define TRB_TRANSFER_STATUS_STAGE 4 |
| #define USB_ENDPOINT_CTX_DWORD0 | ( | max_esit_high, | |
| interval, | |||
| lsa, | |||
| max_p_streams, | |||
| mult, | |||
| ep_state | |||
| ) | (((max_esit_high & 0xFF) << 24) | ((interval & 0xFF) << 16) | ((lsa & 1) << 15) | ((max_p_streams & 0x1F) << 10) | ((mult & 0x3) << 8) | (ep_state & 0x7)) |
| #define USB_ENDPOINT_CTX_DWORD1 | ( | max_packet_size, | |
| max_burst_size, | |||
| hid, | |||
| ep_type, | |||
| cerr | |||
| ) | (((max_packet_size & 0xFFFF) << 16) | ((max_burst_size & 0xFF) << 8) | ((hid & 1) << 7) | ((ep_type & 0x7) << 3) | ((cerr & 0x3) << 1)) |
| #define USB_ENDPOINT_CTX_DWORD2 | ( | trdp, | |
| dcs | |||
| ) | ((trdp & 0xFFFFFFFF) | (dcs & 1)) |
| #define USB_ENDPOINT_CTX_DWORD3 | ( | trdp | ) | ((trdp >> 32) & 0xFFFFFFFF) |
| #define USB_ENDPOINT_CTX_DWORD4 | ( | max_esit_lo, | |
| average_trb_len | |||
| ) | (((max_esit_lo & 0xFFFF) << 16) | (average_trb_len & 0xFFFF)) |
| #define USB_FULL_SPEED 1 |
| #define USB_HIGH_SPEED 3 |
| #define USB_LOW_SPEED 2 |
| #define USB_SLOT_CTX_DWORD0 | ( | entries, | |
| hub, | |||
| multi_tt, | |||
| speed, | |||
| route_string | |||
| ) | (((entries & 0x1F) << 27) | ((hub & 1) << 26) | ((multi_tt & 1) << 25) | ((speed & 0xF) << 20) | (route_string & ((1 << 20) - 1))) |
| #define USB_SLOT_CTX_DWORD1 | ( | num_ports, | |
| root_hub_port, | |||
| max_exit_latency | |||
| ) | (((num_ports & 0xFF) << 24) | ((root_hub_port & 0xFF) << 16) | (max_exit_latency & 0xFFFF)) |
| #define USB_SPEED_RESERVED 0 |
| #define USB_SUPER_SPEED 4 |
| #define USB_SUPER_SPEED_PLUS 5 |
| #define XCHI_USB_CCR_PTR 0xFFFFFFFFFFFFFFC0 |
| #define XHCI_DOORBELL_ENDPOINT_0 1 |
| #define XHCI_DOORBELL_ENDPOINT_1 2 |
| #define XHCI_EVENT_RING_SEG_TBL_ENTRY_SIZE 16 |
| #define XHCI_INT_ERDP_BUSY (1<<3) |
| #define XHCI_PORTSC_CCS (1<<0) |
| #define XHCI_PORTSC_CSC (1<<17) |
| #define XHCI_PORTSC_OCA (1<<3) |
| #define XHCI_PORTSC_PEC (1<<18) |
| #define XHCI_PORTSC_PED (1<<1) |
| #define XHCI_PORTSC_PP (1<<9) |
| #define XHCI_PORTSC_PR (1<<4) |
| #define XHCI_PORTSC_PRC (1<<21) |
| #define XHCI_PORTSC_WPR (1<<31) |
| #define XHCI_TRB_DIR_IN ((uint64_t)1 << 48) |
| #define XHCI_TRB_ENT 0x200000000 |
| #define XHCI_TRB_IDT 0x4000000000 |
| #define XHCI_TRB_IOC 0x2000000000 |
| #define XHCI_TRB_ISP 0x400000000 |
| #define XHCI_TRB_SIZE 16 |
| #define XHCI_TRB_TRT | ( | x | ) | ((uint64_t)x << 48) |
| #define XHCI_USB_CCR_CA (1<<2) |
| #define XHCI_USB_CCR_CRR (1<<3) |
| #define XHCI_USB_CCR_CS (1<<1) |
| #define XHCI_USB_CCR_PTR_LO 0xFFFFFFC0 |
| #define XHCI_USB_CCR_RCS (1<<0) |
| #define XHCI_USB_CFG_CINFO_EN (1 << 9) |
| #define XHCI_USB_CFG_MXSLOT_ENABLE 0xFF |
| #define XHCI_USB_CFG_U3_EN (1<<8) |
| #define XHCI_USB_CMD_HSEE (1<<3) |
| #define XHCI_USB_CMD_INTE (1<<2) |
| #define XHCI_USB_STS_CNR (1<<11) |
| #define XHCI_USB_STS_EINT (1<<3) |
| #define XHCI_USB_STS_HCE (1<<12) |
| #define XHCI_USB_STS_HCH (1<<0) |
| #define XHCI_USB_STS_HSE (1<<2) |
| #define XHCI_USB_STS_PCD (1<<4) |
| #define XHCI_USB_STS_RSS (1<<9) |
| #define XHCI_USB_STS_SRE (1<<10) |
| #define XHCI_USB_STS_SSS (1<<8) |
| #define XHCI_VENDOR_AMD 0x1022 |
| #define XHCI_VENDOR_ASMEDIA 0x1B21 |
| #define XHCI_VENDOR_FRESCO 0x1E31 |
| #define XHCI_VENDOR_INTEL 0x8086 |
BSD 2-Clause License
Copyright (c) 2022-2024, Manas Kamal Choudhury All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
| #define XHCI_VENDOR_LINUX_FOUNDATION 0x1D6A |
| #define XHCI_VENDOR_NEC 0x1033 |
| #define XHCI_VENDOR_NVIDIA 0x10DE |
| #define XHCI_VENDOR_VIA 0x1106 |
| typedef void(* endpoint_callback) (void *dev, void *slot, void *Endp) |
| typedef struct _usb_hotplug_ USBHotPlug |
| typedef struct _xhci_cap_regs_ xhci_cap_regs_t |
| typedef struct _xhci_data_trb_ xhci_data_trb_t |
| typedef struct _xhci_doorbell_ xhci_doorbell_regs_t |
| typedef struct _xhci_erst_ xhci_erst_t |
| typedef struct _xhci_event_trb_ xhci_event_trb_t |
| typedef struct _xhci_ex_cap_protocol_ xhci_ex_cap_protocol_t |
| typedef struct _xhci_ex_cap_ xhci_ext_cap_t |
| typedef struct _xhci_intr_reg_ xhci_interrupter_reg_t |
| typedef struct __xhci_legacy_cap__ xhci_legacy_cap_t |
| typedef struct _xhci_link_trb_ xhci_link_trb_t |
| typedef struct _xhci_noop_trb_ xhci_noop_cmd_trb_t |
| typedef struct _xhci_op_regs_ xhci_op_regs_t |
| typedef struct _xhci_port_reg_ xhci_port_regs_t |
| typedef struct _xhci_runtime_regs_ xhci_runtime_regs_t |
| typedef struct _xhci_setup_trb_t_ xhci_setup_trb_t |
| typedef struct _xhci_status_trb_ xhci_status_trb_t |
| typedef struct _xhci_trb_ xhci_trb_t |
| typedef struct _xhci_dev_ XHCIDevice |
| typedef struct _endp_ XHCIEndpoint |
| typedef struct _xhci_input_ctx_ XHCIInputContext |
| typedef struct _xhci_slot_ XHCISlot |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
BSD 2-Clause License
Copyright (c) 2022-2025, Manas Kamal Choudhury All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
BSD 2-Clause License
Copyright (c) 2022-2025, Manas Kamal Choudhury All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
extern |