XenevaOS
Loading...
Searching...
No Matches
Macros | Functions
xhci_cmd.h File Reference
#include <stdint.h>
#include "usb3.h"
Include dependency graph for xhci_cmd.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#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
 

Functions

void XHCIEnableSlot (USBDevice *dev, uint8_t slot_type)
 
void XHCIDisableSlot (USBDevice *dev, uint8_t slot_num)
 
void XHCISendNoopCmd (USBDevice *dev)
 
void XHCICreateSetupTRB (XHCISlot *slot, uint8_t rType, uint8_t bRequest, uint16_t value, uint16_t wIndex, uint16_t wLength, uint8_t trt)
 
void XHCICreateDataTRB (XHCISlot *slot, uint64_t buffer, uint16_t size, bool in_direction)
 
void XHCICreateStatusTRB (XHCISlot *slot, bool in_direction)
 
void XHCISendAddressDevice (USBDevice *dev, XHCISlot *slot, uint8_t bsr, uint64_t input_ctx_ptr, uint8_t slot_id)
 
void XHCISendControlCmd (USBDevice *dev, XHCISlot *slot, uint8_t slot_id, const USB_REQUEST_PACKET *request, uint64_t buffer_addr, const size_t len, uint8_t trt=CTL_TRANSFER_TRT_IN_DATA)
 
void XHCISendControlCmdEndp (USBDevice *dev, XHCISlot *slot, uint8_t slot_id, const USB_REQUEST_PACKET *request, uint64_t buffer_addr, const size_t len, uint32_t endpnum)
 
void XHCISendNormalTRB (USBDevice *dev, XHCISlot *slot, uint64_t data_buffer, uint16_t data_len, XHCIEndpoint *ep)
 
void XHCIEvaluateContextCmd (USBDevice *dev, uint64_t input_ctx_ptr, uint8_t slot_id)
 
void XHCIConfigureEndpoint (USBDevice *dev, uint64_t input_ctx_ptr, uint8_t slot_id)
 

Macro Definition Documentation

◆ CTL_TRANSFER_TRT_IN_DATA

#define CTL_TRANSFER_TRT_IN_DATA   3

◆ CTL_TRANSFER_TRT_NO_DATA

#define CTL_TRANSFER_TRT_NO_DATA   0

◆ CTL_TRANSFER_TRT_OUT_DATA

#define CTL_TRANSFER_TRT_OUT_DATA   2

◆ CTL_TRANSFER_TRT_RESV

#define CTL_TRANSFER_TRT_RESV   1

◆ TRB_CMD_ADDRESS_DEV

#define TRB_CMD_ADDRESS_DEV   11

◆ TRB_CMD_CONFIG_ENDPOINT

#define TRB_CMD_CONFIG_ENDPOINT   12

◆ TRB_CMD_DISABLE_SLOT

#define TRB_CMD_DISABLE_SLOT   10

◆ TRB_CMD_ENABLE_SLOT

#define TRB_CMD_ENABLE_SLOT   9

◆ TRB_CMD_EVALUATE_CTX

#define TRB_CMD_EVALUATE_CTX   13

◆ TRB_CMD_FORCE_EVENT

#define TRB_CMD_FORCE_EVENT   18

◆ TRB_CMD_FORCE_HEADER

#define TRB_CMD_FORCE_HEADER   22

◆ TRB_CMD_GET_EXT_PROPERTY

#define TRB_CMD_GET_EXT_PROPERTY   24

◆ TRB_CMD_GET_PORT_BANDWIDTH

#define TRB_CMD_GET_PORT_BANDWIDTH   21

◆ TRB_CMD_NEGOTIATE_BANDWIDTH

#define TRB_CMD_NEGOTIATE_BANDWIDTH   19

◆ TRB_CMD_NO_OP

#define TRB_CMD_NO_OP   23

◆ TRB_CMD_RESET_DEV

#define TRB_CMD_RESET_DEV   17

◆ TRB_CMD_RESET_ENDPOINT

#define TRB_CMD_RESET_ENDPOINT   14

◆ TRB_CMD_SET_EXT_PROPERTY

#define TRB_CMD_SET_EXT_PROPERTY   25

◆ TRB_CMD_SET_LATENCY_TOLERANCE_VALUE

#define TRB_CMD_SET_LATENCY_TOLERANCE_VALUE   20

◆ TRB_CMD_SET_TR_DEQ_POINTER

#define TRB_CMD_SET_TR_DEQ_POINTER   16

◆ TRB_CMD_STOP_ENDPOINT

