summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Bus/Pci/EhciDxe
diff options
context:
space:
mode:
authorerictian <erictian@6f19259b-4bc3-4df7-8a09-765794883524>2010-03-19 06:54:35 +0000
committererictian <erictian@6f19259b-4bc3-4df7-8a09-765794883524>2010-03-19 06:54:35 +0000
commitaa91de055c5e15a716f3a0ce6bf5a1c28fda9e56 (patch)
tree33ac167e3bd420086aeb2fecabc0332733f4130d /MdeModulePkg/Bus/Pci/EhciDxe
parent33f30f1ee3490739c6b84de1bbecc3f9a63a5591 (diff)
downloadedk2-platforms-aa91de055c5e15a716f3a0ce6bf5a1c28fda9e56.tar.xz
Fix a bug that usb keybarod can not work well when it is inserted at a usb 2.0 hub.
It's due to AsyncInterruptList does not update the corresponding QTDHw->Data with pci bus master address. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10286 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Bus/Pci/EhciDxe')
-rw-r--r--MdeModulePkg/Bus/Pci/EhciDxe/EhciSched.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/MdeModulePkg/Bus/Pci/EhciDxe/EhciSched.c b/MdeModulePkg/Bus/Pci/EhciDxe/EhciSched.c
index 58d4a303dc..0b9d7608ac 100644
--- a/MdeModulePkg/Bus/Pci/EhciDxe/EhciSched.c
+++ b/MdeModulePkg/Bus/Pci/EhciDxe/EhciSched.c
@@ -904,7 +904,12 @@ EhcUpdateAsyncRequest (
QtdHw->ErrCnt = QTD_MAX_ERR;
QtdHw->CurPage = 0;
QtdHw->TotalBytes = (UINT32) Qtd->DataLen;
- QtdHw->Page[0] = EHC_LOW_32BIT (Qtd->Data);
+ //
+ // calculate physical address by offset.
+ //
+ PciAddr = (UINTN)Urb->DataPhy + ((UINTN)Qtd->Data - (UINTN)Urb->Data);
+ QtdHw->Page[0] = EHC_LOW_32BIT (PciAddr);
+ QtdHw->PageHigh[0]= EHC_HIGH_32BIT (PciAddr);
}
//