]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Bus/Pci/PciBusDxe/PciRomTable.c
Retired PciIncompatibleDeviceSupportLib from IntelFrameworkModulePkg.
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Pci / PciBusDxe / PciRomTable.c
index 6c97601c1fa379067b43282fec62a6747bf3db83..9addcf920af3cc028de07dae928b7e281ab55d25 100644 (file)
@@ -1,20 +1,22 @@
-/**@file\r
-  Option Rom Support for PCI Bus Driver\r
-\r
-Copyright (c) 2006, Intel Corporation                                                         \r
-All rights reserved. This program and the accompanying materials                          \r
-are licensed and made available under the terms and conditions of the BSD License         \r
-which accompanies this distribution.  The full text of the license may be found at        \r
-http://opensource.org/licenses/bsd-license.php                                            \r
-                                                                                          \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+/** @file\r
+  Set up ROM Table for PCI Bus module.\r
+\r
+Copyright (c) 2006 - 2009, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \r
 **/\r
 \r
-#include "pcibus.h"\r
-#include "PciRomTable.h"\r
+#include "PciBus.h"\r
 \r
+//\r
+// PCI ROM image information\r
+//\r
 typedef struct {\r
   EFI_HANDLE  ImageHandle;\r
   UINTN       Seg;\r
@@ -25,41 +27,32 @@ typedef struct {
   UINT64      RomLength;\r
 } EFI_PCI_ROM_IMAGE_MAPPING;\r
 \r
-static UINTN                      mNumberOfPciRomImages     = 0;\r
-static UINTN                      mMaxNumberOfPciRomImages  = 0;\r
-static EFI_PCI_ROM_IMAGE_MAPPING  *mRomImageTable           = NULL;\r
+UINTN                      mNumberOfPciRomImages     = 0;\r
+UINTN                      mMaxNumberOfPciRomImages  = 0;\r
+EFI_PCI_ROM_IMAGE_MAPPING  *mRomImageTable           = NULL;\r
+\r
+/**\r
+  Add the Rom Image to internal database for later PCI light enumeration.\r
 \r
+  @param ImageHandle    Option Rom image handle.\r
+  @param Seg            Segment of PCI space.\r
+  @param Bus            Bus NO of PCI space.\r
+  @param Dev            Dev NO of PCI space.\r
+  @param Func           Func NO of PCI space.\r
+  @param RomAddress     Base address of OptionRom.\r
+  @param RomLength      Length of rom image.\r
+\r
+**/\r
 VOID\r
 PciRomAddImageMapping (\r
-  IN EFI_HANDLE  ImageHandle,\r
-  IN UINTN       Seg,\r
-  IN UINT8       Bus,\r
-  IN UINT8       Dev,\r
-  IN UINT8       Func,\r
-  IN UINT64      RomAddress,\r
-  IN UINT64      RomLength\r
+  IN  EFI_HANDLE  ImageHandle,\r
+  IN  UINTN       Seg,\r
+  IN  UINT8       Bus,\r
+  IN  UINT8       Dev,\r
+  IN  UINT8       Func,\r
+  IN  UINT64      RomAddress,\r
+  IN  UINT64      RomLength\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  ImageHandle - TODO: add argument description\r
-  Seg         - TODO: add argument description\r
-  Bus         - TODO: add argument description\r
-  Dev         - TODO: add argument description\r
-  Func        - TODO: add argument description\r
-  RomAddress  - TODO: add argument description\r
-  RomLength   - TODO: add argument description\r
-\r
-Returns:\r
-\r
-  TODO: add return values\r
-\r
---*/\r
 {\r
   EFI_PCI_ROM_IMAGE_MAPPING *TempMapping;\r
 \r
@@ -76,7 +69,7 @@ Returns:
     CopyMem (TempMapping, mRomImageTable, mNumberOfPciRomImages * sizeof (EFI_PCI_ROM_IMAGE_MAPPING));\r
 \r
     if (mRomImageTable != NULL) {\r
-      gBS->FreePool (mRomImageTable);\r
+      FreePool (mRomImageTable);\r
     }\r
 \r
     mRomImageTable = TempMapping;\r
@@ -92,88 +85,33 @@ Returns:
   mNumberOfPciRomImages++;\r
 }\r
 \r
-EFI_STATUS\r
-PciRomGetRomResourceFromPciOptionRomTable (\r
-  IN EFI_DRIVER_BINDING_PROTOCOL      *This,\r
-  IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *PciRootBridgeIo,\r
-  PCI_IO_DEVICE                       *PciIoDevice\r
-  )\r
-/*++\r
+/**\r
+  Get Option rom driver's mapping for PCI device.\r
 \r
-Routine Description:\r
+  @param PciIoDevice Device instance.\r
 \r
-Arguments:\r
+  @retval TRUE   Found Image mapping.\r
+  @retval FALSE  Cannot found image mapping.\r
 \r
-Returns:\r
-\r
---*/\r
-// TODO:    This - add argument and description to function comment\r
-// TODO:    PciRootBridgeIo - add argument and description to function comment\r
-// TODO:    PciIoDevice - add argument and description to function comment\r
-// TODO:    EFI_NOT_FOUND - add return value to function comment\r
-// TODO:    EFI_SUCCESS - add return value to function comment\r
-{\r
-  EFI_STATUS                    Status;\r
-  EFI_PCI_OPTION_ROM_TABLE      *PciOptionRomTable;\r
-  EFI_PCI_OPTION_ROM_DESCRIPTOR *PciOptionRomDescriptor;\r
-  UINTN                         Index;\r
-\r
-  Status = EfiGetSystemConfigurationTable (&gEfiPciOptionRomTableGuid, (VOID **) &PciOptionRomTable);\r
-  if (EFI_ERROR (Status)) {\r
-    return EFI_NOT_FOUND;\r
-  }\r
-\r
-  for (Index = 0; Index < PciOptionRomTable->PciOptionRomCount; Index++) {\r
-    PciOptionRomDescriptor = &PciOptionRomTable->PciOptionRomDescriptors[Index];\r
-    if (PciOptionRomDescriptor->Seg == PciRootBridgeIo->SegmentNumber &&\r
-        PciOptionRomDescriptor->Bus == PciIoDevice->BusNumber         &&\r
-        PciOptionRomDescriptor->Dev == PciIoDevice->DeviceNumber      &&\r
-        PciOptionRomDescriptor->Func == PciIoDevice->FunctionNumber ) {\r
-\r
-      PciIoDevice->PciIo.RomImage = (VOID *) (UINTN) PciOptionRomDescriptor->RomAddress;\r
-      PciIoDevice->PciIo.RomSize  = (UINTN) PciOptionRomDescriptor->RomLength;\r
-    }\r
-  }\r
-\r
-  for (Index = 0; Index < mNumberOfPciRomImages; Index++) {\r
-    if (mRomImageTable[Index].Seg  == PciRootBridgeIo->SegmentNumber &&\r
-        mRomImageTable[Index].Bus  == PciIoDevice->BusNumber         &&\r
-        mRomImageTable[Index].Dev  == PciIoDevice->DeviceNumber      &&\r
-        mRomImageTable[Index].Func == PciIoDevice->FunctionNumber    ) {\r
-\r
-      AddDriver (PciIoDevice, mRomImageTable[Index].ImageHandle);\r
-    }\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-EFI_STATUS\r
+**/\r
+BOOLEAN\r
 PciRomGetImageMapping (\r
-  PCI_IO_DEVICE                       *PciIoDevice\r
+  IN  PCI_IO_DEVICE                       *PciIoDevice\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-Arguments:\r
-\r
-Returns:\r
-\r
---*/\r
-// TODO:    PciIoDevice - add argument and description to function comment\r
-// TODO:    EFI_SUCCESS - add return value to function comment\r
 {\r
   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo;\r
   UINTN                           Index;\r
+  BOOLEAN                         Found;\r
 \r
   PciRootBridgeIo = PciIoDevice->PciRootBridgeIo;\r
+  Found           = FALSE;\r
 \r
   for (Index = 0; Index < mNumberOfPciRomImages; Index++) {\r
     if (mRomImageTable[Index].Seg  == PciRootBridgeIo->SegmentNumber &&\r
         mRomImageTable[Index].Bus  == PciIoDevice->BusNumber         &&\r
         mRomImageTable[Index].Dev  == PciIoDevice->DeviceNumber      &&\r
         mRomImageTable[Index].Func == PciIoDevice->FunctionNumber    ) {\r
+        Found = TRUE;\r
 \r
       if (mRomImageTable[Index].ImageHandle != NULL) {\r
         AddDriver (PciIoDevice, mRomImageTable[Index].ImageHandle);\r
@@ -184,5 +122,5 @@ Returns:
     }\r
   }\r
 \r
-  return EFI_SUCCESS;\r
+  return Found;\r
 }\r