[USBOHCI_NEW] Avoid storing pointers as ULONG and physical addresses as pointers.

This commit is contained in:
Thomas Faber 2018-09-01 18:23:25 +02:00
parent 0dfa7356c8
commit c188e387e3
No known key found for this signature in database
GPG key ID: 076E7C3D44720826
2 changed files with 39 additions and 39 deletions

View file

@ -239,7 +239,7 @@ OHCI_InitializeTDs(IN POHCI_ENDPOINT OhciEndpoint,
TdVA = OhciEndpoint->FirstTD; TdVA = OhciEndpoint->FirstTD;
TdPA = (ULONG)EndpointProperties->BufferPA + sizeof(OHCI_HCD_ED); TdPA = EndpointProperties->BufferPA + sizeof(OHCI_HCD_ED);
for (ix = 0; ix < TdCount; ix++) for (ix = 0; ix < TdCount; ix++)
{ {
@ -673,9 +673,9 @@ OHCI_StartController(IN PVOID ohciExtension,
} }
OhciExtension->HcResourcesVA = (POHCI_HC_RESOURCES)Resources->StartVA; OhciExtension->HcResourcesVA = (POHCI_HC_RESOURCES)Resources->StartVA;
OhciExtension->HcResourcesPA = (POHCI_HC_RESOURCES)Resources->StartPA; OhciExtension->HcResourcesPA = Resources->StartPA;
DPRINT_OHCI("OHCI_StartController: HcResourcesVA - %p, HcResourcesPA - %p\n", DPRINT_OHCI("OHCI_StartController: HcResourcesVA - %p, HcResourcesPA - %lx\n",
OhciExtension->HcResourcesVA, OhciExtension->HcResourcesVA,
OhciExtension->HcResourcesPA); OhciExtension->HcResourcesPA);
@ -685,7 +685,7 @@ OHCI_StartController(IN PVOID ohciExtension,
for (ix = 0; ix < INTERRUPT_ENDPOINTs; ix++) for (ix = 0; ix < INTERRUPT_ENDPOINTs; ix++)
{ {
IntED = &OhciExtension->HcResourcesVA->InterrruptHeadED[ix]; IntED = &OhciExtension->HcResourcesVA->InterrruptHeadED[ix];
IntEdPA = (ULONG_PTR)&OhciExtension->HcResourcesPA->InterrruptHeadED[ix]; IntEdPA = OhciExtension->HcResourcesPA + FIELD_OFFSET(OHCI_HC_RESOURCES, InterrruptHeadED[ix]);
if (ix == (ENDPOINT_INTERRUPT_1ms - 1)) if (ix == (ENDPOINT_INTERRUPT_1ms - 1))
{ {
@ -819,7 +819,7 @@ OHCI_StartController(IN PVOID ohciExtension,
/* Setup HcHCCA register */ /* Setup HcHCCA register */
WRITE_REGISTER_ULONG(&OperationalRegs->HcHCCA, WRITE_REGISTER_ULONG(&OperationalRegs->HcHCCA,
(ULONG)&OhciExtension->HcResourcesPA->HcHCCA); OhciExtension->HcResourcesPA + FIELD_OFFSET(OHCI_HC_RESOURCES, HcHCCA));
/* Setup HcInterruptEnable register */ /* Setup HcInterruptEnable register */
Interrupts.AsULONG = 0; Interrupts.AsULONG = 0;
@ -1249,7 +1249,7 @@ OHCI_RemainTDs(IN POHCI_EXTENSION OhciExtension,
DPRINT_OHCI("OHCI_RemainTDs: ... \n"); DPRINT_OHCI("OHCI_RemainTDs: ... \n");
MaxTDs = OhciEndpoint->MaxTransferDescriptors; MaxTDs = OhciEndpoint->MaxTransferDescriptors;
TD = (POHCI_HCD_TD)OhciEndpoint->FirstTD; TD = OhciEndpoint->FirstTD;
RemainTDs = 0; RemainTDs = 0;
@ -1273,7 +1273,7 @@ OHCI_ControlTransfer(IN POHCI_EXTENSION OhciExtension,
IN PUSBPORT_SCATTER_GATHER_LIST SGList) IN PUSBPORT_SCATTER_GATHER_LIST SGList)
{ {
POHCI_HCD_TD FirstTD; POHCI_HCD_TD FirstTD;
POHCI_HCD_TD FirstTdPA; ULONG FirstTdPA;
POHCI_HCD_TD TD; POHCI_HCD_TD TD;
POHCI_HCD_TD TD2; POHCI_HCD_TD TD2;
POHCI_HCD_TD PrevTD; POHCI_HCD_TD PrevTD;
@ -1302,7 +1302,7 @@ OHCI_ControlTransfer(IN POHCI_EXTENSION OhciExtension,
FirstTD->Flags |= OHCI_HCD_TD_FLAG_PROCESSED; FirstTD->Flags |= OHCI_HCD_TD_FLAG_PROCESSED;
FirstTD->NextHcdTD = 0; FirstTD->NextHcdTD = 0;
FirstTD->OhciTransfer = (ULONG)OhciTransfer; FirstTD->OhciTransfer = OhciTransfer;
FirstTD->HwTD.Padded[0] = 0; FirstTD->HwTD.Padded[0] = 0;
FirstTD->HwTD.Padded[1] = 0; FirstTD->HwTD.Padded[1] = 0;
@ -1313,11 +1313,11 @@ OHCI_ControlTransfer(IN POHCI_EXTENSION OhciExtension,
&TransferParameters->SetupPacket, &TransferParameters->SetupPacket,
sizeof(FirstTD->HwTD.SetupPacket)); sizeof(FirstTD->HwTD.SetupPacket));
FirstTdPA = (POHCI_HCD_TD)FirstTD->PhysicalAddress; FirstTdPA = FirstTD->PhysicalAddress;
FirstTD->HwTD.gTD.CurrentBuffer = (ULONG)&FirstTdPA->HwTD.SetupPacket; FirstTD->HwTD.gTD.CurrentBuffer = FirstTdPA + FIELD_OFFSET(OHCI_HCD_TD, HwTD.SetupPacket);
BufferEnd = (ULONG_PTR)&FirstTdPA->HwTD.SetupPacket + BufferEnd = FirstTdPA + FIELD_OFFSET(OHCI_HCD_TD, HwTD.SetupPacket) +
sizeof(USB_DEFAULT_PIPE_SETUP_PACKET) - 1; sizeof(USB_DEFAULT_PIPE_SETUP_PACKET) - 1;
FirstTD->HwTD.gTD.BufferEnd = BufferEnd; FirstTD->HwTD.gTD.BufferEnd = BufferEnd;
@ -1336,7 +1336,7 @@ OHCI_ControlTransfer(IN POHCI_EXTENSION OhciExtension,
TD2->Flags |= OHCI_HCD_TD_FLAG_PROCESSED; TD2->Flags |= OHCI_HCD_TD_FLAG_PROCESSED;
TD2->NextHcdTD = 0; TD2->NextHcdTD = 0;
TD2->OhciTransfer = (ULONG)OhciTransfer; TD2->OhciTransfer = OhciTransfer;
RtlZeroMemory(&TD2->HwTD.SetupPacket, RtlZeroMemory(&TD2->HwTD.SetupPacket,
sizeof(TD2->HwTD.SetupPacket)); sizeof(TD2->HwTD.SetupPacket));
@ -1348,7 +1348,7 @@ OHCI_ControlTransfer(IN POHCI_EXTENSION OhciExtension,
TD = TD2; TD = TD2;
PrevTD->HwTD.gTD.NextTD = TD2->PhysicalAddress; PrevTD->HwTD.gTD.NextTD = TD2->PhysicalAddress;
PrevTD->NextHcdTD = (ULONG)TD2; PrevTD->NextHcdTD = TD2;
MaxPacketSize = OhciEndpoint->EndpointProperties.TotalMaxPacketSize; MaxPacketSize = OhciEndpoint->EndpointProperties.TotalMaxPacketSize;
@ -1387,7 +1387,7 @@ OHCI_ControlTransfer(IN POHCI_EXTENSION OhciExtension,
TD->HwTD.gTD.Control.DelayInterrupt = OHCI_TD_INTERRUPT_NONE; TD->HwTD.gTD.Control.DelayInterrupt = OHCI_TD_INTERRUPT_NONE;
TD->NextHcdTD = 0; TD->NextHcdTD = 0;
TD->OhciTransfer = (ULONG)OhciTransfer; TD->OhciTransfer = OhciTransfer;
TD->HwTD.gTD.CurrentBuffer = 0; TD->HwTD.gTD.CurrentBuffer = 0;
TD->HwTD.gTD.BufferEnd = 0; TD->HwTD.gTD.BufferEnd = 0;
@ -1399,7 +1399,7 @@ OHCI_ControlTransfer(IN POHCI_EXTENSION OhciExtension,
TD->HwTD.Padded[1] = 0; TD->HwTD.Padded[1] = 0;
PrevTD->HwTD.gTD.NextTD = TD->PhysicalAddress; PrevTD->HwTD.gTD.NextTD = TD->PhysicalAddress;
PrevTD->NextHcdTD = (ULONG)TD; PrevTD->NextHcdTD = TD;
} }
if (TransferParameters->TransferFlags & USBD_SHORT_TRANSFER_OK) if (TransferParameters->TransferFlags & USBD_SHORT_TRANSFER_OK)
@ -1435,7 +1435,7 @@ OHCI_ControlTransfer(IN POHCI_EXTENSION OhciExtension,
NextTD = OHCI_AllocateTD(OhciExtension, OhciEndpoint); NextTD = OHCI_AllocateTD(OhciExtension, OhciEndpoint);
TD->HwTD.gTD.NextTD = NextTD->PhysicalAddress; TD->HwTD.gTD.NextTD = NextTD->PhysicalAddress;
TD->NextHcdTD = (ULONG)NextTD; TD->NextHcdTD = NextTD;
NextTD->NextHcdTD = 0; NextTD->NextHcdTD = 0;
NextTD->HwTD.gTD.NextTD = 0; NextTD->HwTD.gTD.NextTD = 0;
@ -1503,7 +1503,7 @@ OHCI_BulkOrInterruptTransfer(IN POHCI_EXTENSION OhciExtension,
TD->HwTD.Padded[1] = 0; TD->HwTD.Padded[1] = 0;
TD->Flags |= OHCI_HCD_TD_FLAG_PROCESSED; TD->Flags |= OHCI_HCD_TD_FLAG_PROCESSED;
TD->OhciTransfer = (ULONG)OhciTransfer; TD->OhciTransfer = OhciTransfer;
TD->NextHcdTD = 0; TD->NextHcdTD = 0;
if (TransferParameters->TransferBufferLength) if (TransferParameters->TransferBufferLength)
@ -1533,7 +1533,7 @@ OHCI_BulkOrInterruptTransfer(IN POHCI_EXTENSION OhciExtension,
OhciTransfer->PendingTDs++; OhciTransfer->PendingTDs++;
PrevTD->HwTD.gTD.NextTD = TD->PhysicalAddress; PrevTD->HwTD.gTD.NextTD = TD->PhysicalAddress;
PrevTD->NextHcdTD = (ULONG)TD; PrevTD->NextHcdTD = TD;
} }
while (TransferedLen < TransferParameters->TransferBufferLength); while (TransferedLen < TransferParameters->TransferBufferLength);
@ -1545,7 +1545,7 @@ OHCI_BulkOrInterruptTransfer(IN POHCI_EXTENSION OhciExtension,
PrevTD->HwTD.gTD.Control.DelayInterrupt = OHCI_TD_INTERRUPT_IMMEDIATE; PrevTD->HwTD.gTD.Control.DelayInterrupt = OHCI_TD_INTERRUPT_IMMEDIATE;
PrevTD->HwTD.gTD.NextTD = TD->PhysicalAddress; PrevTD->HwTD.gTD.NextTD = TD->PhysicalAddress;
PrevTD->NextHcdTD = (ULONG)TD; PrevTD->NextHcdTD = TD;
TD->HwTD.gTD.NextTD = 0; TD->HwTD.gTD.NextTD = 0;
TD->NextHcdTD = 0; TD->NextHcdTD = 0;
@ -1630,7 +1630,7 @@ OHCI_ProcessDoneTD(IN POHCI_EXTENSION OhciExtension,
DPRINT_OHCI("OHCI_ProcessDoneTD: ... \n"); DPRINT_OHCI("OHCI_ProcessDoneTD: ... \n");
OhciTransfer = (POHCI_TRANSFER)TD->OhciTransfer; OhciTransfer = TD->OhciTransfer;
OhciEndpoint = OhciTransfer->OhciEndpoint; OhciEndpoint = OhciTransfer->OhciEndpoint;
OhciTransfer->PendingTDs--; OhciTransfer->PendingTDs--;
@ -1735,7 +1735,7 @@ OHCI_AbortTransfer(IN PVOID ohciExtension,
OhciExtension, OhciExtension,
OhciEndpoint); OhciEndpoint);
if (NextTD->OhciTransfer == (ULONG)OhciTransfer) if (NextTD->OhciTransfer == OhciTransfer)
{ {
LastTD = OhciTransfer->NextTD; LastTD = OhciTransfer->NextTD;
@ -1748,7 +1748,7 @@ OHCI_AbortTransfer(IN PVOID ohciExtension,
{ {
TD = &OhciEndpoint->FirstTD[ix]; TD = &OhciEndpoint->FirstTD[ix];
if (TD->OhciTransfer == (ULONG)OhciTransfer) if (TD->OhciTransfer == OhciTransfer)
{ {
if (IsIsoEndpoint) if (IsIsoEndpoint)
OHCI_ProcessDoneIsoTD(OhciExtension, TD, FALSE); OHCI_ProcessDoneIsoTD(OhciExtension, TD, FALSE);
@ -1768,10 +1768,10 @@ OHCI_AbortTransfer(IN PVOID ohciExtension,
do do
{ {
if (TD->OhciTransfer == (ULONG)ohciTransfer) if (TD->OhciTransfer == ohciTransfer)
{ {
PrevTD = TD; PrevTD = TD;
TD = (POHCI_HCD_TD)TD->NextHcdTD; TD = TD->NextHcdTD;
if (PrevTD == OhciEndpoint->HcdHeadP) if (PrevTD == OhciEndpoint->HcdHeadP)
OhciEndpoint->HcdHeadP = TD; OhciEndpoint->HcdHeadP = TD;
@ -1785,7 +1785,7 @@ OHCI_AbortTransfer(IN PVOID ohciExtension,
} }
else else
{ {
TD = (POHCI_HCD_TD)TD->NextHcdTD; TD = TD->NextHcdTD;
} }
} }
while (TD != NextTD); while (TD != NextTD);
@ -1799,7 +1799,7 @@ OHCI_AbortTransfer(IN PVOID ohciExtension,
while (TD != OhciEndpoint->HcdTailP) while (TD != OhciEndpoint->HcdTailP)
{ {
if (TD->OhciTransfer == (ULONG)OhciTransfer) if (TD->OhciTransfer == OhciTransfer)
{ {
td = TD; td = TD;
break; break;
@ -1807,7 +1807,7 @@ OHCI_AbortTransfer(IN PVOID ohciExtension,
LastTD = TD; LastTD = TD;
TD = (POHCI_HCD_TD)TD->NextHcdTD; TD = TD->NextHcdTD;
} }
TD = td; TD = td;
@ -1818,19 +1818,19 @@ OHCI_AbortTransfer(IN PVOID ohciExtension,
break; break;
PrevTD = TD; PrevTD = TD;
TD = (POHCI_HCD_TD)TD->NextHcdTD; TD = TD->NextHcdTD;
if (IsIsoEndpoint) if (IsIsoEndpoint)
OHCI_ProcessDoneIsoTD(OhciExtension, PrevTD, FALSE); OHCI_ProcessDoneIsoTD(OhciExtension, PrevTD, FALSE);
else else
OHCI_ProcessDoneTD(OhciExtension, PrevTD, FALSE); OHCI_ProcessDoneTD(OhciExtension, PrevTD, FALSE);
} }
while (TD->OhciTransfer == (ULONG)OhciTransfer); while (TD->OhciTransfer == OhciTransfer);
TmpTransfer = (POHCI_TRANSFER)LastTD->OhciTransfer; TmpTransfer = LastTD->OhciTransfer;
TmpTransfer->NextTD = TD; TmpTransfer->NextTD = TD;
LastTD->NextHcdTD = (ULONG)TD; LastTD->NextHcdTD = TD;
LastTD->HwTD.gTD.NextTD = TD->PhysicalAddress; LastTD->HwTD.gTD.NextTD = TD->PhysicalAddress;
} }
@ -1991,7 +1991,7 @@ OHCI_PollAsyncEndpoint(IN POHCI_EXTENSION OhciExtension,
IsResetOnHalt = (ED->Flags & OHCI_HCD_ED_FLAG_RESET_ON_HALT) != 0; IsResetOnHalt = (ED->Flags & OHCI_HCD_ED_FLAG_RESET_ON_HALT) != 0;
DPRINT1("PollAsyncEndpoint: IsResetOnHalt %x\n", IsResetOnHalt); DPRINT1("PollAsyncEndpoint: IsResetOnHalt %x\n", IsResetOnHalt);
for (TD = OhciEndpoint->HcdHeadP; ; TD = (POHCI_HCD_TD)TD->NextHcdTD) for (TD = OhciEndpoint->HcdHeadP; ; TD = TD->NextHcdTD)
{ {
if (!TD) if (!TD)
{ {
@ -2005,7 +2005,7 @@ OHCI_PollAsyncEndpoint(IN POHCI_EXTENSION OhciExtension,
goto HandleDoneList; goto HandleDoneList;
} }
OhciTransfer = (POHCI_TRANSFER)TD->OhciTransfer; OhciTransfer = TD->OhciTransfer;
ConditionCode = TD->HwTD.gTD.Control.ConditionCode; ConditionCode = TD->HwTD.gTD.Control.ConditionCode;
DPRINT("TD - %p, ConditionCode - %X\n", TD, ConditionCode); DPRINT("TD - %p, ConditionCode - %X\n", TD, ConditionCode);
@ -2056,7 +2056,7 @@ OHCI_PollAsyncEndpoint(IN POHCI_EXTENSION OhciExtension,
do do
{ {
transfer = (POHCI_TRANSFER)transfer->NextTD->OhciTransfer; transfer = transfer->NextTD->OhciTransfer;
NextTD = transfer->NextTD; NextTD = transfer->NextTD;
} }
while (transfer && TransferNumber == while (transfer && TransferNumber ==
@ -2111,7 +2111,7 @@ ProcessListTDs:
OHCI_DumpHcdTD(TD); OHCI_DumpHcdTD(TD);
TD->Flags |= OHCI_HCD_TD_FLAG_DONE; TD->Flags |= OHCI_HCD_TD_FLAG_DONE;
InsertTailList(&OhciEndpoint->TDList, &TD->DoneLink); InsertTailList(&OhciEndpoint->TDList, &TD->DoneLink);
TD = (POHCI_HCD_TD)TD->NextHcdTD; TD = TD->NextHcdTD;
} }
HandleDoneList: HandleDoneList:

View file

@ -58,8 +58,8 @@ typedef struct _OHCI_HCD_TD {
/* Software part */ /* Software part */
ULONG PhysicalAddress; ULONG PhysicalAddress;
ULONG Flags; ULONG Flags;
ULONG OhciTransfer; POHCI_TRANSFER OhciTransfer;
ULONG NextHcdTD; struct _OHCI_HCD_TD *NextHcdTD;
ULONG TransferLen; ULONG TransferLen;
LIST_ENTRY DoneLink; LIST_ENTRY DoneLink;
ULONG Pad[1]; ULONG Pad[1];
@ -144,7 +144,7 @@ typedef struct _OHCI_EXTENSION {
ULONG FrameHighPart; ULONG FrameHighPart;
ULONG HcdFmNumber; ULONG HcdFmNumber;
POHCI_HC_RESOURCES HcResourcesVA; POHCI_HC_RESOURCES HcResourcesVA;
POHCI_HC_RESOURCES HcResourcesPA; ULONG HcResourcesPA;
OHCI_STATIC_ED IntStaticED[63]; OHCI_STATIC_ED IntStaticED[63];
OHCI_STATIC_ED ControlStaticED; OHCI_STATIC_ED ControlStaticED;
OHCI_STATIC_ED BulkStaticED; OHCI_STATIC_ED BulkStaticED;