#ifndef _USBSPEC_PRIVATE_H
#define _USBSPEC_PRIVATE_H
#include <KernelExport.h>
#include <USB3.h>
#define USB_MAX_AREAS 8
#define USB_MAX_FRAGMENT_SIZE B_PAGE_SIZE * 96
#define USB_MAX_PORT_COUNT 255
#define USB_DELAY_BUS_RESET 100000
#define USB_DELAY_HUB_POWER_UP 200000
#define USB_DELAY_PORT_RESET 50000
#define USB_DELAY_PORT_RESET_RECOVERY 50000
#define USB_DELAY_SET_ADDRESS_RETRY 200000
#define USB_DELAY_SET_ADDRESS 10000
#define USB_DELAY_SET_CONFIGURATION 50000
#define USB_DELAY_HUB_EXPLORE 1000000
#define USB_DEBOUNCE_TIMEOUT 1500000
#define USB_DEBOUNCE_CHECK_INTERVAL 25000
#define USB_DEBOUNCE_STABLE_TIME 100000
#define USB_BW_HOST_DELAY 1000
#define USB_BW_SETUP_LOW_SPEED_PORT_DELAY 333
struct usb_request_data {
uint8 RequestType;
uint8 Request;
uint16 Value;
uint16 Index;
uint16 Length;
} _PACKED;
struct usb_isochronous_data {
usb_iso_packet_descriptor *packet_descriptors;
uint32 packet_count;
uint32 *starting_frame_number;
uint32 flags;
};
struct usb_hub_descriptor {
uint8 length;
uint8 descriptor_type;
uint8 num_ports;
uint16 characteristics;
uint8 power_on_to_power_good;
uint8 max_power;
uint8 device_removeable;
uint8 power_control_mask;
} _PACKED;
#define USB_DESCRIPTOR_HUB 0x29
struct usb_endpoint_ss_companion_descriptor {
uint8 length;
uint8 descriptor_type;
uint8 max_burst;
uint8 attributes;
uint16 bytes_per_interval;
} _PACKED;
#define USB_DESCRIPTOR_ENDPOINT_SS_COMPANION 0x30
struct usb_port_status {
uint16 status;
uint16 change;
};
#define PORT_STATUS_CONNECTION 0x0001
#define PORT_STATUS_ENABLE 0x0002
#define PORT_STATUS_SUSPEND 0x0004
#define PORT_STATUS_OVER_CURRENT 0x0008
#define PORT_STATUS_RESET 0x0010
#define PORT_STATUS_L1 0x0020
#define PORT_STATUS_POWER 0x0100
#define PORT_STATUS_LOW_SPEED 0x0200
#define PORT_STATUS_HIGH_SPEED 0x0400
#define PORT_STATUS_TEST 0x0800
#define PORT_STATUS_INDICATOR 0x1000
#define PORT_STATUS_SS_LINK_STATE 0x01e0
#define PORT_STATUS_SS_POWER 0x0200
#define PORT_STATUS_SS_SPEED 0x1c00
#define PORT_CONNECTION 0
#define PORT_ENABLE 1
#define PORT_SUSPEND 2
#define PORT_OVER_CURRENT 3
#define PORT_RESET 4
#define PORT_POWER 8
#define PORT_LOW_SPEED 9
#define C_PORT_CONNECTION 16
#define C_PORT_ENABLE 17
#define C_PORT_SUSPEND 18
#define C_PORT_OVER_CURRENT 19
#define C_PORT_RESET 20
#define PORT_LINK_STATE 5
#define PORT_U1_TIMEOUT 23
#define PORT_U2_TIMEOUT 24
#define C_PORT_LINK_STATE 25
#define C_PORT_CONFIG_ERROR 26
#define C_PORT_REMOTE_WAKE_MASK 27
#define PORT_BH_PORT_RESET 28
#define C_PORT_BH_PORT_RESET 29
#define PORT_FORCE_LINKPM_STATE 30
#define PORT_CHANGE_BH_PORT_RESET 0x0020
#define PORT_CHANGE_LINK_STATE 0x0040
#endif