1. Add NULL QH to set as QH header;
2. Do ping for high speed OUT pipe; 3. Bug fix for QTD size detection; 4. Bug fix for short package detection; 5. Bug fix get next QTD in ExcutionTransfer; 6. BOT module modify to follow spec; 7. Massstorage error hanling enhancement git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2321 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -22,7 +22,8 @@ Revision History
|
||||
|
||||
#include "Ehci.h"
|
||||
|
||||
void
|
||||
|
||||
VOID
|
||||
DumpEHCIPortsStatus (
|
||||
IN USB2_HC_DEV *HcDev
|
||||
)
|
||||
@@ -47,6 +48,8 @@ DumpEHCIPortsStatus (
|
||||
);
|
||||
DEBUG((gEHCDebugLevel, "Port[%d] = 0x%x\n", Index, Value));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,20 +1,20 @@
|
||||
/*++
|
||||
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
Module Name:
|
||||
|
||||
EhciMem.c
|
||||
|
||||
Abstract:
|
||||
|
||||
|
||||
Abstract:
|
||||
|
||||
|
||||
Revision History
|
||||
--*/
|
||||
@@ -40,13 +40,13 @@ Arguments:
|
||||
HcDev - USB2_HC_DEV
|
||||
MemoryHeader - MEMORY_MANAGE_HEADER to output
|
||||
MemoryBlockSizeInPages - MemoryBlockSizeInPages
|
||||
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_OUT_OF_RESOURCES Fail for no resources
|
||||
EFI_UNSUPPORTED Unsupported currently
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -73,7 +73,7 @@ Returns:
|
||||
//
|
||||
// each bit in Bit Array will manage 32 bytes memory in memory block
|
||||
//
|
||||
(*MemoryHeader)->BitArraySizeInBytes = ((*MemoryHeader)->MemoryBlockSizeInBytes / 32) / 8;
|
||||
(*MemoryHeader)->BitArraySizeInBytes = ((*MemoryHeader)->MemoryBlockSizeInBytes / MEM_UNIT_SIZE) / 8;
|
||||
|
||||
//
|
||||
// Allocate memory for BitArray
|
||||
@@ -83,7 +83,7 @@ Returns:
|
||||
gBS->FreePool (*MemoryHeader);
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Memory Block uses MemoryBlockSizeInPages pages,
|
||||
// and it is allocated as common buffer use.
|
||||
@@ -112,7 +112,7 @@ Returns:
|
||||
&Mapping
|
||||
);
|
||||
//
|
||||
// If returned Mapped size is less than the size
|
||||
// If returned Mapped size is less than the size
|
||||
// we request,do not support.
|
||||
//
|
||||
if (EFI_ERROR (Status) || (MemoryBlockSizeInBytes != EFI_PAGES_TO_SIZE (MemoryBlockSizeInPages))) {
|
||||
@@ -121,9 +121,9 @@ Returns:
|
||||
gBS->FreePool (*MemoryHeader);
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Data structure involved by host controller
|
||||
// Data structure involved by host controller
|
||||
// should be restricted into the same 4G
|
||||
//
|
||||
if (HcDev->Is64BitCapable != 0) {
|
||||
@@ -135,7 +135,7 @@ Returns:
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Set Memory block initial address
|
||||
//
|
||||
@@ -240,16 +240,16 @@ Returns:
|
||||
ASSERT (MemoryHeader != NULL);
|
||||
|
||||
OldTpl = gBS->RaiseTPL (EFI_TPL_NOTIFY + 1);
|
||||
|
||||
|
||||
//
|
||||
// allocate unit is 32 bytes (align on 32 byte)
|
||||
//
|
||||
if (AllocSize & 0x1F) {
|
||||
RealAllocSize = (AllocSize / 32 + 1) * 32;
|
||||
if (AllocSize & (MEM_UNIT_SIZE - 1)) {
|
||||
RealAllocSize = (AllocSize / MEM_UNIT_SIZE + 1) * MEM_UNIT_SIZE;
|
||||
} else {
|
||||
RealAllocSize = AllocSize;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// There may be linked MemoryHeaders.
|
||||
// To allocate a free pool in Memory blocks,
|
||||
@@ -262,22 +262,26 @@ Returns:
|
||||
Status = AllocMemInMemoryBlock (
|
||||
TempHeaderPtr,
|
||||
(VOID **) Pool,
|
||||
RealAllocSize / 32
|
||||
RealAllocSize / MEM_UNIT_SIZE
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
ZeroMem (*Pool, AllocSize);
|
||||
gBS->RestoreTPL (OldTpl);
|
||||
return EFI_SUCCESS;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
gBS->RestoreTPL (OldTpl);
|
||||
|
||||
|
||||
if (!EFI_ERROR (Status)) {
|
||||
ZeroMem (*Pool, AllocSize);
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// There is no enough memory,
|
||||
// Create a new Memory Block
|
||||
//
|
||||
|
||||
|
||||
//
|
||||
// if pool size is larger than NORMAL_MEMORY_BLOCK_UNIT_IN_PAGES,
|
||||
// just allocate a large enough memory block.
|
||||
@@ -303,13 +307,15 @@ Returns:
|
||||
|
||||
Status = AllocMemInMemoryBlock (
|
||||
NewMemoryHeader,
|
||||
(VOID **) Pool,
|
||||
(VOID **) Pool,
|
||||
RealAllocSize / MEM_UNIT_SIZE
|
||||
);
|
||||
|
||||
gBS->RestoreTPL (OldTpl);
|
||||
|
||||
if (!EFI_ERROR (Status)) {
|
||||
ZeroMem (*Pool, AllocSize);
|
||||
}
|
||||
|
||||
|
||||
return Status;
|
||||
}
|
||||
@@ -354,12 +360,12 @@ Returns:
|
||||
|
||||
//
|
||||
// allocate unit is 32 byte (align on 32 byte)
|
||||
//
|
||||
if (AllocSize & 0x1F) {
|
||||
//
|
||||
if (AllocSize & (MEM_UNIT_SIZE - 1)) {
|
||||
RealAllocSize = (AllocSize / MEM_UNIT_SIZE + 1) * MEM_UNIT_SIZE;
|
||||
} else {
|
||||
RealAllocSize = AllocSize;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// scan the memory header linked list for
|
||||
@@ -373,14 +379,16 @@ Returns:
|
||||
//
|
||||
// Pool is in the Memory Block area,
|
||||
// find the start byte and bit in the bit array
|
||||
//
|
||||
StartBytePos = ((Pool - TempHeaderPtr->MemoryBlockPtr) / 32) / 8;
|
||||
//
|
||||
StartBytePos = ((Pool - TempHeaderPtr->MemoryBlockPtr) / MEM_UNIT_SIZE) / 8;
|
||||
StartBitPos = (UINT8) (((Pool - TempHeaderPtr->MemoryBlockPtr) / MEM_UNIT_SIZE) & 0x7);
|
||||
|
||||
//
|
||||
// reset associated bits in bit arry
|
||||
//
|
||||
for (Index = StartBytePos, Index2 = StartBitPos, Count = 0; Count < (RealAllocSize / 32); Count++) {
|
||||
//
|
||||
for (Index = StartBytePos, Index2 = StartBitPos, Count = 0; Count < (RealAllocSize / MEM_UNIT_SIZE); Count++) {
|
||||
ASSERT ((TempHeaderPtr->BitArrayPtr[Index] & bit (Index2) )== bit (Index2));
|
||||
|
||||
TempHeaderPtr->BitArrayPtr[Index] ^= (UINT8) (bit (Index2));
|
||||
Index2++;
|
||||
if (Index2 == 8) {
|
||||
@@ -393,7 +401,7 @@ Returns:
|
||||
//
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Release emptied memory blocks (only if the memory block is not
|
||||
@@ -479,7 +487,7 @@ Arguments:
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_SUCCESS Success
|
||||
EFI_NOT_FOUND Can't find the free memory
|
||||
|
||||
--*/
|
||||
@@ -508,7 +516,7 @@ Returns:
|
||||
|
||||
//
|
||||
// right shift the byte
|
||||
//
|
||||
//
|
||||
ByteValue = ByteValue >> 1;
|
||||
|
||||
if (BitValue == 0) {
|
||||
@@ -564,11 +572,11 @@ Returns:
|
||||
|
||||
if (NumberOfZeros < NumberOfMemoryUnit) {
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Found enough free space.
|
||||
//
|
||||
//
|
||||
|
||||
//
|
||||
// The values recorded in (FoundBytePos,FoundBitPos) have two conditions:
|
||||
@@ -581,7 +589,7 @@ Returns:
|
||||
//
|
||||
if ((MemoryHeader->BitArrayPtr[FoundBytePos] & bit (FoundBitPos)) != 0) {
|
||||
FoundBitPos += 1;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Have the (FoundBytePos,FoundBitPos) make sense.
|
||||
@@ -589,13 +597,14 @@ Returns:
|
||||
if (FoundBitPos > 7) {
|
||||
FoundBytePos += 1;
|
||||
FoundBitPos -= 8;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Set the memory as allocated
|
||||
//
|
||||
for (TempBytePos = FoundBytePos, Index = FoundBitPos, Count = 0; Count < NumberOfMemoryUnit; Count++) {
|
||||
|
||||
|
||||
ASSERT ((MemoryHeader->BitArrayPtr[TempBytePos] & bit (Index) )== 0);
|
||||
MemoryHeader->BitArrayPtr[TempBytePos] |= bit (Index);
|
||||
Index++;
|
||||
if (Index == 8) {
|
||||
@@ -603,7 +612,7 @@ Returns:
|
||||
Index = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
*Pool = MemoryHeader->MemoryBlockPtr + (FoundBytePos * 8 + FoundBitPos) * MEM_UNIT_SIZE;
|
||||
|
||||
return EFI_SUCCESS;
|
||||
@@ -625,7 +634,7 @@ Arguments:
|
||||
|
||||
Returns:
|
||||
|
||||
TRUE Empty
|
||||
TRUE Empty
|
||||
FALSE Not Empty
|
||||
|
||||
--*/
|
||||
@@ -675,6 +684,7 @@ Returns:
|
||||
//
|
||||
// Link the before and after
|
||||
//
|
||||
TempHeaderPtr->Next = NeedFreeMemoryHeader->Next;
|
||||
NeedFreeMemoryHeader->Next = NULL;
|
||||
break;
|
||||
}
|
||||
@@ -698,7 +708,7 @@ Returns:
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_DEVICE_ERROR Fail
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
--*/
|
||||
{
|
||||
@@ -736,7 +746,7 @@ Returns:
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_DEVICE_ERROR Fail
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
--*/
|
||||
{
|
||||
|
@@ -1,20 +1,20 @@
|
||||
/*++
|
||||
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
Module Name:
|
||||
|
||||
Ehchlp.c
|
||||
|
||||
Abstract:
|
||||
|
||||
|
||||
Abstract:
|
||||
|
||||
|
||||
Revision History
|
||||
--*/
|
||||
@@ -29,7 +29,7 @@ HostReset (
|
||||
{
|
||||
UINT32 Value;
|
||||
UINT32 TimeOut;
|
||||
|
||||
|
||||
ReadEhcOperationalReg (
|
||||
HcDev,
|
||||
USBCMD,
|
||||
@@ -102,18 +102,18 @@ ReadEhcCapabiltiyReg (
|
||||
Routine Description:
|
||||
|
||||
Read Ehc Capabitlity register
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
HcDev - USB2_HC_DEV
|
||||
CapabiltiyRegAddr - Ehc Capability register address
|
||||
Data - A pointer to data read from register
|
||||
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
return HcDev->PciIo->Mem.Read (
|
||||
@@ -137,18 +137,18 @@ ReadEhcOperationalReg (
|
||||
Routine Description:
|
||||
|
||||
Read Ehc Operation register
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
HcDev - USB2_HC_DEV
|
||||
OperationalRegAddr - Ehc Operation register address
|
||||
Data - A pointer to data read from register
|
||||
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
ASSERT (HcDev->UsbCapabilityLen);
|
||||
@@ -173,18 +173,18 @@ WriteEhcOperationalReg (
|
||||
Routine Description:
|
||||
|
||||
Write Ehc Operation register
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
HcDev - USB2_HC_DEV
|
||||
OperationalRegAddr - Ehc Operation register address
|
||||
Data - 32bit write to register
|
||||
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
ASSERT (HcDev->UsbCapabilityLen);
|
||||
@@ -198,6 +198,8 @@ Returns:
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
VOID
|
||||
ClearLegacySupport (
|
||||
IN USB2_HC_DEV *HcDev
|
||||
@@ -239,7 +241,7 @@ Returns:
|
||||
EfiPciIoWidthUint32,
|
||||
EECP,
|
||||
1,
|
||||
&Value
|
||||
&Value
|
||||
);
|
||||
|
||||
DEBUG((gEHCDebugLevel, "EECP[0] = 0x%x\n", Value));
|
||||
@@ -249,7 +251,7 @@ Returns:
|
||||
EfiPciIoWidthUint32,
|
||||
EECP + 0x4,
|
||||
1,
|
||||
&Value
|
||||
&Value
|
||||
);
|
||||
|
||||
DEBUG((gEHCDebugLevel, "EECP[4] = 0x%x\n", Value));
|
||||
@@ -259,7 +261,7 @@ Returns:
|
||||
EfiPciIoWidthUint32,
|
||||
EECP,
|
||||
1,
|
||||
&Value
|
||||
&Value
|
||||
);
|
||||
|
||||
Value = Value | (0x1 << 24);
|
||||
@@ -270,7 +272,7 @@ Returns:
|
||||
EfiPciIoWidthUint32,
|
||||
EECP,
|
||||
1,
|
||||
&Value
|
||||
&Value
|
||||
);
|
||||
|
||||
TimeOut = 40;
|
||||
@@ -282,7 +284,7 @@ Returns:
|
||||
EfiPciIoWidthUint32,
|
||||
EECP,
|
||||
1,
|
||||
&Value
|
||||
&Value
|
||||
);
|
||||
if ((Value & 0x01010000) == 0x01000000) {
|
||||
break;
|
||||
@@ -291,8 +293,8 @@ Returns:
|
||||
|
||||
if (TimeOut == 0) {
|
||||
DEBUG((gEHCErrorLevel, "Timeout for getting HC OS Owned Semaphore\n" ));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
DEBUG((gEHCErrorLevel, "After Release Value\n" ));
|
||||
|
||||
HcDev->PciIo->Pci.Read (
|
||||
@@ -300,7 +302,7 @@ Returns:
|
||||
EfiPciIoWidthUint32,
|
||||
EECP,
|
||||
1,
|
||||
&Value
|
||||
&Value
|
||||
);
|
||||
|
||||
DEBUG((gEHCDebugLevel, "EECP[0] = 0x%x\n", Value));
|
||||
@@ -310,7 +312,7 @@ Returns:
|
||||
EfiPciIoWidthUint32,
|
||||
EECP + 0x4,
|
||||
1,
|
||||
&Value
|
||||
&Value
|
||||
);
|
||||
|
||||
DEBUG((gEHCDebugLevel, "EECP[4] = 0x%x\n", Value));
|
||||
@@ -327,16 +329,16 @@ GetCapabilityLen (
|
||||
Routine Description:
|
||||
|
||||
Get the length of capability register
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -364,18 +366,18 @@ SetFrameListLen (
|
||||
Routine Description:
|
||||
|
||||
Set the length of Frame List
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
HcDev - USB2_HC_DEV
|
||||
Length - the required length of frame list
|
||||
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_INVALID_PARAMETER Invalid parameter
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -428,14 +430,14 @@ SetFrameListBaseAddr (
|
||||
Routine Description:
|
||||
|
||||
Set base address of frame list first entry
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
HcDev - USB2_HC_DEV
|
||||
FrameBuffer - base address of first entry of frame list
|
||||
|
||||
|
||||
Returns:
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -474,17 +476,17 @@ SetAsyncListAddr (
|
||||
Routine Description:
|
||||
|
||||
Set address of first Async schedule Qh
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
HcDev - USB2_HC_DEV
|
||||
QhPtr - A pointer to first Qh in the Async schedule
|
||||
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -512,16 +514,16 @@ SetCtrlDataStructSeg (
|
||||
Routine Description:
|
||||
|
||||
Set register of control and data structure segment
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
@@ -550,16 +552,16 @@ SetPortRoutingEhc (
|
||||
Routine Description:
|
||||
|
||||
Set Ehc port routing bit
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -601,16 +603,16 @@ SetEhcDoorbell (
|
||||
Routine Description:
|
||||
|
||||
Set Ehc door bell bit
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -652,16 +654,16 @@ ClearEhcAllStatus (
|
||||
Routine Description:
|
||||
|
||||
Clear Ehc all status bits
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
UINT32 UsbStatusAddr;
|
||||
@@ -684,16 +686,16 @@ EnablePeriodicSchedule (
|
||||
Routine Description:
|
||||
|
||||
Enable periodic schedule
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -735,16 +737,16 @@ DisablePeriodicSchedule (
|
||||
Routine Description:
|
||||
|
||||
Disable periodic schedule
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -784,16 +786,16 @@ EnableAsynchronousSchedule (
|
||||
Routine Description:
|
||||
|
||||
Enable asynchrounous schedule
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -835,16 +837,16 @@ DisableAsynchronousSchedule (
|
||||
Routine Description:
|
||||
|
||||
Disable asynchrounous schedule
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -884,16 +886,16 @@ ResetEhc (
|
||||
Routine Description:
|
||||
|
||||
Reset Ehc
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -935,16 +937,16 @@ StartScheduleExecution (
|
||||
Routine Description:
|
||||
|
||||
Start Ehc schedule execution
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_DEVICE_ERROR Fail
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -986,16 +988,16 @@ IsFrameListProgrammable (
|
||||
Routine Description:
|
||||
|
||||
Whether frame list is programmable
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
TRUE Programmable
|
||||
FALSE Unprogrammable
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
BOOLEAN Value;
|
||||
@@ -1028,16 +1030,16 @@ IsPeriodicScheduleEnabled (
|
||||
Routine Description:
|
||||
|
||||
Whether periodic schedule is enabled
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
TRUE Enabled
|
||||
FALSE Disabled
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
BOOLEAN Value;
|
||||
@@ -1070,16 +1072,16 @@ IsAsyncScheduleEnabled (
|
||||
Routine Description:
|
||||
|
||||
Whether asynchronous schedule is enabled
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
TRUE Enabled
|
||||
FALSE Disabled
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
BOOLEAN Value;
|
||||
@@ -1113,16 +1115,16 @@ IsEhcPortEnabled (
|
||||
Routine Description:
|
||||
|
||||
Whether port is enabled
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
TRUE Enabled
|
||||
FALSE Disabled
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
UINT32 PortStatusControlAddr;
|
||||
@@ -1148,16 +1150,16 @@ IsEhcReseted (
|
||||
Routine Description:
|
||||
|
||||
Whether Ehc is reseted
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
TRUE Reseted
|
||||
FALSE Unreseted
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
BOOLEAN Value;
|
||||
@@ -1190,16 +1192,16 @@ IsEhcHalted (
|
||||
Routine Description:
|
||||
|
||||
Whether Ehc is halted
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
TRUE Halted
|
||||
FALSE Not halted
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
BOOLEAN Value;
|
||||
@@ -1232,16 +1234,16 @@ IsEhcSysError (
|
||||
Routine Description:
|
||||
|
||||
Whether Ehc is system error
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
TRUE System error
|
||||
FALSE No system error
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
BOOLEAN Value;
|
||||
@@ -1268,29 +1270,29 @@ Returns:
|
||||
BOOLEAN
|
||||
IsHighSpeedDevice (
|
||||
IN EFI_USB2_HC_PROTOCOL *This,
|
||||
IN UINT8 PortNum
|
||||
IN UINT8 PortNum
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Whether high speed device attached
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
|
||||
Returns:
|
||||
|
||||
TRUE High speed
|
||||
FALSE Full speed
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
USB2_HC_DEV *HcDev;
|
||||
UINT32 PortStatusControlAddr;
|
||||
UINT32 PortStatusControlReg;
|
||||
|
||||
|
||||
HcDev = USB2_HC_DEV_FROM_THIS (This);
|
||||
PortStatusControlAddr = (UINT32) (PORTSC + (4 * PortNum));
|
||||
|
||||
@@ -1360,17 +1362,17 @@ WaitForEhcReset (
|
||||
Routine Description:
|
||||
|
||||
wait for Ehc reset or timeout
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
HcDev - USB2_HC_DEV
|
||||
Timeout - timeout threshold
|
||||
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_TIMEOUT Timeout
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -1406,17 +1408,17 @@ WaitForEhcHalt (
|
||||
Routine Description:
|
||||
|
||||
wait for Ehc halt or timeout
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
HcDev - USB2_HC_DEV
|
||||
Timeout - timeout threshold
|
||||
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_TIMEOUT Timeout
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -1452,17 +1454,17 @@ WaitForEhcNotHalt (
|
||||
Routine Description:
|
||||
|
||||
wait for Ehc not halt or timeout
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
HcDev - USB2_HC_DEV
|
||||
Timeout - timeout threshold
|
||||
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_TIMEOUT Timeout
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -1498,17 +1500,17 @@ WaitForAsyncScheduleEnable (
|
||||
Routine Description:
|
||||
|
||||
Wait for Ehc asynchronous schedule enable or timeout
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
HcDev - USB2_HC_DEV
|
||||
Timeout - timeout threshold
|
||||
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_TIMEOUT Timeout
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -1544,17 +1546,17 @@ WaitForAsyncScheduleDisable (
|
||||
Routine Description:
|
||||
|
||||
Wait for Ehc asynchronous schedule disable or timeout
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
HcDev - USB2_HC_DEV
|
||||
Timeout - timeout threshold
|
||||
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_TIMEOUT Timeout
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -1590,17 +1592,17 @@ WaitForPeriodicScheduleEnable (
|
||||
Routine Description:
|
||||
|
||||
Wait for Ehc periodic schedule enable or timeout
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
HcDev - USB2_HC_DEV
|
||||
Timeout - timeout threshold
|
||||
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_TIMEOUT Timeout
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -1636,17 +1638,17 @@ WaitForPeriodicScheduleDisable (
|
||||
Routine Description:
|
||||
|
||||
Wait for periodic schedule disable or timeout
|
||||
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
HcDev - USB2_HC_DEV
|
||||
Timeout - timeout threshold
|
||||
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_TIMEOUT Timeout
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -1685,14 +1687,14 @@ Routine Description:
|
||||
|
||||
Arguments:
|
||||
|
||||
HcDev - USB2_HC_DEV
|
||||
HcDev - USB2_HC_DEV
|
||||
Timeout - timeout threshold
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Success
|
||||
EFI_TIMEOUT Timeout
|
||||
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -1702,7 +1704,7 @@ Returns:
|
||||
|
||||
UsbCommandAddr = USBCMD;
|
||||
Delay = (Timeout / 50) + 1;
|
||||
|
||||
|
||||
do {
|
||||
Status = ReadEhcOperationalReg (
|
||||
HcDev,
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user