]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkModulePkg/Bus/Pci/PciBusDxe/PciResourceSupport.h
Build a valid device path to an EFI driver loaded from a PCI Option ROM
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Pci / PciBusDxe / PciResourceSupport.h
CommitLineData
3db51098 1/**@file\r
ead42efc 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
3db51098 12**/\r
ead42efc 13\r
14#ifndef _EFI_PCI_RESOURCE_SUPPORT_H\r
15#define _EFI_PCI_RESOURCE_SUPPORT_H\r
16\r
17#define RESERVED_RESOURCE_SIGNATURE EFI_SIGNATURE_32 ('r', 's', 'v', 'd')\r
18\r
19typedef struct {\r
20 UINT64 Base;\r
21 UINT64 Length;\r
22 PCI_BAR_TYPE ResType;\r
23} PCI_RESERVED_RESOURCE_NODE;\r
24\r
25typedef struct {\r
26 UINT32 Signature;\r
27 LIST_ENTRY Link;\r
28 PCI_RESERVED_RESOURCE_NODE Node;\r
29} PCI_RESERVED_RESOURCE_LIST;\r
30\r
31#define RESOURCED_LIST_FROM_NODE(a) \\r
32 CR (a, PCI_RESERVED_RESOURCE_LIST, Node, RESERVED_RESOURCE_SIGNATURE)\r
33\r
34#define RESOURCED_LIST_FROM_LINK(a) \\r
35 CR (a, PCI_RESERVED_RESOURCE_LIST, Link, RESERVED_RESOURCE_SIGNATURE)\r
36\r
37typedef enum {\r
38 PciResUsageTypical = 0,\r
39 PciResUsagePadding,\r
40 PciResUsageOptionRomProcessing\r
41} PCI_RESOURCE_USAGE;\r
42\r
43#define PCI_RESOURCE_SIGNATURE EFI_SIGNATURE_32 ('p', 'c', 'r', 'c')\r
44\r
45typedef struct {\r
46 UINT32 Signature;\r
47 LIST_ENTRY Link;\r
48 LIST_ENTRY ChildList;\r
49 PCI_IO_DEVICE *PciDev;\r
50 UINT64 Alignment;\r
51 UINT64 Offset;\r
52 UINT8 Bar;\r
53 PCI_BAR_TYPE ResType;\r
54 UINT64 Length;\r
55 BOOLEAN Reserved;\r
56 PCI_RESOURCE_USAGE ResourceUsage;\r
57} PCI_RESOURCE_NODE;\r
58\r
59#define RESOURCE_NODE_FROM_LINK(a) \\r
60 CR (a, PCI_RESOURCE_NODE, Link, PCI_RESOURCE_SIGNATURE)\r
61\r
62EFI_STATUS\r
63SkipVGAAperture (\r
64 OUT UINT64 *Start,\r
65 IN UINT64 Length\r
66 )\r
67/*++\r
68\r
69Routine Description:\r
70\r
71 TODO: Add function description\r
72\r
73Arguments:\r
74\r
75 Start - TODO: add argument description\r
76 Length - TODO: add argument description\r
77\r
78Returns:\r
79\r
80 TODO: add return values\r
81\r
82--*/\r
83;\r
84\r
85EFI_STATUS\r
86SkipIsaAliasAperture (\r
87 OUT UINT64 *Start,\r
88 IN UINT64 Length\r
89 )\r
90/*++\r
91\r
92Routine Description:\r
93\r
94 TODO: Add function description\r
95\r
96Arguments:\r
97\r
98 Start - TODO: add argument description\r
99 Length - TODO: add argument description\r
100\r
101Returns:\r
102\r
103 TODO: add return values\r
104\r
105--*/\r
106;\r
107\r
108EFI_STATUS\r
109InsertResourceNode (\r
110 PCI_RESOURCE_NODE *Bridge,\r
111 PCI_RESOURCE_NODE *ResNode\r
112 )\r
113/*++\r
114\r
115Routine Description:\r
116\r
117 TODO: Add function description\r
118\r
119Arguments:\r
120\r
121 Bridge - TODO: add argument description\r
122 ResNode - TODO: add argument description\r
123\r
124Returns:\r
125\r
126 TODO: add return values\r
127\r
128--*/\r
129;\r
130\r
131EFI_STATUS\r
132MergeResourceTree (\r
133 PCI_RESOURCE_NODE *Dst,\r
134 PCI_RESOURCE_NODE *Res,\r
135 BOOLEAN TypeMerge\r
136 )\r
137/*++\r
138\r
139Routine Description:\r
140\r
141 TODO: Add function description\r
142\r
143Arguments:\r
144\r
145 Dst - TODO: add argument description\r
146 Res - TODO: add argument description\r
147 TypeMerge - TODO: add argument description\r
148\r
149Returns:\r
150\r
151 TODO: add return values\r
152\r
153--*/\r
154;\r
155\r
156EFI_STATUS\r
157CalculateApertureIo16 (\r
158 IN PCI_RESOURCE_NODE *Bridge\r
159 )\r
160/*++\r
161\r
162Routine Description:\r
163\r
164 TODO: Add function description\r
165\r
166Arguments:\r
167\r
168 Bridge - TODO: add argument description\r
169\r
170Returns:\r
171\r
172 TODO: add return values\r
173\r
174--*/\r
175;\r
176\r
177EFI_STATUS\r
178CalculateResourceAperture (\r
179 IN PCI_RESOURCE_NODE *Bridge\r
180 )\r
181/*++\r
182\r
183Routine Description:\r
184\r
185 TODO: Add function description\r
186\r
187Arguments:\r
188\r
189 Bridge - TODO: add argument description\r
190\r
191Returns:\r
192\r
193 TODO: add return values\r
194\r
195--*/\r
196;\r
197\r
198EFI_STATUS\r
199GetResourceFromDevice (\r
200 PCI_IO_DEVICE *PciDev,\r
201 PCI_RESOURCE_NODE *IoNode,\r
202 PCI_RESOURCE_NODE *Mem32Node,\r
203 PCI_RESOURCE_NODE *PMem32Node,\r
204 PCI_RESOURCE_NODE *Mem64Node,\r
205 PCI_RESOURCE_NODE *PMem64Node\r
206 )\r
207/*++\r
208\r
209Routine Description:\r
210\r
211 TODO: Add function description\r
212\r
213Arguments:\r
214\r
215 PciDev - TODO: add argument description\r
216 IoNode - TODO: add argument description\r
217 Mem32Node - TODO: add argument description\r
218 PMem32Node - TODO: add argument description\r
219 Mem64Node - TODO: add argument description\r
220 PMem64Node - TODO: add argument description\r
221\r
222Returns:\r
223\r
224 TODO: add return values\r
225\r
226--*/\r
227;\r
228\r
229PCI_RESOURCE_NODE *\r
230CreateResourceNode (\r
231 IN PCI_IO_DEVICE *PciDev,\r
232 IN UINT64 Length,\r
233 IN UINT64 Alignment,\r
234 IN UINT8 Bar,\r
235 IN PCI_BAR_TYPE ResType,\r
236 IN PCI_RESOURCE_USAGE ResUsage\r
237 )\r
238/*++\r
239\r
240Routine Description:\r
241\r
242 TODO: Add function description\r
243\r
244Arguments:\r
245\r
246 PciDev - TODO: add argument description\r
247 Length - TODO: add argument description\r
248 Alignment - TODO: add argument description\r
249 Bar - TODO: add argument description\r
250 ResType - TODO: add argument description\r
251 ResUsage - TODO: add argument description\r
252\r
253Returns:\r
254\r
255 TODO: add return values\r
256\r
257--*/\r
258;\r
259\r
260EFI_STATUS\r
261CreateResourceMap (\r
262 IN PCI_IO_DEVICE *Bridge,\r
263 IN PCI_RESOURCE_NODE *IoNode,\r
264 IN PCI_RESOURCE_NODE *Mem32Node,\r
265 IN PCI_RESOURCE_NODE *PMem32Node,\r
266 IN PCI_RESOURCE_NODE *Mem64Node,\r
267 IN PCI_RESOURCE_NODE *PMem64Node\r
268 )\r
269/*++\r
270\r
271Routine Description:\r
272\r
273 TODO: Add function description\r
274\r
275Arguments:\r
276\r
277 Bridge - TODO: add argument description\r
278 IoNode - TODO: add argument description\r
279 Mem32Node - TODO: add argument description\r
280 PMem32Node - TODO: add argument description\r
281 Mem64Node - TODO: add argument description\r
282 PMem64Node - TODO: add argument description\r
283\r
284Returns:\r
285\r
286 TODO: add return values\r
287\r
288--*/\r
289;\r
290\r
291EFI_STATUS\r
292ResourcePaddingPolicy (\r
293 PCI_IO_DEVICE *PciDev,\r
294 PCI_RESOURCE_NODE *IoNode,\r
295 PCI_RESOURCE_NODE *Mem32Node,\r
296 PCI_RESOURCE_NODE *PMem32Node,\r
297 PCI_RESOURCE_NODE *Mem64Node,\r
298 PCI_RESOURCE_NODE *PMem64Node\r
299 )\r
300/*++\r
301\r
302Routine Description:\r
303\r
304 TODO: Add function description\r
305\r
306Arguments:\r
307\r
308 PciDev - TODO: add argument description\r
309 IoNode - TODO: add argument description\r
310 Mem32Node - TODO: add argument description\r
311 PMem32Node - TODO: add argument description\r
312 Mem64Node - TODO: add argument description\r
313 PMem64Node - TODO: add argument description\r
314\r
315Returns:\r
316\r
317 TODO: add return values\r
318\r
319--*/\r
320;\r
321\r
322EFI_STATUS\r
323DegradeResource (\r
324 IN PCI_IO_DEVICE *Bridge,\r
325 IN PCI_RESOURCE_NODE *Mem32Node,\r
326 IN PCI_RESOURCE_NODE *PMem32Node,\r
327 IN PCI_RESOURCE_NODE *Mem64Node,\r
328 IN PCI_RESOURCE_NODE *PMem64Node\r
329 )\r
330/*++\r
331\r
332Routine Description:\r
333\r
334 TODO: Add function description\r
335\r
336Arguments:\r
337\r
338 Bridge - TODO: add argument description\r
339 Mem32Node - TODO: add argument description\r
340 PMem32Node - TODO: add argument description\r
341 Mem64Node - TODO: add argument description\r
342 PMem64Node - TODO: add argument description\r
343\r
344Returns:\r
345\r
346 TODO: add return values\r
347\r
348--*/\r
349;\r
350\r
351BOOLEAN\r
352BridgeSupportResourceDecode (\r
353 IN PCI_IO_DEVICE *Bridge,\r
354 IN UINT32 Decode\r
355 )\r
356/*++\r
357\r
358Routine Description:\r
359\r
360 TODO: Add function description\r
361\r
362Arguments:\r
363\r
364 Bridge - TODO: add argument description\r
365 Decode - TODO: add argument description\r
366\r
367Returns:\r
368\r
369 TODO: add return values\r
370\r
371--*/\r
372;\r
373\r
374EFI_STATUS\r
375ProgramResource (\r
376 IN UINT64 Base,\r
377 IN PCI_RESOURCE_NODE *Bridge\r
378 )\r
379/*++\r
380\r
381Routine Description:\r
382\r
383 TODO: Add function description\r
384\r
385Arguments:\r
386\r
387 Base - TODO: add argument description\r
388 Bridge - TODO: add argument description\r
389\r
390Returns:\r
391\r
392 TODO: add return values\r
393\r
394--*/\r
395;\r
396\r
397EFI_STATUS\r
398ProgramBar (\r
399 IN UINT64 Base,\r
400 IN PCI_RESOURCE_NODE *Node\r
401 )\r
402/*++\r
403\r
404Routine Description:\r
405\r
406 TODO: Add function description\r
407\r
408Arguments:\r
409\r
410 Base - TODO: add argument description\r
411 Node - TODO: add argument description\r
412\r
413Returns:\r
414\r
415 TODO: add return values\r
416\r
417--*/\r
418;\r
419\r
420EFI_STATUS\r
421ProgramPpbApperture (\r
422 IN UINT64 Base,\r
423 IN PCI_RESOURCE_NODE *Node\r
424 )\r
425/*++\r
426\r
427Routine Description:\r
428\r
429 TODO: Add function description\r
430\r
431Arguments:\r
432\r
433 Base - TODO: add argument description\r
434 Node - TODO: add argument description\r
435\r
436Returns:\r
437\r
438 TODO: add return values\r
439\r
440--*/\r
441;\r
442\r
443EFI_STATUS\r
444ProgrameUpstreamBridgeForRom (\r
445 IN PCI_IO_DEVICE *PciDevice,\r
446 IN UINT32 OptionRomBase,\r
447 IN BOOLEAN Enable\r
448 )\r
449/*++\r
450\r
451Routine Description:\r
452\r
453 TODO: Add function description\r
454\r
455Arguments:\r
456\r
457 PciDevice - TODO: add argument description\r
458 OptionRomBase - TODO: add argument description\r
459 Enable - TODO: add argument description\r
460\r
461Returns:\r
462\r
463 TODO: add return values\r
464\r
465--*/\r
466;\r
467\r
468BOOLEAN\r
469ResourceRequestExisted (\r
470 IN PCI_RESOURCE_NODE *Bridge\r
471 )\r
472/*++\r
473\r
474Routine Description:\r
475\r
476 TODO: Add function description\r
477\r
478Arguments:\r
479\r
480 Bridge - TODO: add argument description\r
481\r
482Returns:\r
483\r
484 TODO: add return values\r
485\r
486--*/\r
487;\r
488\r
489EFI_STATUS\r
490InitializeResourcePool (\r
491 PCI_RESOURCE_NODE *ResourcePool,\r
492 PCI_BAR_TYPE ResourceType\r
493 )\r
494/*++\r
495\r
496Routine Description:\r
497\r
498 TODO: Add function description\r
499\r
500Arguments:\r
501\r
502 ResourcePool - TODO: add argument description\r
503 ResourceType - TODO: add argument description\r
504\r
505Returns:\r
506\r
507 TODO: add return values\r
508\r
509--*/\r
510;\r
511\r
512EFI_STATUS\r
513GetResourceMap (\r
514 PCI_IO_DEVICE *PciDev,\r
515 PCI_RESOURCE_NODE **IoBridge,\r
516 PCI_RESOURCE_NODE **Mem32Bridge,\r
517 PCI_RESOURCE_NODE **PMem32Bridge,\r
518 PCI_RESOURCE_NODE **Mem64Bridge,\r
519 PCI_RESOURCE_NODE **PMem64Bridge,\r
520 PCI_RESOURCE_NODE *IoPool,\r
521 PCI_RESOURCE_NODE *Mem32Pool,\r
522 PCI_RESOURCE_NODE *PMem32Pool,\r
523 PCI_RESOURCE_NODE *Mem64Pool,\r
524 PCI_RESOURCE_NODE *PMem64Pool\r
525 )\r
526/*++\r
527\r
528Routine Description:\r
529\r
530 TODO: Add function description\r
531\r
532Arguments:\r
533\r
534 PciDev - TODO: add argument description\r
535 IoBridge - TODO: add argument description\r
536 Mem32Bridge - TODO: add argument description\r
537 PMem32Bridge - TODO: add argument description\r
538 Mem64Bridge - TODO: add argument description\r
539 PMem64Bridge - TODO: add argument description\r
540 IoPool - TODO: add argument description\r
541 Mem32Pool - TODO: add argument description\r
542 PMem32Pool - TODO: add argument description\r
543 Mem64Pool - TODO: add argument description\r
544 PMem64Pool - TODO: add argument description\r
545\r
546Returns:\r
547\r
548 TODO: add return values\r
549\r
550--*/\r
551;\r
552\r
553EFI_STATUS\r
554DestroyResourceTree (\r
555 IN PCI_RESOURCE_NODE *Bridge\r
556 )\r
557/*++\r
558\r
559Routine Description:\r
560\r
561 TODO: Add function description\r
562\r
563Arguments:\r
564\r
565 Bridge - TODO: add argument description\r
566\r
567Returns:\r
568\r
569 TODO: add return values\r
570\r
571--*/\r
572;\r
573\r
574EFI_STATUS\r
575RecordReservedResource (\r
576 IN UINT64 Base,\r
577 IN UINT64 Length,\r
578 IN PCI_BAR_TYPE ResType,\r
579 IN PCI_IO_DEVICE *Bridge\r
580 )\r
581/*++\r
582\r
583Routine Description:\r
584\r
585 TODO: Add function description\r
586\r
587Arguments:\r
588\r
589 Base - TODO: add argument description\r
590 Length - TODO: add argument description\r
591 ResType - TODO: add argument description\r
592 Bridge - TODO: add argument description\r
593\r
594Returns:\r
595\r
596 TODO: add return values\r
597\r
598--*/\r
599;\r
600\r
601EFI_STATUS\r
602ResourcePaddingForCardBusBridge (\r
603 PCI_IO_DEVICE *PciDev,\r
604 PCI_RESOURCE_NODE *IoNode,\r
605 PCI_RESOURCE_NODE *Mem32Node,\r
606 PCI_RESOURCE_NODE *PMem32Node,\r
607 PCI_RESOURCE_NODE *Mem64Node,\r
608 PCI_RESOURCE_NODE *PMem64Node\r
609 )\r
610/*++\r
611\r
612Routine Description:\r
613\r
614 TODO: Add function description\r
615\r
616Arguments:\r
617\r
618 PciDev - TODO: add argument description\r
619 IoNode - TODO: add argument description\r
620 Mem32Node - TODO: add argument description\r
621 PMem32Node - TODO: add argument description\r
622 Mem64Node - TODO: add argument description\r
623 PMem64Node - TODO: add argument description\r
624\r
625Returns:\r
626\r
627 TODO: add return values\r
628\r
629--*/\r
630;\r
631\r
632EFI_STATUS\r
633ProgramP2C (\r
634 IN UINT64 Base,\r
635 IN PCI_RESOURCE_NODE *Node\r
636 )\r
637/*++\r
638\r
639Routine Description:\r
640\r
641 TODO: Add function description\r
642\r
643Arguments:\r
644\r
645 Base - TODO: add argument description\r
646 Node - TODO: add argument description\r
647\r
648Returns:\r
649\r
650 TODO: add return values\r
651\r
652--*/\r
653;\r
654\r
655EFI_STATUS\r
656ApplyResourcePadding (\r
657 PCI_IO_DEVICE *PciDev,\r
658 PCI_RESOURCE_NODE *IoNode,\r
659 PCI_RESOURCE_NODE *Mem32Node,\r
660 PCI_RESOURCE_NODE *PMem32Node,\r
661 PCI_RESOURCE_NODE *Mem64Node,\r
662 PCI_RESOURCE_NODE *PMem64Node\r
663 )\r
664/*++\r
665\r
666Routine Description:\r
667\r
668 TODO: Add function description\r
669\r
670Arguments:\r
671\r
672 PciDev - TODO: add argument description\r
673 IoNode - TODO: add argument description\r
674 Mem32Node - TODO: add argument description\r
675 PMem32Node - TODO: add argument description\r
676 Mem64Node - TODO: add argument description\r
677 PMem64Node - TODO: add argument description\r
678\r
679Returns:\r
680\r
681 TODO: add return values\r
682\r
683--*/\r
684;\r
685\r
686VOID\r
687GetResourcePaddingPpb (\r
688 IN PCI_IO_DEVICE *PciIoDevice\r
689 )\r
690/*++\r
691\r
692Routine Description:\r
693\r
694 TODO: Add function description\r
695\r
696Arguments:\r
697\r
698 PciIoDevice - TODO: add argument description\r
699\r
700Returns:\r
701\r
702 TODO: add return values\r
703\r
704--*/\r
705;\r
706\r
707EFI_STATUS\r
708ResetAllPpbBusReg (\r
709 IN PCI_IO_DEVICE *Bridge,\r
710 IN UINT8 StartBusNumber\r
711 )\r
712/*++\r
713\r
714Routine Description:\r
715\r
716 Reset bus register\r
717\r
718Arguments:\r
719\r
720 Bridge - a pointer to the PCI_IO_DEVICE\r
721 StartBusNumber - the number of bus\r
722\r
723Returns:\r
724\r
725 None\r
726\r
727--*/\r
728;\r
729\r
730#endif\r