#define TRB_CMD_STOP_ENDPOINT   15

◆ TRB_EVENT_BANDWIDTH_REQUEST

#define TRB_EVENT_BANDWIDTH_REQUEST   35

◆ TRB_EVENT_CMD_COMPLETION

#define TRB_EVENT_CMD_COMPLETION   33

◆ TRB_EVENT_DEVICE_NOTIFICATION

#define TRB_EVENT_DEVICE_NOTIFICATION   38

◆ TRB_EVENT_DOORBELL

#define TRB_EVENT_DOORBELL   36

◆ TRB_EVENT_HOST_CONTROLLER

#define TRB_EVENT_HOST_CONTROLLER   37

◆ TRB_EVENT_MFINDEX

#define TRB_EVENT_MFINDEX   39

◆ TRB_EVENT_PORT_STATUS_CHANGE

#define TRB_EVENT_PORT_STATUS_CHANGE   34

◆ TRB_EVENT_TRANSFER

#define TRB_EVENT_TRANSFER   32

◆ TRB_TRANSFER_DATA_STAGE

#define TRB_TRANSFER_DATA_STAGE   3

◆ TRB_TRANSFER_EVENT_DATA

#define TRB_TRANSFER_EVENT_DATA   7

◆ TRB_TRANSFER_ISOCH

#define TRB_TRANSFER_ISOCH   5

◆ TRB_TRANSFER_LINK

#define TRB_TRANSFER_LINK   6

◆ TRB_TRANSFER_NO_OP

#define TRB_TRANSFER_NO_OP   8

◆ TRB_TRANSFER_NORMAL

#define TRB_TRANSFER_NORMAL   1

BSD 2-Clause License

Copyright (c) 2022-2023, 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:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

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.

◆ TRB_TRANSFER_SETUP_STAGE

#define TRB_TRANSFER_SETUP_STAGE   2

◆ TRB_TRANSFER_STATUS_STAGE

#define TRB_TRANSFER_STATUS_STAGE   4

Function Documentation

◆ XHCIConfigureEndpoint()

void XHCIConfigureEndpoint ( USBDevice dev,
uint64_t  input_ctx_ptr,
uint8_t  slot_id 
)

◆ XHCICreateDataTRB()

void XHCICreateDataTRB ( XHCISlot slot,
uint64_t  buffer,
uint16_t  size,
bool  in_direction 
)

◆ XHCICreateSetupTRB()

void XHCICreateSetupTRB ( XHCISlot slot,
uint8_t  rType,
uint8_t  bRequest,
uint16_t  value,
uint16_t  wIndex,
uint16_t  wLength,
uint8_t  trt 
)

◆ XHCICreateStatusTRB()

void XHCICreateStatusTRB ( XHCISlot slot,
bool  in_direction 
)

◆ XHCIDisableSlot()

void XHCIDisableSlot ( USBDevice dev,
uint8_t  slot_num 
)
extern

◆ XHCIEnableSlot()

void XHCIEnableSlot ( USBDevice dev,
uint8_t  slot_type 
)
extern

BSD 2-Clause License

Copyright (c) 2022-2023, 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:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

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.

◆ XHCIEvaluateContextCmd()

void XHCIEvaluateContextCmd ( USBDevice dev,
uint64_t  input_ctx_ptr,
uint8_t  slot_id 
)

◆ XHCISendAddressDevice()

void XHCISendAddressDevice ( USBDevice dev,
XHCISlot slot,
uint8_t  bsr,
uint64_t  input_ctx_ptr,
uint8_t  slot_id 
)

◆ XHCISendControlCmd()

void XHCISendControlCmd ( USBDevice dev,
XHCISlot slot,
uint8_t  slot_id,
const USB_REQUEST_PACKET request,
uint64_t  buffer_addr,
const size_t  len,
uint8_t  trt = CTL_TRANSFER_TRT_IN_DATA 
)

◆ XHCISendControlCmdEndp()

void XHCISendControlCmdEndp ( USBDevice dev,
XHCISlot slot,
uint8_t  slot_id,
const USB_REQUEST_PACKET request,
uint64_t  buffer_addr,
const size_t  len,
uint32_t  endpnum 
)

◆ XHCISendNoopCmd()

void XHCISendNoopCmd ( USBDevice dev)
extern

◆ XHCISendNormalTRB()

void XHCISendNormalTRB ( USBDevice dev,
XHCISlot slot,
uint64_t  data_buffer,
uint16_t  data_len,
XHCIEndpoint ep 
)