]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Bus/Pci/Uhci/Dxe/uhci.c
Make EdkModulePkg pass Intel IPF compiler with /W4 /WX switches, solving warning...
[mirror_edk2.git] / EdkModulePkg / Bus / Pci / Uhci / Dxe / uhci.c
index 96c5be48ba22373e8a4d534c803cd9ee5f0600c0..b3cb1f543dab18ef324a700f258212fc10aa2ae5 100644 (file)
@@ -21,342 +21,6 @@ Revision History
 \r
 #include "uhci.h"\r
 \r
-//\r
-// Prototypes\r
-// Driver model protocol interface\r
-//\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIDriverBindingSupported (\r
-  IN EFI_DRIVER_BINDING_PROTOCOL     *This,\r
-  IN EFI_HANDLE                      Controller,\r
-  IN EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIDriverBindingStart (\r
-  IN EFI_DRIVER_BINDING_PROTOCOL     *This,\r
-  IN EFI_HANDLE                      Controller,\r
-  IN EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIDriverBindingStop (\r
-  IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
-  IN  EFI_HANDLE                      Controller,\r
-  IN  UINTN                           NumberOfChildren,\r
-  IN  EFI_HANDLE                      *ChildHandleBuffer\r
-  );\r
-\r
-//\r
-// UHCI interface functions\r
-//\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIReset (\r
-  IN  EFI_USB_HC_PROTOCOL     *This,\r
-  IN  UINT16                  Attributes\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIGetState (\r
-  IN  EFI_USB_HC_PROTOCOL     *This,\r
-  OUT EFI_USB_HC_STATE        *State\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCISetState (\r
-  IN  EFI_USB_HC_PROTOCOL     *This,\r
-  IN  EFI_USB_HC_STATE        State\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIControlTransfer (\r
-  IN       EFI_USB_HC_PROTOCOL        *This,\r
-  IN       UINT8                      DeviceAddress,\r
-  IN       BOOLEAN                    IsSlowDevice,\r
-  IN       UINT8                      MaximumPacketLength,\r
-  IN       EFI_USB_DEVICE_REQUEST     *Request,\r
-  IN       EFI_USB_DATA_DIRECTION     TransferDirection,\r
-  IN OUT   VOID                       *Data, OPTIONAL\r
-  IN OUT   UINTN                      *DataLength, OPTIONAL\r
-  IN       UINTN                      TimeOut,\r
-  OUT      UINT32                     *TransferResult\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIBulkTransfer (\r
-  IN       EFI_USB_HC_PROTOCOL     *This,\r
-  IN       UINT8                   DeviceAddress,\r
-  IN       UINT8                   EndPointAddress,\r
-  IN       UINT8                   MaximumPacketLength,\r
-  IN OUT   VOID                    *Data,\r
-  IN OUT   UINTN                   *DataLength,\r
-  IN OUT   UINT8                   *DataToggle,\r
-  IN       UINTN                   TimeOut,\r
-  OUT      UINT32                  *TransferResult\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIAsyncInterruptTransfer (\r
-  IN       EFI_USB_HC_PROTOCOL                * This,\r
-  IN       UINT8                              DeviceAddress,\r
-  IN       UINT8                              EndPointAddress,\r
-  IN       BOOLEAN                            IsSlowDevice,\r
-  IN       UINT8                              MaximumPacketLength,\r
-  IN       BOOLEAN                            IsNewTransfer,\r
-  IN OUT   UINT8                              *DataToggle,\r
-  IN       UINTN                              PollingInterval, OPTIONAL\r
-  IN       UINTN                              DataLength, OPTIONAL\r
-  IN       EFI_ASYNC_USB_TRANSFER_CALLBACK    CallBackFunction, OPTIONAL\r
-  IN       VOID                               *Context OPTIONAL\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCISyncInterruptTransfer (\r
-  IN       EFI_USB_HC_PROTOCOL     *This,\r
-  IN       UINT8                   DeviceAddress,\r
-  IN       UINT8                   EndPointAddress,\r
-  IN       BOOLEAN                 IsSlowDevice,\r
-  IN       UINT8                   MaximumPacketLength,\r
-  IN OUT   VOID                    *Data,\r
-  IN OUT   UINTN                   *DataLength,\r
-  IN OUT   UINT8                   *DataToggle,\r
-  IN       UINTN                   TimeOut,\r
-  OUT      UINT32                  *TransferResult\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIIsochronousTransfer (\r
-  IN       EFI_USB_HC_PROTOCOL     *This,\r
-  IN       UINT8                   DeviceAddress,\r
-  IN       UINT8                   EndPointAddress,\r
-  IN       UINT8                   MaximumPacketLength,\r
-  IN OUT   VOID                    *Data,\r
-  IN       UINTN                   DataLength,\r
-  OUT      UINT32                  *TransferResult\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIAsyncIsochronousTransfer (\r
-  IN       EFI_USB_HC_PROTOCOL                 * This,\r
-  IN       UINT8                               DeviceAddress,\r
-  IN       UINT8                               EndPointAddress,\r
-  IN       UINT8                               MaximumPacketLength,\r
-  IN OUT   VOID                                *Data,\r
-  IN       UINTN                               DataLength,\r
-  IN       EFI_ASYNC_USB_TRANSFER_CALLBACK     IsochronousCallBack,\r
-  IN       VOID                                *Context OPTIONAL\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIGetRootHubPortNumber (\r
-  IN  EFI_USB_HC_PROTOCOL     *This,\r
-  OUT UINT8                   *PortNumber\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIGetRootHubPortStatus (\r
-  IN  EFI_USB_HC_PROTOCOL     *This,\r
-  IN  UINT8                   PortNumber,\r
-  OUT EFI_USB_PORT_STATUS     *PortStatus\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCISetRootHubPortFeature (\r
-  IN  EFI_USB_HC_PROTOCOL     *This,\r
-  IN  UINT8                   PortNumber,\r
-  IN  EFI_USB_PORT_FEATURE    PortFeature\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIClearRootHubPortFeature (\r
-  IN  EFI_USB_HC_PROTOCOL     *This,\r
-  IN  UINT8                   PortNumber,\r
-  IN  EFI_USB_PORT_FEATURE    PortFeature\r
-  );\r
-\r
-//\r
-// UEFI 2.0 Protocol\r
-//\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2GetCapability(\r
-  IN  EFI_USB2_HC_PROTOCOL  * This,\r
-  OUT UINT8                 *MaxSpeed,\r
-  OUT UINT8                 *PortNumber,\r
-  OUT UINT8                 *Is64BitCapable\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2Reset (\r
-  IN EFI_USB2_HC_PROTOCOL   * This,\r
-  IN UINT16                 Attributes\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2GetState (\r
-  IN  EFI_USB2_HC_PROTOCOL   * This,\r
-  OUT EFI_USB_HC_STATE       * State\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2SetState (\r
-  IN EFI_USB2_HC_PROTOCOL   * This,\r
-  IN EFI_USB_HC_STATE       State\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2ControlTransfer (\r
-  IN     EFI_USB2_HC_PROTOCOL      * This,\r
-  IN     UINT8                     DeviceAddress,\r
-  IN     UINT8                     DeviceSpeed,\r
-  IN     UINTN                     MaximumPacketLength,\r
-  IN     EFI_USB_DEVICE_REQUEST    * Request,\r
-  IN     EFI_USB_DATA_DIRECTION    TransferDirection,\r
-  IN OUT VOID                      *Data, OPTIONAL\r
-  IN OUT UINTN                     *DataLength, OPTIONAL\r
-  IN     UINTN                     TimeOut,\r
-  IN     EFI_USB2_HC_TRANSACTION_TRANSLATOR            *Translator,\r
-  OUT    UINT32                    *TransferResult\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2BulkTransfer (\r
-  IN     EFI_USB2_HC_PROTOCOL   * This,\r
-  IN     UINT8                  DeviceAddress,\r
-  IN     UINT8                  EndPointAddress,\r
-  IN     UINT8                  DeviceSpeed,\r
-  IN     UINTN                  MaximumPacketLength,\r
-  IN     UINT8                  DataBuffersNumber,\r
-  IN OUT VOID                   *Data[EFI_USB_MAX_BULK_BUFFER_NUM],\r
-  IN OUT UINTN                  *DataLength,\r
-  IN OUT UINT8                  *DataToggle,\r
-  IN     UINTN                  TimeOut,\r
-  IN     EFI_USB2_HC_TRANSACTION_TRANSLATOR            *Translator,\r
-  OUT    UINT32                 *TransferResult\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2AsyncInterruptTransfer (\r
-  IN     EFI_USB2_HC_PROTOCOL   * This,\r
-  IN     UINT8                  DeviceAddress,\r
-  IN     UINT8                  EndPointAddress,\r
-  IN     UINT8                  DeviceSpeed,\r
-  IN     UINTN                  MaximumPacketLength,\r
-  IN     BOOLEAN                IsNewTransfer,\r
-  IN OUT UINT8                  *DataToggle,\r
-  IN     UINTN                  PollingInterval, OPTIONAL\r
-  IN     UINTN                  DataLength, OPTIONAL\r
-  IN     EFI_USB2_HC_TRANSACTION_TRANSLATOR            *Translator,\r
-  IN     EFI_ASYNC_USB_TRANSFER_CALLBACK               CallBackFunction, OPTIONAL\r
-  IN     VOID                   *Context OPTIONAL\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2SyncInterruptTransfer (\r
-  IN     EFI_USB2_HC_PROTOCOL   * This,\r
-  IN     UINT8                  DeviceAddress,\r
-  IN     UINT8                  EndPointAddress,\r
-  IN     UINT8                  DeviceSpeed,\r
-  IN     UINTN                  MaximumPacketLength,\r
-  IN OUT VOID                   *Data,\r
-  IN OUT UINTN                  *DataLength,\r
-  IN OUT UINT8                  *DataToggle,\r
-  IN     UINTN                  TimeOut,\r
-  IN     EFI_USB2_HC_TRANSACTION_TRANSLATOR           *Translator,\r
-  OUT    UINT32                 *TransferResult\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2IsochronousTransfer (\r
-  IN     EFI_USB2_HC_PROTOCOL   * This,\r
-  IN     UINT8                  DeviceAddress,\r
-  IN     UINT8                  EndPointAddress,\r
-  IN     UINT8                  DeviceSpeed,\r
-  IN     UINTN                  MaximumPacketLength,\r
-  IN     UINT8                  DataBuffersNumber,\r
-  IN OUT VOID                   *Data[EFI_USB_MAX_ISO_BUFFER_NUM],\r
-  IN     UINTN                  DataLength,\r
-  IN     EFI_USB2_HC_TRANSACTION_TRANSLATOR           *Translator,\r
-  OUT    UINT32                 *TransferResult\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2AsyncIsochronousTransfer (\r
-  IN     EFI_USB2_HC_PROTOCOL   * This,\r
-  IN     UINT8                  DeviceAddress,\r
-  IN     UINT8                  EndPointAddress,\r
-  IN     UINT8                  DeviceSpeed,\r
-  IN     UINTN                  MaximumPacketLength,\r
-  IN     UINT8                  DataBuffersNumber,\r
-  IN OUT VOID                   *Data[EFI_USB_MAX_ISO_BUFFER_NUM],\r
-  IN     UINTN                  DataLength,\r
-  IN     EFI_USB2_HC_TRANSACTION_TRANSLATOR           *Translator,\r
-  IN     EFI_ASYNC_USB_TRANSFER_CALLBACK              IsochronousCallBack,\r
-  IN     VOID                   *Context OPTIONAL\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2GetRootHubPortStatus (\r
-  IN  EFI_USB2_HC_PROTOCOL   * This,\r
-  IN  UINT8                  PortNumber,\r
-  OUT EFI_USB_PORT_STATUS    * PortStatus\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2SetRootHubPortFeature (\r
-  IN EFI_USB2_HC_PROTOCOL    * This,\r
-  IN UINT8                   PortNumber,\r
-  IN EFI_USB_PORT_FEATURE    PortFeature\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2ClearRootHubPortFeature (\r
-  IN EFI_USB2_HC_PROTOCOL    * This,\r
-  IN UINT8                   PortNumber,\r
-  IN EFI_USB_PORT_FEATURE    PortFeature\r
-  );\r
-\r
-//\r
-// Asynchronous interrupt transfer monitor function\r
-//\r
-VOID\r
-EFIAPI\r
-MonitorInterruptTrans (\r
-  IN EFI_EVENT     Event,\r
-  IN VOID          *Context\r
-  );\r
-\r
 //\r
 // UHCI Driver Global Variables\r
 //\r
@@ -485,6 +149,7 @@ UHCIDriverBindingStart (
   UINTN                   FlBaseAddrReg; \r
   EFI_PCI_IO_PROTOCOL     *PciIo; \r
   USB_HC_DEV              *HcDev;\r
+  UINT64                  Supports;\r
   \r
   HcDev = NULL;\r
 \r
@@ -510,10 +175,19 @@ UHCIDriverBindingStart (
   //\r
   Status = PciIo->Attributes (\r
                     PciIo,\r
-                    EfiPciIoAttributeOperationEnable,\r
-                    EFI_PCI_DEVICE_ENABLE,\r
-                    NULL\r
+                    EfiPciIoAttributeOperationSupported,\r
+                    0,\r
+                    &Supports\r
                     );\r
+  if (!EFI_ERROR (Status)) {\r
+    Supports &= EFI_PCI_DEVICE_ENABLE;\r
+    Status = PciIo->Attributes (\r
+                      PciIo,\r
+                      EfiPciIoAttributeOperationEnable,\r
+                      Supports,\r
+                      NULL\r
+                      );\r
+  }\r
   if (EFI_ERROR (Status)) {\r
     gBS->CloseProtocol (\r
            Controller,\r
@@ -759,7 +433,7 @@ UHCIDriverBindingStart (
   return EFI_SUCCESS;\r
 }\r
 \r
-\r
+STATIC\r
 EFI_STATUS\r
 UnInstallUHCInterface (\r
   IN  EFI_HANDLE              Controller,\r
@@ -777,6 +451,8 @@ UnInstallUHCInterface (
 --*/\r
 {\r
   USB_HC_DEV  *HcDev;\r
+  EFI_STATUS  Status;\r
+  UINT64      Supports;\r
 \r
   HcDev = USB_HC_DEV_FROM_THIS (This);\r
 \r
@@ -823,12 +499,21 @@ UnInstallUHCInterface (
   //\r
   // Disable the USB Host Controller\r
   //\r
-  HcDev->PciIo->Attributes (\r
-                  HcDev->PciIo,\r
-                  EfiPciIoAttributeOperationDisable,\r
-                  EFI_PCI_DEVICE_ENABLE,\r
-                  NULL\r
-                  );\r
+  Status = HcDev->PciIo->Attributes (\r
+                           HcDev->PciIo,\r
+                           EfiPciIoAttributeOperationSupported,\r
+                           0,\r
+                           &Supports\r
+                           );\r
+  if (!EFI_ERROR (Status)) {\r
+    Supports &= EFI_PCI_DEVICE_ENABLE;\r
+    Status = HcDev->PciIo->Attributes (\r
+                             HcDev->PciIo,\r
+                             EfiPciIoAttributeOperationDisable,\r
+                             Supports,\r
+                             NULL\r
+                             );\r
+  }\r
 \r
   gBS->FreePool (HcDev);\r
 \r
@@ -3845,7 +3530,7 @@ UHCI2ControlTransfer (
 --*/\r
 {\r
   USB_HC_DEV *HcDev;\r
-  BOOLEAN IsSlowDevice = (EFI_USB_SPEED_LOW == DeviceSpeed) ? TRUE : FALSE;\r
+  BOOLEAN IsSlowDevice = (BOOLEAN) ((EFI_USB_SPEED_LOW == DeviceSpeed) ? TRUE : FALSE);\r
 \r
   HcDev = USB2_HC_DEV_FROM_THIS (This);\r
   \r
@@ -4056,7 +3741,7 @@ UHCI2AsyncInterruptTransfer (
 --*/  \r
 {\r
   USB_HC_DEV *HcDev;\r
-  BOOLEAN IsSlowDevice = (EFI_USB_SPEED_LOW == DeviceSpeed) ? TRUE : FALSE;\r
+  BOOLEAN IsSlowDevice = (BOOLEAN) ((EFI_USB_SPEED_LOW == DeviceSpeed) ? TRUE : FALSE);\r
    \r
   HcDev = USB2_HC_DEV_FROM_THIS (This);\r
   return UHCIAsyncInterruptTransfer(\r
@@ -4155,7 +3840,7 @@ UHCI2SyncInterruptTransfer (
   if(DeviceSpeed==EFI_USB_SPEED_HIGH)\r
        return EFI_INVALID_PARAMETER;\r
   \r
-  IsSlowDevice = (EFI_USB_SPEED_LOW == DeviceSpeed) ? TRUE : FALSE;  \r
+  IsSlowDevice = (BOOLEAN) ((EFI_USB_SPEED_LOW == DeviceSpeed) ? TRUE : FALSE);  \r
   HcDev = USB2_HC_DEV_FROM_THIS (This);\r
   \r
   return UHCISyncInterruptTransfer(\r
@@ -4437,11 +4122,9 @@ MonitorInterruptTrans (
   UINTN           DataLen;\r
   UINTN           ActualLen;\r
   UINTN           ErrTDPos;\r
-  UINT32          StatusAddr;\r
   LIST_ENTRY      *NextLink;\r
 \r
   HcDev       = (USB_HC_DEV *) Context;\r
-  StatusAddr  = (UINT32) (USBSTS);\r
 \r
   //\r
   // interrupt transfer list is empty, means that no interrupt transfer\r