186 lines
5.2 KiB
C
186 lines
5.2 KiB
C
/** @file
|
|
USB Status Code related definitions and fundtions
|
|
|
|
;******************************************************************************
|
|
;* Copyright (c) 2013 - 2017, Insyde Software Corporation. All Rights Reserved.
|
|
;*
|
|
;* You may not reproduce, distribute, publish, display, perform, modify, adapt,
|
|
;* transmit, broadcast, present, recite, release, license or otherwise exploit
|
|
;* any part of this publication in any form, by any means, without the prior
|
|
;* written permission of Insyde Software Corporation.
|
|
;*
|
|
;******************************************************************************
|
|
*/
|
|
|
|
#ifndef _USB_DEBUG_H_
|
|
#define _USB_DEBUG_H_
|
|
|
|
#define BYPASS_TIMEOUT 10
|
|
|
|
#define PLATFORM_USB20_BAR 0xF0000000
|
|
#define PLATFORM_USB20_VID 0x00
|
|
#define PLATFORM_USB20_PCICMD 0x04
|
|
#define PLATFORM_USB20_RID 0x08
|
|
#define PLATFORM_USB20_MEMBASE 0x10
|
|
|
|
#define DEBUG_DEVICE_ADDR 0x7F
|
|
|
|
// EHCI new added PID
|
|
#define SETUP_TOKEN_ID 0x2D
|
|
#define INPUT_TOKEN_ID 0x69
|
|
#define OUTPUT_TOKEN_ID 0xE1
|
|
|
|
#define DATA0_PID 0xC3
|
|
#define DATA1_PID 0x4B
|
|
|
|
#define PEI_TIMEOUT_TICKS 1000
|
|
|
|
// Get Descriptors
|
|
#define GET_DESC_REQ_TYPE 0x80
|
|
#define GET_DESC_REQ 0x06
|
|
#define DEVICE_TYPE 0x01
|
|
#define DEBUG_TYPE 0x0A
|
|
|
|
// Set Debug Mode
|
|
#define SET_FEATURE_REQ_TYPE 0x00
|
|
#define SET_FEATURE_REQ 0x03
|
|
#define DEBUG_MODE 0x06
|
|
|
|
// Set Address
|
|
#define SET_ADDRESS_REQ_TYPE 0x00
|
|
#define SET_ADDRESS_REQ 0x05
|
|
|
|
// Clear Feature
|
|
#define CLEAR_FEATURE_REQ_TYPE 0x02
|
|
#define CLEAR_FEATURE_REQ 0x01
|
|
#define ENDPOINT_HALT 0x00
|
|
|
|
|
|
#define EUSBCMD_RS BIT0 /* Run/Stop */
|
|
#define EUSBCMD_HCRESET BIT1 /* Host reset */
|
|
#define EUSBCMD_PSE BIT4 /* Periodic Schedule Enable */
|
|
#define EUSBCMD_ASE BIT5 /* Asynchronous Schedule Enable */
|
|
#define EUSBCMD_IAAD BIT6 /* Interrupt om Async Advance Doorbell */
|
|
#define EUSBCMD_ITC BIT16 | BIT17 | BIT18 | BIT19 | BIT20 | BIT21 | BIT22 | BIT23 /* Interrupt Threshold Control */
|
|
#define EUSBSTS_HCHALTED BIT12
|
|
#define EUSBCONFIG_CF BIT0
|
|
#define EUSBPORTSC_CCS BIT0 /* Current Connect Status "device present" */
|
|
#define EUSBPORTSC_CSC BIT1 /* Connect Status Change */
|
|
#define EUSBPORTSC_PED BIT2 /* Port Enable / Disable */
|
|
#define EUSBPORTSC_PEDC BIT3 /* Port Enable / Disable Change */
|
|
#define EUSBPORTSC_OVERA BIT4 /* Overcurrent Active */
|
|
#define EUSBPORTSC_OVERC BIT5 /* Overcurrent Change */
|
|
#define EUSBPORTSC_FPR BIT6 /* Force Port Resume*/
|
|
#define EUSBPORTSC_SUSP BIT7 /* Suspend */
|
|
#define EUSBPORTSC_PR BIT8 /* Port Reset */
|
|
#define EUSBPORTSC_LS BIT10 | BIT11 /* Line Status */
|
|
#define LINE_STATUS_J BIT11
|
|
#define LINE_STATUS_K BIT10
|
|
|
|
#define DEBUG_WRITE 1
|
|
#define DEBUG_READ 0
|
|
|
|
#pragma pack(1)
|
|
|
|
typedef struct {
|
|
UINT8 RequestType;
|
|
UINT8 Request;
|
|
UINT16 Value;
|
|
UINT16 Index;
|
|
UINT16 Length;
|
|
} EFI_USB_DEVICE_REQUEST;
|
|
|
|
typedef struct {
|
|
UINT8 Length;
|
|
UINT8 DescriptorType;
|
|
UINT16 BcdUSB;
|
|
UINT8 DeviceClass;
|
|
UINT8 DeviceSubClass;
|
|
UINT8 DeviceProtocol;
|
|
UINT8 MaxPacketSize0;
|
|
UINT16 IdVendor;
|
|
UINT16 IdProduct;
|
|
UINT16 BcdDevice;
|
|
UINT8 StrManufacturer;
|
|
UINT8 StrProduct;
|
|
UINT8 StrSerialNumber;
|
|
UINT8 NumConfigurations;
|
|
} EFI_USB_DEVICE_DESCRIPTOR;
|
|
|
|
typedef struct{
|
|
UINT8 Length;
|
|
UINT8 DescriptorType;
|
|
UINT8 DebugInEndpoint;
|
|
UINT8 DebugOutEndpoint;
|
|
UINT32 Reserved;
|
|
} EFI_USB_DEBUG_DESCRIPTOR;
|
|
|
|
typedef struct {
|
|
UINT32 DataLength : 4;
|
|
UINT32 Write : 1;
|
|
UINT32 Go : 1;
|
|
UINT32 Error : 1;
|
|
UINT32 Exception : 3;
|
|
UINT32 InUse : 1;
|
|
UINT32 Reserve1 : 5;
|
|
UINT32 Done : 1;
|
|
UINT32 Reserve2 : 11;
|
|
UINT32 Enabled : 1;
|
|
UINT32 Reserve3 : 1;
|
|
UINT32 Owner : 1;
|
|
UINT32 Reserve4 : 1;
|
|
} EFI_USB_DBG_SC;
|
|
|
|
typedef struct {
|
|
UINT8 TokenPid;
|
|
UINT8 SendPid;
|
|
UINT8 ReceivedStatusPid;
|
|
UINT8 Reserve;
|
|
} EFI_USB_DBG_PID;
|
|
|
|
typedef struct {
|
|
UINT32 Endpoint : 4;
|
|
UINT32 Reserve1 : 4;
|
|
UINT32 Address : 7;
|
|
UINT32 Reserve2 : 17;
|
|
} EFI_USB_DBG_ADDR;
|
|
|
|
typedef struct {
|
|
UINT8 EndpointIn;
|
|
UINT8 ToggleIn;
|
|
UINT8 EndpointOut;
|
|
UINT8 ToggleOut;
|
|
} DEBUG_BULK;
|
|
|
|
typedef struct {
|
|
UINT8 CapLength;
|
|
UINT8 Reserve;
|
|
UINT16 HCVersion;
|
|
UINT32 HcsParams;
|
|
UINT32 HccParams;
|
|
} EFI_USB_CAP_REG;
|
|
|
|
typedef struct {
|
|
UINT32 UsbCmd;
|
|
UINT32 UsbSts;
|
|
UINT32 UsbIntr;
|
|
UINT32 Frindex;
|
|
UINT32 CtrlDsseMent;
|
|
UINT32 Periodic;
|
|
UINT32 Async;
|
|
UINT32 Reserve[9];
|
|
UINT32 Cfg;
|
|
UINT32 PortSC[8];
|
|
} EFI_USB_CTRL_REG;
|
|
|
|
typedef struct {
|
|
EFI_USB_DBG_SC Sc;
|
|
EFI_USB_DBG_PID Pid;
|
|
UINT32 Data0;
|
|
UINT32 Data1;
|
|
EFI_USB_DBG_ADDR Addr;
|
|
} EFI_USB_DBG_REG;
|
|
|
|
#pragma pack()
|
|
|
|
#endif |