Check in patch to refine DevicePath Module and USB2HostController Module.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1117 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -479,7 +479,7 @@ EhciDriverBindingStart (
|
||||
//
|
||||
// Create AsyncRequest Polling Timer
|
||||
//
|
||||
Status = CreatePollingTimer (HcDev, AsyncRequestMoniter);
|
||||
Status = CreatePollingTimer (HcDev, (EFI_EVENT_NOTIFY) AsyncRequestMoniter);
|
||||
if (EFI_ERROR (Status)) {
|
||||
Status = EFI_OUT_OF_RESOURCES;
|
||||
goto deinit_memory_management;
|
||||
@@ -886,7 +886,7 @@ EhciReset (
|
||||
//
|
||||
Status = SetFrameListBaseAddr (
|
||||
HcDev,
|
||||
(UINT32) GET_0B_TO_31B (HcDev->PeriodicFrameListBuffer)
|
||||
GET_0B_TO_31B (HcDev->PeriodicFrameListBuffer)
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
Status = EFI_DEVICE_ERROR;
|
||||
|
@@ -192,11 +192,10 @@ extern EFI_COMPONENT_NAME_PROTOCOL gEhciComponentName;
|
||||
#define OUTPUT_PACKET_ID 0xE1
|
||||
#define ERROR_PACKET_ID 0x55
|
||||
|
||||
#define bit(a) 1 << (a)
|
||||
|
||||
#define GET_0B_TO_31B(Addr) (((UINTN) Addr) & (0xffffffff))
|
||||
#define GET_32B_TO_63B(Addr) ((((UINTN) Addr) >> 32) & (0xffffffff))
|
||||
#define bit(a) 1 << (a)
|
||||
|
||||
#define GET_0B_TO_31B(Addr) (UINT32) (UINTN) (Addr)
|
||||
#define GET_32B_TO_63B(Addr) (UINT32) (RShiftU64(((UINT64) (UINTN) (Addr)), 32) & 0xffffffff)
|
||||
|
||||
//
|
||||
// Ehci Data and Ctrl Structures
|
||||
@@ -326,7 +325,7 @@ typedef struct _EHCI_QTD_ENTITY EHCI_QTD_ENTITY;
|
||||
typedef struct _EHCI_QH_ENTITY EHCI_QH_ENTITY;
|
||||
typedef struct _EHCI_ASYNC_REQUEST EHCI_ASYNC_REQUEST;
|
||||
|
||||
typedef struct _EHCI_QTD_ENTITY {
|
||||
struct _EHCI_QTD_ENTITY {
|
||||
EHCI_QTD_HW Qtd;
|
||||
UINT32 TotalBytes;
|
||||
UINT32 StaticTotalBytes;
|
||||
@@ -335,9 +334,9 @@ typedef struct _EHCI_QTD_ENTITY {
|
||||
EHCI_QTD_ENTITY *Next;
|
||||
EHCI_QTD_ENTITY *AltNext;
|
||||
EHCI_QH_ENTITY *SelfQh;
|
||||
} EHCI_QTD_ENTITY;
|
||||
};
|
||||
|
||||
typedef struct _EHCI_QH_ENTITY {
|
||||
struct _EHCI_QH_ENTITY {
|
||||
EHCI_QH_HW Qh;
|
||||
EHCI_QH_ENTITY *Next;
|
||||
EHCI_QH_ENTITY *Prev;
|
||||
@@ -346,7 +345,7 @@ typedef struct _EHCI_QH_ENTITY {
|
||||
EHCI_QTD_ENTITY *AltQtdPtr;
|
||||
UINTN Interval;
|
||||
UINT8 TransferType;
|
||||
} EHCI_QH_ENTITY;
|
||||
};
|
||||
|
||||
#define GET_QH_ENTITY_ADDR(a) ((EHCI_QH_ENTITY *) a)
|
||||
#define GET_QTD_ENTITY_ADDR(a) ((EHCI_QTD_ENTITY *) a)
|
||||
@@ -359,19 +358,14 @@ typedef struct _EHCI_QH_ENTITY {
|
||||
|
||||
#define USB2_HC_DEV_SIGNATURE EFI_SIGNATURE_32 ('e', 'h', 'c', 'i')
|
||||
|
||||
typedef struct _LIST_HEAD {
|
||||
struct _LIST_HEAD *pre;
|
||||
struct _LIST_HEAD *next;
|
||||
} LIST_HEAD;
|
||||
|
||||
typedef struct _EHCI_ASYNC_REQUEST {
|
||||
struct _EHCI_ASYNC_REQUEST {
|
||||
UINT8 TransferType;
|
||||
EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunc;
|
||||
VOID *Context;
|
||||
EHCI_ASYNC_REQUEST *Prev;
|
||||
EHCI_ASYNC_REQUEST *Next;
|
||||
EHCI_QH_ENTITY *QhPtr;
|
||||
} EHCI_ASYNC_REQUEST;
|
||||
};
|
||||
|
||||
typedef struct _MEMORY_MANAGE_HEADER {
|
||||
UINT8 *BitArrayPtr;
|
||||
|
@@ -261,7 +261,7 @@ Returns:
|
||||
|
||||
Status = AllocMemInMemoryBlock (
|
||||
TempHeaderPtr,
|
||||
Pool,
|
||||
(VOID **) Pool,
|
||||
RealAllocSize / 32
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
@@ -302,7 +302,7 @@ Returns:
|
||||
InsertMemoryHeaderToList (MemoryHeader, NewMemoryHeader);
|
||||
|
||||
Status = AllocMemInMemoryBlock (
|
||||
NewMemoryHeader,
|
||||
NewMemoryHeader,
|
||||
(VOID **) Pool,
|
||||
RealAllocSize / 32
|
||||
);
|
||||
|
@@ -1386,7 +1386,7 @@ Returns:
|
||||
Value = NULL;
|
||||
|
||||
if (!HwQtdPtr->AltNextQtdTerminate) {
|
||||
Value = (EHCI_QTD_HW *) GET_0B_TO_31B (HwQtdPtr->AltNextQtdPointer << 5);
|
||||
Value = (EHCI_QTD_HW *) (UINTN) GET_0B_TO_31B (HwQtdPtr->AltNextQtdPointer << 5);
|
||||
}
|
||||
|
||||
return Value;
|
||||
@@ -1417,7 +1417,7 @@ Returns:
|
||||
Value = NULL;
|
||||
|
||||
if (!HwQtdPtr->NextQtdTerminate) {
|
||||
Value = (EHCI_QTD_HW *) GET_0B_TO_31B (HwQtdPtr->NextQtdPointer << 5);
|
||||
Value = (EHCI_QTD_HW *) (UINTN) GET_0B_TO_31B (HwQtdPtr->NextQtdPointer << 5);
|
||||
}
|
||||
|
||||
return Value;
|
||||
@@ -1727,7 +1727,7 @@ Returns:
|
||||
if (!FrameEntryPtr->LinkTerminate) {
|
||||
//
|
||||
// Not Null FrameList
|
||||
//
|
||||
//
|
||||
FindQhHwPtr = (EHCI_QH_HW *) (UINTN) GET_0B_TO_31B (FrameEntryPtr->LinkPointer << 5);
|
||||
FindQhPtr = (EHCI_QH_ENTITY *) GET_QH_ENTITY_ADDR (FindQhHwPtr);
|
||||
//
|
||||
@@ -1742,12 +1742,12 @@ Returns:
|
||||
// Link Qh after FindQh
|
||||
//
|
||||
if (NULL != FindQhPtr->Next) {
|
||||
FindQhPtr->Next->Prev = QhPtr;
|
||||
FindQhPtr->Next->Prev = QhPtr;
|
||||
QhPtr->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(FindQhPtr->Next->Qh)) >> 5);
|
||||
QhPtr->Qh.SelectType = QH_SELECT_TYPE;
|
||||
QhPtr->Qh.QhTerminate = FALSE;
|
||||
}
|
||||
|
||||
|
||||
FindQhPtr->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (((UINTN)&(QhPtr->Qh)) >> 5);
|
||||
FindQhPtr->Qh.SelectType = QH_SELECT_TYPE;
|
||||
FindQhPtr->Qh.QhTerminate = FALSE;
|
||||
@@ -1762,7 +1762,7 @@ Returns:
|
||||
if (NULL == FindQhPtr->Prev) {
|
||||
//
|
||||
// Qh is the First one in Frame[0] List
|
||||
//
|
||||
//
|
||||
FrameEntryPtr->LinkPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Qh)) >> 5);
|
||||
FrameEntryPtr->SelectType = QH_SELECT_TYPE;
|
||||
FrameEntryPtr->LinkTerminate = FALSE;
|
||||
@@ -1770,12 +1770,12 @@ Returns:
|
||||
//
|
||||
// Qh is not the First one in Frame[0] List
|
||||
//
|
||||
FindQhPtr->Prev->Next = QhPtr;
|
||||
FindQhPtr->Prev->Next = QhPtr;
|
||||
FindQhPtr->Prev->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Qh)) >> 5);
|
||||
FindQhPtr->Prev->Qh.SelectType = QH_SELECT_TYPE;
|
||||
FindQhPtr->Prev->Qh.QhTerminate = FALSE;
|
||||
}
|
||||
|
||||
|
||||
QhPtr->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(FindQhPtr->Qh)) >> 5);
|
||||
QhPtr->Qh.SelectType = QH_SELECT_TYPE;
|
||||
QhPtr->Qh.QhTerminate = FALSE;
|
||||
@@ -1786,7 +1786,7 @@ Returns:
|
||||
} else {
|
||||
//
|
||||
// Link Qh after FindQh, Qh is the Last one
|
||||
//
|
||||
//
|
||||
FindQhPtr->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Qh)) >> 5);
|
||||
FindQhPtr->Prev->Qh.SelectType = QH_SELECT_TYPE;
|
||||
FindQhPtr->Qh.QhTerminate = FALSE;
|
||||
@@ -1798,7 +1798,7 @@ Returns:
|
||||
} else {
|
||||
//
|
||||
// Null FrameList
|
||||
//
|
||||
//
|
||||
FrameEntryPtr->LinkPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Qh)) >> 5);
|
||||
FrameEntryPtr->SelectType = QH_SELECT_TYPE;
|
||||
FrameEntryPtr->LinkTerminate = FALSE;
|
||||
@@ -1812,7 +1812,7 @@ Returns:
|
||||
//
|
||||
FrameIndex += QhPtr->Interval;
|
||||
while (FrameIndex < HcDev->PeriodicFrameListLength) {
|
||||
FrameEntryPtr = (FRAME_LIST_ENTRY *) (FrameEntryPtr + QhPtr->Interval);
|
||||
FrameEntryPtr = (FRAME_LIST_ENTRY *) (FrameEntryPtr + QhPtr->Interval);
|
||||
FrameEntryPtr->LinkPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Qh)) >> 5);
|
||||
FrameEntryPtr->SelectType = QH_SELECT_TYPE;
|
||||
FrameEntryPtr->LinkTerminate = FALSE;
|
||||
@@ -1825,7 +1825,7 @@ Returns:
|
||||
FrameIndex += QhPtr->Interval;
|
||||
while (FrameIndex < HcDev->PeriodicFrameListLength) {
|
||||
FrameEntryPtr = (FRAME_LIST_ENTRY *) (FrameEntryPtr + QhPtr->Interval);
|
||||
if ((FrameIndex % QhPtr->Prev->Interval) != 0) {
|
||||
if ((FrameIndex % QhPtr->Prev->Interval) != 0) {
|
||||
FrameEntryPtr->LinkPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Qh)) >> 5);
|
||||
FrameEntryPtr->SelectType = QH_SELECT_TYPE;
|
||||
FrameEntryPtr->LinkTerminate = FALSE;
|
||||
@@ -1843,7 +1843,7 @@ Returns:
|
||||
if (!FrameEntryPtr->LinkTerminate) {
|
||||
//
|
||||
// Not Null FrameList
|
||||
//
|
||||
//
|
||||
FindQhHwPtr = (EHCI_QH_HW *) (UINTN) GET_0B_TO_31B (FrameEntryPtr->LinkPointer << 5);
|
||||
FindQhPtr = (EHCI_QH_ENTITY *) GET_QH_ENTITY_ADDR (FindQhHwPtr);
|
||||
//
|
||||
@@ -1852,7 +1852,7 @@ Returns:
|
||||
while (NULL != FindQhPtr->Next) {
|
||||
FindQhPtr = FindQhPtr->Next;
|
||||
}
|
||||
|
||||
|
||||
FindQhPtr->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Qh)) >> 5);
|
||||
FindQhPtr->Qh.SelectType = QH_SELECT_TYPE;
|
||||
FindQhPtr->Qh.QhTerminate = FALSE;
|
||||
@@ -1862,7 +1862,7 @@ Returns:
|
||||
} else {
|
||||
//
|
||||
// Null FrameList
|
||||
//
|
||||
//
|
||||
FrameEntryPtr->LinkPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Qh)) >> 5);
|
||||
FrameEntryPtr->SelectType = QH_SELECT_TYPE;
|
||||
FrameEntryPtr->LinkTerminate = FALSE;
|
||||
@@ -1929,7 +1929,7 @@ Returns:
|
||||
FrameIndex += Interval;
|
||||
}
|
||||
} else {
|
||||
while (FrameIndex < HcDev->PeriodicFrameListLength) {
|
||||
while (FrameIndex < HcDev->PeriodicFrameListLength) {
|
||||
FrameEntryPtr->LinkPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Next->Qh)) >> 5);
|
||||
FrameEntryPtr->SelectType = QH_SELECT_TYPE;
|
||||
FrameEntryPtr->LinkTerminate = FALSE;
|
||||
@@ -1949,7 +1949,7 @@ Returns:
|
||||
QhPtr->Prev->Qh.QhHorizontalPointer = 0;
|
||||
QhPtr->Prev->Qh.SelectType = 0;
|
||||
QhPtr->Prev->Qh.QhTerminate = TRUE;
|
||||
} else {
|
||||
} else {
|
||||
QhPtr->Prev->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Next->Qh)) >> 5);
|
||||
QhPtr->Prev->Qh.SelectType = QH_SELECT_TYPE;
|
||||
QhPtr->Prev->Qh.QhTerminate = FALSE;
|
||||
@@ -3026,7 +3026,7 @@ Returns:
|
||||
Status = EFI_OUT_OF_RESOURCES;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
|
||||
QtdHwPtr = &(AsyncRequestPtr->QhPtr->FirstQtdPtr->Qtd);
|
||||
ReceiveBuffer = (UINT8 *) (UINTN) GET_0B_TO_31B ((QtdHwPtr->BufferPointer0 << 12) | AsyncRequestPtr->QhPtr->FirstQtdPtr->StaticCurrentOffset);
|
||||
CopyMem (
|
||||
|
Reference in New Issue
Block a user