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