Revision: 14021
          http://edk2.svn.sourceforge.net/edk2/?rev=14021&view=rev
Author:   erictian
Date:     2012-12-25 06:31:41 +0000 (Tue, 25 Dec 2012)
Log Message:
-----------
MdeMdeModulePkg/Xhci: Fix a wrong conditional judgment which bring assertion 
with 1.0 hub.

Signed-off-by: Feng Tian <[email protected]>
Reviewed-by: Elvin Li <[email protected]>

Modified Paths:
--------------
    trunk/edk2/MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c

Modified: trunk/edk2/MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c
===================================================================
--- trunk/edk2/MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c      2012-12-25 02:29:46 UTC 
(rev 14020)
+++ trunk/edk2/MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c      2012-12-25 06:31:41 UTC 
(rev 14021)
@@ -140,27 +140,27 @@
   )
 {
   USB_XHCI_INSTANCE  *Xhc;
-  EFI_STATUS         Status;
-  EFI_TPL            OldTpl;
-
-  Xhc = XHC_FROM_THIS (This);
-  
-  if (Xhc->DevicePath != NULL) {
-    //
-    // Report Status Code to indicate reset happens
-    //
-    REPORT_STATUS_CODE_WITH_DEVICE_PATH (
-      EFI_PROGRESS_CODE,
-      (EFI_IO_BUS_USB | EFI_IOB_PC_RESET),
-      Xhc->DevicePath
-      );
-  }  
-
-  OldTpl = gBS->RaiseTPL (XHC_TPL);
-
-  switch (Attributes) {
-  case EFI_USB_HC_RESET_GLOBAL:
-  //
+  EFI_STATUS         Status;
+  EFI_TPL            OldTpl;
+
+  Xhc = XHC_FROM_THIS (This);
+  
+  if (Xhc->DevicePath != NULL) {
+    //
+    // Report Status Code to indicate reset happens
+    //
+    REPORT_STATUS_CODE_WITH_DEVICE_PATH (
+      EFI_PROGRESS_CODE,
+      (EFI_IO_BUS_USB | EFI_IOB_PC_RESET),
+      Xhc->DevicePath
+      );
+  }  
+
+  OldTpl = gBS->RaiseTPL (XHC_TPL);
+
+  switch (Attributes) {
+  case EFI_USB_HC_RESET_GLOBAL:
+  //
   // Flow through, same behavior as Host Controller Reset
   //
   case EFI_USB_HC_RESET_HOST_CONTROLLER:
@@ -932,9 +932,9 @@
         }
         Xhc->UsbDevContext[SlotId].ConfDesc = AllocateZeroPool 
(Xhc->UsbDevContext[SlotId].DevDesc.NumConfigurations * sizeof 
(EFI_USB_CONFIG_DESCRIPTOR *));
         if (Xhc->HcCParams.Data.Csz == 0) {
-          Status = XhcEvaluateContext (Xhc, SlotId, MaxPacket0);
+          Status = XhcEvaluateContext (Xhc, SlotId, MaxPacket0);
         } else {
-          Status = XhcEvaluateContext64 (Xhc, SlotId, MaxPacket0);
+          Status = XhcEvaluateContext64 (Xhc, SlotId, MaxPacket0);
         }
         ASSERT_EFI_ERROR (Status);
     } else if (DescriptorType == USB_DESC_TYPE_CONFIG) {
@@ -1007,17 +1007,15 @@
       if ((State & XHC_PORTSC_PS) >> 10 == 0) {
         PortStatus.PortStatus |= USB_PORT_STAT_SUPER_SPEED;
       }
-    } else if (DeviceSpeed == EFI_USB_SPEED_HIGH) {
+    } else {
       //
-      // For high speed hub, its bit9~10 presents the attached device speed.
+      // For high or full/low speed hub, its bit9~10 presents the attached 
device speed.
       //
       if (XHC_BIT_IS_SET (State, BIT9)) {
         PortStatus.PortStatus |= USB_PORT_STAT_LOW_SPEED;
       } else if (XHC_BIT_IS_SET (State, BIT10)) {
         PortStatus.PortStatus |= USB_PORT_STAT_HIGH_SPEED;
       }
-    } else {
-      ASSERT (0);
     }
 
     //
@@ -1690,15 +1688,15 @@
   @return The allocated and initialized USB_XHCI_INSTANCE structure if created,
           otherwise NULL.
 
-**/
-USB_XHCI_INSTANCE*
-XhcCreateUsbHc (
-  IN EFI_PCI_IO_PROTOCOL       *PciIo,
-  IN EFI_DEVICE_PATH_PROTOCOL  *DevicePath,
-  IN UINT64                    OriginalPciAttributes
-  )
-{
-  USB_XHCI_INSTANCE       *Xhc;
+**/
+USB_XHCI_INSTANCE*
+XhcCreateUsbHc (
+  IN EFI_PCI_IO_PROTOCOL       *PciIo,
+  IN EFI_DEVICE_PATH_PROTOCOL  *DevicePath,
+  IN UINT64                    OriginalPciAttributes
+  )
+{
+  USB_XHCI_INSTANCE       *Xhc;
   EFI_STATUS              Status;
   UINT32                  PageSize;
   UINT16                  ExtCapReg;
@@ -1711,13 +1709,13 @@
 
   //
   // Initialize private data structure
-  //
-  Xhc->Signature             = XHCI_INSTANCE_SIG;
-  Xhc->PciIo                 = PciIo;
-  Xhc->DevicePath            = DevicePath;
-  Xhc->OriginalPciAttributes = OriginalPciAttributes;
-  CopyMem (&Xhc->Usb2Hc, &gXhciUsb2HcTemplate, sizeof (EFI_USB2_HC_PROTOCOL));
-
+  //
+  Xhc->Signature             = XHCI_INSTANCE_SIG;
+  Xhc->PciIo                 = PciIo;
+  Xhc->DevicePath            = DevicePath;
+  Xhc->OriginalPciAttributes = OriginalPciAttributes;
+  CopyMem (&Xhc->Usb2Hc, &gXhciUsb2HcTemplate, sizeof (EFI_USB2_HC_PROTOCOL));
+
   InitializeListHead (&Xhc->AsyncIntTransfers);
 
   //
@@ -1841,14 +1839,14 @@
   EFI_STATUS              Status;
   EFI_PCI_IO_PROTOCOL     *PciIo;
   UINT64                  Supports;
-  UINT64                  OriginalPciAttributes;
-  BOOLEAN                 PciAttributesSaved;
-  USB_XHCI_INSTANCE       *Xhc;
-  EFI_DEVICE_PATH_PROTOCOL  *HcDevicePath;
-
-  //
-  // Open the PciIo Protocol, then enable the USB host controller
+  UINT64                  OriginalPciAttributes;
+  BOOLEAN                 PciAttributesSaved;
+  USB_XHCI_INSTANCE       *Xhc;
+  EFI_DEVICE_PATH_PROTOCOL  *HcDevicePath;
+
   //
+  // Open the PciIo Protocol, then enable the USB host controller
+  //
   Status = gBS->OpenProtocol (
                   Controller,
                   &gEfiPciIoProtocolGuid,
@@ -1859,26 +1857,26 @@
                   );
 
   if (EFI_ERROR (Status)) {
-    return Status;
-  }
-
-  //
-  // Open Device Path Protocol for on USB host controller
-  //
-  HcDevicePath = NULL;
-  Status = gBS->OpenProtocol (
-                  Controller,
-                  &gEfiDevicePathProtocolGuid,
-                  (VOID **) &HcDevicePath,
-                  This->DriverBindingHandle,
-                  Controller,
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL
-                  );
-
-  PciAttributesSaved = FALSE;
-  //
-  // Save original PCI attributes
+    return Status;
+  }
+
   //
+  // Open Device Path Protocol for on USB host controller
+  //
+  HcDevicePath = NULL;
+  Status = gBS->OpenProtocol (
+                  Controller,
+                  &gEfiDevicePathProtocolGuid,
+                  (VOID **) &HcDevicePath,
+                  This->DriverBindingHandle,
+                  Controller,
+                  EFI_OPEN_PROTOCOL_GET_PROTOCOL
+                  );
+
+  PciAttributesSaved = FALSE;
+  //
+  // Save original PCI attributes
+  //
   Status = PciIo->Attributes (
                     PciIo,
                     EfiPciIoAttributeOperationGet,
@@ -1912,13 +1910,13 @@
     goto CLOSE_PCIIO;
   }
 
-  //
-  // Create then install USB2_HC_PROTOCOL
-  //
-  Xhc = XhcCreateUsbHc (PciIo, HcDevicePath, OriginalPciAttributes);
-
-  if (Xhc == NULL) {
-    DEBUG ((EFI_D_ERROR, "XhcDriverBindingStart: failed to create USB2_HC\n"));
+  //
+  // Create then install USB2_HC_PROTOCOL
+  //
+  Xhc = XhcCreateUsbHc (PciIo, HcDevicePath, OriginalPciAttributes);
+
+  if (Xhc == NULL) {
+    DEBUG ((EFI_D_ERROR, "XhcDriverBindingStart: failed to create USB2_HC\n"));
     return EFI_OUT_OF_RESOURCES;
   }
 

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to