1 /*++ 2 3 Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR> 4 5 This program and the accompanying materials are licensed and made available under 7 the terms and conditions of the BSD License that accompanies this distribution. 9 The full text of the license may be found at 11 http://opensource.org/licenses/bsd-license.php. 13 15 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 17 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 19 21 23 Module Name: 24 UsbPolicy.h 25 26 Abstract: 27 28 --*/ 29 30 #ifndef _USB_POLICY_H_ 31 #define _USB_POLICY_H_ 32 33 EFI_FORWARD_DECLARATION (EFI_USB_POLICY_PROTOCOL); 34 35 #define USB_POLICY_GUID \ 36 {\ 37 0xf617b358, 0x12cf, 0x414a, 0xa0, 0x69, 0x60, 0x67, 0x7b, 0xda, 0x13, 0xb4\ 38 } 39 40 #define TIANO_CODE_BASE 0x00 41 #define ICBD_CODE_BASE 0x01 42 43 #define ATUO_TYPE 0x00 44 #define USB_FDD_TYPE 0x01 45 #define HDD_TYPE 0x02 46 #define ZIP_TYPE 0x03 47 #define CDROM_TYPE 0x04 48 #define SIZE_TYPE 0x05 49 50 #define ZIP_FDD 0x80 51 52 #define FDD_EMULATION 0x00 53 #define HDD_EMULATION 0x01 54 55 #define HIGH_SPEED 0x00 56 #define FULL_SPEED 0x01 57 #define SUPER_SPEED 0x02 58 59 #define LEGACY_KB_EN 0x01 60 #define LEGACY_KB_DIS 0x00 61 #define LEGACY_MS_EN 0x01 62 #define LEGACY_MS_DIS 0x00 63 #define LEGACY_USB_EN 0x00 64 #define LEGACY_USB_DIS 0x01 65 #define LEGACY_FREE_SUPP 0x01 66 #define LEGACY_FREE_UN_SUPP 0x00 67 #define LEGACY_PERIOD_SUPP 0x01 68 #define LEGACY_PERIOD_UN_SUPP 0x00 69 70 #define LEGACY_USB_TIME_TUE_ENABLE 0x01 71 #define LEGACY_USB_TIME_TUE_DISABLE 0x00 72 #define USB_HAVE_HUB_INTERNEL 0x01 73 #define USB_NOT_HAVE_HUB_INTERNEL 0x00 74 75 #define USB_POLICY_PROTOCOL_REVISION_1 1 76 #define USB_POLICY_PROTOCOL_REVISION_2 2 77 78 #ifndef __GNUC__ 79 #pragma warning ( disable : 4306 ) 80 #pragma warning ( disable : 4054 ) 81 #endif 82 83 #define GET_USB_CFG (UsbCfg);\ 84 do{\ 85 UINT16 *pSegOfEbda;\ 86 UINT32 mToEbda;\ 87 pSegOfEbda = (UINT16 *)(UINTN)0x40E;\ 88 mToEbda = (UINT32)(((UINTN)(*pSegOfEbda) << 4) + 0x80);\ 89 UsbCfg = (USB_CFG *)(UINTN)mToEbda;\ 90 }while(0); 91 92 #pragma pack(1) 93 typedef struct { 94 UINT8 HasUSBKeyboard:1; 95 UINT8 HasUSBMouse:1; 96 UINT8 LegacyFreeSupport:1; 97 UINT8 UsbOperationMode:1; 98 UINT8 LegacyKBEnable:1; 99 UINT8 LegacyMSEnable:1; 100 UINT8 USBPeriodSupport:1; 101 UINT8 Reserved:1; 102 } USB_DEVICE_INFOR; 103 104 typedef struct { 105 UINT8 Codebase; 106 UINT8 USBHDDForceType; 107 UINT8 Configurated; 108 UINT8 LpcAcpiBase; 109 UINT8 AcpiTimerReg; 110 UINT8 Reserved1[0x01]; 111 UINT8 LegacyUsbEnable; 112 USB_DEVICE_INFOR UsbDeviceInfor; 113 UINT16 UsbEmulationSize; 114 UINT8 Reserved2[0x06]; 115 } USB_CFG; 116 #pragma pack() 117 118 typedef struct _EFI_USB_POLICY_PROTOCOL{ 119 UINT8 Version; 120 UINT8 UsbMassStorageEmulationType; // 1: FDD_Type; 2: HDD_Type; other:Auto_Type* 121 UINT8 UsbOperationMode; // 0: High_Speed; 1: Full_Speed; 122 UINT8 LegacyKBEnable; // 0: Disabled; 1: Enabled* 123 UINT8 LegacyMSEnable; // 0: Disabled; 1: Enabled* 124 UINT8 USBPeriodSupport; // 0; Unsupport; 1: Support 125 UINT8 LegacyUsbEnable; // 1: Disabled; 0: Enabled* 126 UINT8 LegacyFreeSupport; // 0: Unsupport; 1: Support 127 UINT8 CodeBase; 128 UINT8 LpcAcpiBase; // 40h(default) 129 UINT8 AcpiTimerReg; 130 UINT8 UsbTimeTue; 131 UINT8 InternelHubExist; // 1: Host have internel hub on board; 0: No internel hub on board 132 UINT8 EnumWaitPortStableStall; // Value for wait port stable when enum a new dev. 133 UINT16 UsbEmulationSize; // Mbytes. 134 UINT8 UsbZipEmulationType; 135 UINT8 Reserved[3]; // Reserved fields for future expansion w/o protocol change 136 } EFI_USB_POLICY_PROTOCOL; 137 138 extern EFI_GUID gUsbPolicyGuid; 139 140 #endif 141