]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkModulePkg/Bus/Pci/PciBus/Dxe/PciRomTable.c
Remove all blanks lines to avoid build errors.
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Pci / PciBus / Dxe / PciRomTable.c
CommitLineData
ead42efc 1/*++\r
2\r
3Copyright (c) 2006, Intel Corporation \r
4All rights reserved. This program and the accompanying materials \r
5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12Module Name:\r
13\r
14 PciRomTable.c\r
15 \r
16Abstract:\r
17\r
18 Option Rom Support for PCI Bus Driver\r
19\r
20Revision History\r
21\r
22--*/\r
23\r
24#include "pcibus.h"\r
25#include "PciRomTable.h"\r
26\r
27typedef struct {\r
28 EFI_HANDLE ImageHandle;\r
29 UINTN Seg;\r
30 UINT8 Bus;\r
31 UINT8 Dev;\r
32 UINT8 Func;\r
33 UINT64 RomAddress;\r
34 UINT64 RomLength;\r
35} EFI_PCI_ROM_IMAGE_MAPPING;\r
36\r
37static UINTN mNumberOfPciRomImages = 0;\r
38static UINTN mMaxNumberOfPciRomImages = 0;\r
39static EFI_PCI_ROM_IMAGE_MAPPING *mRomImageTable = NULL;\r
40\r
41VOID\r
42PciRomAddImageMapping (\r
43 IN EFI_HANDLE ImageHandle,\r
44 IN UINTN Seg,\r
45 IN UINT8 Bus,\r
46 IN UINT8 Dev,\r
47 IN UINT8 Func,\r
48 IN UINT64 RomAddress,\r
49 IN UINT64 RomLength\r
50 )\r
51/*++\r
52\r
53Routine Description:\r
54\r
55 TODO: Add function description\r
56\r
57Arguments:\r
58\r
59 ImageHandle - TODO: add argument description\r
60 Seg - TODO: add argument description\r
61 Bus - TODO: add argument description\r
62 Dev - TODO: add argument description\r
63 Func - TODO: add argument description\r
64 RomAddress - TODO: add argument description\r
65 RomLength - TODO: add argument description\r
66\r
67Returns:\r
68\r
69 TODO: add return values\r
70\r
71--*/\r
72{\r
73 EFI_PCI_ROM_IMAGE_MAPPING *TempMapping;\r
74\r
75 if (mNumberOfPciRomImages >= mMaxNumberOfPciRomImages) {\r
76\r
77 mMaxNumberOfPciRomImages += 0x20;\r
78\r
79 TempMapping = NULL;\r
80 TempMapping = AllocatePool (mMaxNumberOfPciRomImages * sizeof (EFI_PCI_ROM_IMAGE_MAPPING));\r
81 if (TempMapping == NULL) {\r
82 return ;\r
83 }\r
84\r
85 CopyMem (TempMapping, mRomImageTable, mNumberOfPciRomImages * sizeof (EFI_PCI_ROM_IMAGE_MAPPING));\r
86\r
87 if (mRomImageTable != NULL) {\r
88 gBS->FreePool (mRomImageTable);\r
89 }\r
90\r
91 mRomImageTable = TempMapping;\r
92 }\r
93\r
94 mRomImageTable[mNumberOfPciRomImages].ImageHandle = ImageHandle;\r
95 mRomImageTable[mNumberOfPciRomImages].Seg = Seg;\r
96 mRomImageTable[mNumberOfPciRomImages].Bus = Bus;\r
97 mRomImageTable[mNumberOfPciRomImages].Dev = Dev;\r
98 mRomImageTable[mNumberOfPciRomImages].Func = Func;\r
99 mRomImageTable[mNumberOfPciRomImages].RomAddress = RomAddress;\r
100 mRomImageTable[mNumberOfPciRomImages].RomLength = RomLength;\r
101 mNumberOfPciRomImages++;\r
102}\r
103\r
104EFI_STATUS\r
105PciRomGetRomResourceFromPciOptionRomTable (\r
106 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
107 IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo,\r
108 PCI_IO_DEVICE *PciIoDevice\r
109 )\r
110/*++\r
111\r
112Routine Description:\r
113\r
114Arguments:\r
115\r
116Returns:\r
117\r
118--*/\r
119// TODO: This - add argument and description to function comment\r
120// TODO: PciRootBridgeIo - add argument and description to function comment\r
121// TODO: PciIoDevice - add argument and description to function comment\r
122// TODO: EFI_NOT_FOUND - add return value to function comment\r
123// TODO: EFI_SUCCESS - add return value to function comment\r
124{\r
125 EFI_STATUS Status;\r
126 EFI_PCI_OPTION_ROM_TABLE *PciOptionRomTable;\r
127 EFI_PCI_OPTION_ROM_DESCRIPTOR *PciOptionRomDescriptor;\r
128 UINTN Index;\r
129\r
130 Status = EfiGetSystemConfigurationTable (&gEfiPciOptionRomTableGuid, (VOID **) &PciOptionRomTable);\r
131 if (EFI_ERROR (Status)) {\r
132 return EFI_NOT_FOUND;\r
133 }\r
134\r
135 for (Index = 0; Index < PciOptionRomTable->PciOptionRomCount; Index++) {\r
136 PciOptionRomDescriptor = &PciOptionRomTable->PciOptionRomDescriptors[Index];\r
137 if (PciOptionRomDescriptor->Seg == PciRootBridgeIo->SegmentNumber &&\r
138 PciOptionRomDescriptor->Bus == PciIoDevice->BusNumber &&\r
139 PciOptionRomDescriptor->Dev == PciIoDevice->DeviceNumber &&\r
140 PciOptionRomDescriptor->Func == PciIoDevice->FunctionNumber ) {\r
141\r
142 PciIoDevice->PciIo.RomImage = (VOID *) (UINTN) PciOptionRomDescriptor->RomAddress;\r
143 PciIoDevice->PciIo.RomSize = (UINTN) PciOptionRomDescriptor->RomLength;\r
144 }\r
145 }\r
146\r
147 for (Index = 0; Index < mNumberOfPciRomImages; Index++) {\r
148 if (mRomImageTable[Index].Seg == PciRootBridgeIo->SegmentNumber &&\r
149 mRomImageTable[Index].Bus == PciIoDevice->BusNumber &&\r
150 mRomImageTable[Index].Dev == PciIoDevice->DeviceNumber &&\r
151 mRomImageTable[Index].Func == PciIoDevice->FunctionNumber ) {\r
152\r
153 AddDriver (PciIoDevice, mRomImageTable[Index].ImageHandle);\r
154 }\r
155 }\r
156\r
157 return EFI_SUCCESS;\r
158}\r
159\r
160EFI_STATUS\r
161PciRomGetImageMapping (\r
162 PCI_IO_DEVICE *PciIoDevice\r
163 )\r
164/*++\r
165\r
166Routine Description:\r
167\r
168Arguments:\r
169\r
170Returns:\r
171\r
172--*/\r
173// TODO: PciIoDevice - add argument and description to function comment\r
174// TODO: EFI_SUCCESS - add return value to function comment\r
175{\r
176 EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo;\r
177 UINTN Index;\r
178\r
179 PciRootBridgeIo = PciIoDevice->PciRootBridgeIo;\r
180\r
181 for (Index = 0; Index < mNumberOfPciRomImages; Index++) {\r
182 if (mRomImageTable[Index].Seg == PciRootBridgeIo->SegmentNumber &&\r
183 mRomImageTable[Index].Bus == PciIoDevice->BusNumber &&\r
184 mRomImageTable[Index].Dev == PciIoDevice->DeviceNumber &&\r
185 mRomImageTable[Index].Func == PciIoDevice->FunctionNumber ) {\r
186\r
187 if (mRomImageTable[Index].ImageHandle != NULL) {\r
188 AddDriver (PciIoDevice, mRomImageTable[Index].ImageHandle);\r
189 } else {\r
190 PciIoDevice->PciIo.RomImage = (VOID *) (UINTN) mRomImageTable[Index].RomAddress;\r
191 PciIoDevice->PciIo.RomSize = (UINTN) mRomImageTable[Index].RomLength;\r
192 }\r
193 }\r
194 }\r
195\r
196 return EFI_SUCCESS;\r
197}\r