\r
#include "Uhci.h"\r
\r
-\r
/**\r
Map address of request structure buffer.\r
\r
**/\r
EFI_STATUS\r
UhciMapUserRequest (\r
- IN USB_HC_DEV *Uhc,\r
- IN OUT VOID *Request,\r
- OUT UINT8 **MappedAddr,\r
- OUT VOID **Map\r
+ IN USB_HC_DEV *Uhc,\r
+ IN OUT VOID *Request,\r
+ OUT UINT8 **MappedAddr,\r
+ OUT VOID **Map\r
)\r
{\r
EFI_STATUS Status;\r
);\r
\r
if (!EFI_ERROR (Status)) {\r
- *MappedAddr = (UINT8 *) (UINTN) PhyAddr;\r
+ *MappedAddr = (UINT8 *)(UINTN)PhyAddr;\r
}\r
\r
return Status;\r
}\r
\r
-\r
/**\r
Map address of user data buffer.\r
\r
Status = EFI_SUCCESS;\r
\r
switch (Direction) {\r
- case EfiUsbDataIn:\r
- //\r
- // BusMasterWrite means cpu read\r
- //\r
- *PktId = INPUT_PACKET_ID;\r
- Status = Uhc->PciIo->Map (\r
- Uhc->PciIo,\r
- EfiPciIoOperationBusMasterWrite,\r
- Data,\r
- Len,\r
- &PhyAddr,\r
- Map\r
- );\r
-\r
- if (EFI_ERROR (Status)) {\r
- goto EXIT;\r
- }\r
-\r
- *MappedAddr = (UINT8 *) (UINTN) PhyAddr;\r
- break;\r
-\r
- case EfiUsbDataOut:\r
- *PktId = OUTPUT_PACKET_ID;\r
- Status = Uhc->PciIo->Map (\r
- Uhc->PciIo,\r
- EfiPciIoOperationBusMasterRead,\r
- Data,\r
- Len,\r
- &PhyAddr,\r
- Map\r
- );\r
-\r
- if (EFI_ERROR (Status)) {\r
- goto EXIT;\r
- }\r
-\r
- *MappedAddr = (UINT8 *) (UINTN) PhyAddr;\r
- break;\r
-\r
- case EfiUsbNoData:\r
- if ((Len != NULL) && (*Len != 0)) {\r
- Status = EFI_INVALID_PARAMETER;\r
- goto EXIT;\r
- }\r
-\r
- *PktId = OUTPUT_PACKET_ID;\r
- *MappedAddr = NULL;\r
- *Map = NULL;\r
- break;\r
-\r
- default:\r
- Status = EFI_INVALID_PARAMETER;\r
+ case EfiUsbDataIn:\r
+ //\r
+ // BusMasterWrite means cpu read\r
+ //\r
+ *PktId = INPUT_PACKET_ID;\r
+ Status = Uhc->PciIo->Map (\r
+ Uhc->PciIo,\r
+ EfiPciIoOperationBusMasterWrite,\r
+ Data,\r
+ Len,\r
+ &PhyAddr,\r
+ Map\r
+ );\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ goto EXIT;\r
+ }\r
+\r
+ *MappedAddr = (UINT8 *)(UINTN)PhyAddr;\r
+ break;\r
+\r
+ case EfiUsbDataOut:\r
+ *PktId = OUTPUT_PACKET_ID;\r
+ Status = Uhc->PciIo->Map (\r
+ Uhc->PciIo,\r
+ EfiPciIoOperationBusMasterRead,\r
+ Data,\r
+ Len,\r
+ &PhyAddr,\r
+ Map\r
+ );\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ goto EXIT;\r
+ }\r
+\r
+ *MappedAddr = (UINT8 *)(UINTN)PhyAddr;\r
+ break;\r
+\r
+ case EfiUsbNoData:\r
+ if ((Len != NULL) && (*Len != 0)) {\r
+ Status = EFI_INVALID_PARAMETER;\r
+ goto EXIT;\r
+ }\r
+\r
+ *PktId = OUTPUT_PACKET_ID;\r
+ *MappedAddr = NULL;\r
+ *Map = NULL;\r
+ break;\r
+\r
+ default:\r
+ Status = EFI_INVALID_PARAMETER;\r
}\r
\r
EXIT:\r
return Status;\r
}\r
\r
-\r
/**\r
Link the TD To QH.\r
\r
**/\r
VOID\r
UhciLinkTdToQh (\r
- IN USB_HC_DEV *Uhc,\r
- IN UHCI_QH_SW *Qh,\r
- IN UHCI_TD_SW *Td\r
+ IN USB_HC_DEV *Uhc,\r
+ IN UHCI_QH_SW *Qh,\r
+ IN UHCI_TD_SW *Td\r
)\r
{\r
EFI_PHYSICAL_ADDRESS PhyAddr;\r
ASSERT ((Qh != NULL) && (Td != NULL));\r
\r
Qh->QhHw.VerticalLink = QH_VLINK (PhyAddr, FALSE);\r
- Qh->TDs = (VOID *) Td;\r
+ Qh->TDs = (VOID *)Td;\r
}\r
\r
-\r
/**\r
Unlink TD from the QH.\r
\r
**/\r
VOID\r
UhciUnlinkTdFromQh (\r
- IN UHCI_QH_SW *Qh,\r
- IN UHCI_TD_SW *Td\r
+ IN UHCI_QH_SW *Qh,\r
+ IN UHCI_TD_SW *Td\r
)\r
{\r
ASSERT ((Qh != NULL) && (Td != NULL));\r
Qh->TDs = NULL;\r
}\r
\r
-\r
/**\r
Append a new TD To the previous TD.\r
\r
**/\r
VOID\r
UhciAppendTd (\r
- IN USB_HC_DEV *Uhc,\r
- IN UHCI_TD_SW *PrevTd,\r
- IN UHCI_TD_SW *ThisTd\r
+ IN USB_HC_DEV *Uhc,\r
+ IN UHCI_TD_SW *PrevTd,\r
+ IN UHCI_TD_SW *ThisTd\r
)\r
{\r
EFI_PHYSICAL_ADDRESS PhyAddr;\r
ASSERT ((PrevTd != NULL) && (ThisTd != NULL));\r
\r
PrevTd->TdHw.NextLink = TD_LINK (PhyAddr, TRUE, FALSE);\r
- PrevTd->NextTd = (VOID *) ThisTd;\r
+ PrevTd->NextTd = (VOID *)ThisTd;\r
}\r
\r
-\r
/**\r
Delete a list of TDs.\r
\r
**/\r
VOID\r
UhciDestoryTds (\r
- IN USB_HC_DEV *Uhc,\r
- IN UHCI_TD_SW *FirstTd\r
+ IN USB_HC_DEV *Uhc,\r
+ IN UHCI_TD_SW *FirstTd\r
)\r
{\r
- UHCI_TD_SW *NextTd;\r
- UHCI_TD_SW *ThisTd;\r
+ UHCI_TD_SW *NextTd;\r
+ UHCI_TD_SW *ThisTd;\r
\r
NextTd = FirstTd;\r
\r
while (NextTd != NULL) {\r
- ThisTd = NextTd;\r
- NextTd = ThisTd->NextTd;\r
+ ThisTd = NextTd;\r
+ NextTd = ThisTd->NextTd;\r
UsbHcFreeMem (Uhc->MemPool, ThisTd, sizeof (UHCI_TD_SW));\r
}\r
}\r
\r
-\r
/**\r
Create an initialize a new queue head.\r
\r
**/\r
UHCI_QH_SW *\r
UhciCreateQh (\r
- IN USB_HC_DEV *Uhc,\r
- IN UINTN Interval\r
+ IN USB_HC_DEV *Uhc,\r
+ IN UINTN Interval\r
)\r
{\r
- UHCI_QH_SW *Qh;\r
+ UHCI_QH_SW *Qh;\r
\r
Qh = UsbHcAllocateMem (Uhc->MemPool, sizeof (UHCI_QH_SW));\r
\r
\r
Qh->QhHw.HorizonLink = QH_HLINK (NULL, TRUE);\r
Qh->QhHw.VerticalLink = QH_VLINK (NULL, TRUE);\r
- Qh->Interval = UhciConvertPollRate(Interval);\r
+ Qh->Interval = UhciConvertPollRate (Interval);\r
Qh->TDs = NULL;\r
Qh->NextQh = NULL;\r
\r
return Qh;\r
}\r
\r
-\r
/**\r
Create and intialize a TD.\r
\r
**/\r
UHCI_TD_SW *\r
UhciCreateTd (\r
- IN USB_HC_DEV *Uhc\r
+ IN USB_HC_DEV *Uhc\r
)\r
{\r
- UHCI_TD_SW *Td;\r
+ UHCI_TD_SW *Td;\r
\r
- Td = UsbHcAllocateMem (Uhc->MemPool, sizeof (UHCI_TD_SW));\r
+ Td = UsbHcAllocateMem (Uhc->MemPool, sizeof (UHCI_TD_SW));\r
if (Td == NULL) {\r
return NULL;\r
}\r
return Td;\r
}\r
\r
-\r
/**\r
Create and initialize a TD for Setup Stage of a control transfer.\r
\r
**/\r
UHCI_TD_SW *\r
UhciCreateSetupTd (\r
- IN USB_HC_DEV *Uhc,\r
- IN UINT8 DevAddr,\r
- IN UINT8 *Request,\r
- IN UINT8 *RequestPhy,\r
- IN BOOLEAN IsLow\r
+ IN USB_HC_DEV *Uhc,\r
+ IN UINT8 DevAddr,\r
+ IN UINT8 *Request,\r
+ IN UINT8 *RequestPhy,\r
+ IN BOOLEAN IsLow\r
)\r
{\r
- UHCI_TD_SW *Td;\r
+ UHCI_TD_SW *Td;\r
\r
Td = UhciCreateTd (Uhc);\r
\r
Td->TdHw.EndPoint = 0;\r
Td->TdHw.LowSpeed = IsLow ? 1 : 0;\r
Td->TdHw.DeviceAddr = DevAddr & 0x7F;\r
- Td->TdHw.MaxPacketLen = (UINT32) (sizeof (EFI_USB_DEVICE_REQUEST) - 1);\r
+ Td->TdHw.MaxPacketLen = (UINT32)(sizeof (EFI_USB_DEVICE_REQUEST) - 1);\r
Td->TdHw.PidCode = SETUP_PACKET_ID;\r
- Td->TdHw.DataBuffer = (UINT32) (UINTN) RequestPhy;\r
+ Td->TdHw.DataBuffer = (UINT32)(UINTN)RequestPhy;\r
\r
- Td->Data = Request;\r
- Td->DataLen = (UINT16) sizeof (EFI_USB_DEVICE_REQUEST);\r
+ Td->Data = Request;\r
+ Td->DataLen = (UINT16)sizeof (EFI_USB_DEVICE_REQUEST);\r
\r
return Td;\r
}\r
\r
-\r
/**\r
Create a TD for data.\r
\r
**/\r
UHCI_TD_SW *\r
UhciCreateDataTd (\r
- IN USB_HC_DEV *Uhc,\r
- IN UINT8 DevAddr,\r
- IN UINT8 Endpoint,\r
- IN UINT8 *DataPtr,\r
- IN UINT8 *DataPhyPtr,\r
- IN UINTN Len,\r
- IN UINT8 PktId,\r
- IN UINT8 Toggle,\r
- IN BOOLEAN IsLow\r
+ IN USB_HC_DEV *Uhc,\r
+ IN UINT8 DevAddr,\r
+ IN UINT8 Endpoint,\r
+ IN UINT8 *DataPtr,\r
+ IN UINT8 *DataPhyPtr,\r
+ IN UINTN Len,\r
+ IN UINT8 PktId,\r
+ IN UINT8 Toggle,\r
+ IN BOOLEAN IsLow\r
)\r
{\r
UHCI_TD_SW *Td;\r
//\r
ASSERT (Len <= 0x500);\r
\r
- Td = UhciCreateTd (Uhc);\r
+ Td = UhciCreateTd (Uhc);\r
\r
if (Td == NULL) {\r
return NULL;\r
Td->TdHw.DataToggle = Toggle & 0x01;\r
Td->TdHw.EndPoint = Endpoint & 0x0F;\r
Td->TdHw.DeviceAddr = DevAddr & 0x7F;\r
- Td->TdHw.MaxPacketLen = (UINT32) (Len - 1);\r
- Td->TdHw.PidCode = (UINT8) PktId;\r
- Td->TdHw.DataBuffer = (UINT32) (UINTN) DataPhyPtr;\r
+ Td->TdHw.MaxPacketLen = (UINT32)(Len - 1);\r
+ Td->TdHw.PidCode = (UINT8)PktId;\r
+ Td->TdHw.DataBuffer = (UINT32)(UINTN)DataPhyPtr;\r
\r
- Td->Data = DataPtr;\r
- Td->DataLen = (UINT16) Len;\r
+ Td->Data = DataPtr;\r
+ Td->DataLen = (UINT16)Len;\r
\r
return Td;\r
}\r
\r
-\r
/**\r
Create TD for the Status Stage of control transfer.\r
\r
**/\r
UHCI_TD_SW *\r
UhciCreateStatusTd (\r
- IN USB_HC_DEV *Uhc,\r
- IN UINT8 DevAddr,\r
- IN UINT8 PktId,\r
- IN BOOLEAN IsLow\r
+ IN USB_HC_DEV *Uhc,\r
+ IN UINT8 DevAddr,\r
+ IN UINT8 PktId,\r
+ IN BOOLEAN IsLow\r
)\r
{\r
- UHCI_TD_SW *Td;\r
+ UHCI_TD_SW *Td;\r
\r
Td = UhciCreateTd (Uhc);\r
\r
Td->TdHw.IntOnCpl = FALSE;\r
Td->TdHw.ErrorCount = 0x03;\r
Td->TdHw.Status |= USBTD_ACTIVE;\r
- Td->TdHw.MaxPacketLen = 0x7FF; //0x7FF: there is no data (refer to UHCI spec)\r
+ Td->TdHw.MaxPacketLen = 0x7FF; // 0x7FF: there is no data (refer to UHCI spec)\r
Td->TdHw.DataToggle = 1;\r
Td->TdHw.EndPoint = 0;\r
Td->TdHw.LowSpeed = IsLow ? 1 : 0;\r
Td->TdHw.DeviceAddr = DevAddr & 0x7F;\r
- Td->TdHw.PidCode = (UINT8) PktId;\r
- Td->TdHw.DataBuffer = (UINT32) (UINTN) NULL;\r
+ Td->TdHw.PidCode = (UINT8)PktId;\r
+ Td->TdHw.DataBuffer = (UINT32)(UINTN)NULL;\r
\r
- Td->Data = NULL;\r
- Td->DataLen = 0;\r
+ Td->Data = NULL;\r
+ Td->DataLen = 0;\r
\r
return Td;\r
}\r
\r
-\r
/**\r
Create Tds list for Control Transfer.\r
\r
**/\r
UHCI_TD_SW *\r
UhciCreateCtrlTds (\r
- IN USB_HC_DEV *Uhc,\r
- IN UINT8 DeviceAddr,\r
- IN UINT8 DataPktId,\r
- IN UINT8 *Request,\r
- IN UINT8 *RequestPhy,\r
- IN UINT8 *Data,\r
- IN UINT8 *DataPhy,\r
- IN UINTN DataLen,\r
- IN UINT8 MaxPacket,\r
- IN BOOLEAN IsLow\r
+ IN USB_HC_DEV *Uhc,\r
+ IN UINT8 DeviceAddr,\r
+ IN UINT8 DataPktId,\r
+ IN UINT8 *Request,\r
+ IN UINT8 *RequestPhy,\r
+ IN UINT8 *Data,\r
+ IN UINT8 *DataPhy,\r
+ IN UINTN DataLen,\r
+ IN UINT8 MaxPacket,\r
+ IN BOOLEAN IsLow\r
)\r
{\r
- UHCI_TD_SW *SetupTd;\r
- UHCI_TD_SW *FirstDataTd;\r
- UHCI_TD_SW *DataTd;\r
- UHCI_TD_SW *PrevDataTd;\r
- UHCI_TD_SW *StatusTd;\r
- UINT8 DataToggle;\r
- UINT8 StatusPktId;\r
- UINTN ThisTdLen;\r
-\r
+ UHCI_TD_SW *SetupTd;\r
+ UHCI_TD_SW *FirstDataTd;\r
+ UHCI_TD_SW *DataTd;\r
+ UHCI_TD_SW *PrevDataTd;\r
+ UHCI_TD_SW *StatusTd;\r
+ UINT8 DataToggle;\r
+ UINT8 StatusPktId;\r
+ UINTN ThisTdLen;\r
\r
DataTd = NULL;\r
SetupTd = NULL;\r
Uhc,\r
DeviceAddr,\r
0,\r
- Data, //cpu memory address\r
- DataPhy, //Pci memory address\r
+ Data, // cpu memory address\r
+ DataPhy, // Pci memory address\r
ThisTdLen,\r
DataPktId,\r
DataToggle,\r
}\r
\r
DataToggle ^= 1;\r
- PrevDataTd = DataTd;\r
- Data += ThisTdLen;\r
- DataPhy += ThisTdLen;\r
- DataLen -= ThisTdLen;\r
+ PrevDataTd = DataTd;\r
+ Data += ThisTdLen;\r
+ DataPhy += ThisTdLen;\r
+ DataLen -= ThisTdLen;\r
}\r
\r
//\r
return NULL;\r
}\r
\r
-\r
/**\r
Create Tds list for Bulk/Interrupt Transfer.\r
\r
**/\r
UHCI_TD_SW *\r
UhciCreateBulkOrIntTds (\r
- IN USB_HC_DEV *Uhc,\r
- IN UINT8 DevAddr,\r
- IN UINT8 EndPoint,\r
- IN UINT8 PktId,\r
- IN UINT8 *Data,\r
- IN UINT8 *DataPhy,\r
- IN UINTN DataLen,\r
- IN OUT UINT8 *DataToggle,\r
- IN UINT8 MaxPacket,\r
- IN BOOLEAN IsLow\r
+ IN USB_HC_DEV *Uhc,\r
+ IN UINT8 DevAddr,\r
+ IN UINT8 EndPoint,\r
+ IN UINT8 PktId,\r
+ IN UINT8 *Data,\r
+ IN UINT8 *DataPhy,\r
+ IN UINTN DataLen,\r
+ IN OUT UINT8 *DataToggle,\r
+ IN UINT8 MaxPacket,\r
+ IN BOOLEAN IsLow\r
)\r
{\r
- UHCI_TD_SW *DataTd;\r
- UHCI_TD_SW *FirstDataTd;\r
- UHCI_TD_SW *PrevDataTd;\r
- UINTN ThisTdLen;\r
+ UHCI_TD_SW *DataTd;\r
+ UHCI_TD_SW *FirstDataTd;\r
+ UHCI_TD_SW *PrevDataTd;\r
+ UINTN ThisTdLen;\r
\r
DataTd = NULL;\r
FirstDataTd = NULL;\r