TianoCore EDK2 master
Loading...
Searching...
No Matches
PciLib.c
Go to the documentation of this file.
1
9#include <PiPei.h>
10
11#include <Ppi/PciCfg2.h>
12
13#include <Library/PciLib.h>
14#include <Library/BaseLib.h>
16#include <Library/DebugLib.h>
18
27#define ASSERT_INVALID_PCI_ADDRESS(A, M) \
28 ASSERT (((A) & (~0xfffffff | (M))) == 0)
29
37#define PCI_TO_PCICFG2_ADDRESS(A) \
38 ((((A) << 4) & 0xff000000) | (((A) >> 4) & 0x00000700) | (((A) << 1) & 0x001f0000) | (LShiftU64((A) & 0xfff, 32)))
39
54UINT32
56 IN UINTN Address,
58 )
59{
60 EFI_STATUS Status;
61 UINT32 Data;
62 CONST EFI_PEI_PCI_CFG2_PPI *PciCfg2Ppi;
63 UINT64 PciCfg2Address;
64
65 Status = PeiServicesLocatePpi (&gEfiPciCfg2PpiGuid, 0, NULL, (VOID **)&PciCfg2Ppi);
66 ASSERT_EFI_ERROR (Status);
67 ASSERT (PciCfg2Ppi != NULL);
68
69 PciCfg2Address = PCI_TO_PCICFG2_ADDRESS (Address);
70 PciCfg2Ppi->Read (
72 PciCfg2Ppi,
73 Width,
74 PciCfg2Address,
75 &Data
76 );
77
78 return Data;
79}
80
97UINT32
99 IN UINTN Address,
101 IN UINT32 Data
102 )
103{
104 EFI_STATUS Status;
105 CONST EFI_PEI_PCI_CFG2_PPI *PciCfg2Ppi;
106 UINT64 PciCfg2Address;
107
108 Status = PeiServicesLocatePpi (&gEfiPciCfg2PpiGuid, 0, NULL, (VOID **)&PciCfg2Ppi);
109 ASSERT_EFI_ERROR (Status);
110 ASSERT (PciCfg2Ppi != NULL);
111
112 PciCfg2Address = PCI_TO_PCICFG2_ADDRESS (Address);
113 PciCfg2Ppi->Write (
115 PciCfg2Ppi,
116 Width,
117 PciCfg2Address,
118 &Data
119 );
120
121 return Data;
122}
123
145RETURN_STATUS
146EFIAPI
148 IN UINTN Address
149 )
150{
151 ASSERT_INVALID_PCI_ADDRESS (Address, 0);
152 return RETURN_UNSUPPORTED;
153}
154
170UINT8
171EFIAPI
173 IN UINTN Address
174 )
175{
176 ASSERT_INVALID_PCI_ADDRESS (Address, 0);
177
178 return (UINT8)PeiPciLibPciCfg2ReadWorker (Address, EfiPeiPciCfgWidthUint8);
179}
180
197UINT8
198EFIAPI
200 IN UINTN Address,
201 IN UINT8 Value
202 )
203{
204 ASSERT_INVALID_PCI_ADDRESS (Address, 0);
205
206 return (UINT8)PeiPciLibPciCfg2WriteWorker (Address, EfiPeiPciCfgWidthUint8, Value);
207}
208
229UINT8
230EFIAPI
232 IN UINTN Address,
233 IN UINT8 OrData
234 )
235{
236 return PciWrite8 (Address, (UINT8)(PciRead8 (Address) | OrData));
237}
238
259UINT8
260EFIAPI
262 IN UINTN Address,
263 IN UINT8 AndData
264 )
265{
266 return PciWrite8 (Address, (UINT8)(PciRead8 (Address) & AndData));
267}
268
291UINT8
292EFIAPI
294 IN UINTN Address,
295 IN UINT8 AndData,
296 IN UINT8 OrData
297 )
298{
299 return PciWrite8 (Address, (UINT8)((PciRead8 (Address) & AndData) | OrData));
300}
301
323UINT8
324EFIAPI
326 IN UINTN Address,
327 IN UINTN StartBit,
328 IN UINTN EndBit
329 )
330{
331 return BitFieldRead8 (PciRead8 (Address), StartBit, EndBit);
332}
333
358UINT8
359EFIAPI
361 IN UINTN Address,
362 IN UINTN StartBit,
363 IN UINTN EndBit,
364 IN UINT8 Value
365 )
366{
367 return PciWrite8 (
368 Address,
369 BitFieldWrite8 (PciRead8 (Address), StartBit, EndBit, Value)
370 );
371}
372
400UINT8
401EFIAPI
403 IN UINTN Address,
404 IN UINTN StartBit,
405 IN UINTN EndBit,
406 IN UINT8 OrData
407 )
408{
409 return PciWrite8 (
410 Address,
411 BitFieldOr8 (PciRead8 (Address), StartBit, EndBit, OrData)
412 );
413}
414
442UINT8
443EFIAPI
445 IN UINTN Address,
446 IN UINTN StartBit,
447 IN UINTN EndBit,
448 IN UINT8 AndData
449 )
450{
451 return PciWrite8 (
452 Address,
453 BitFieldAnd8 (PciRead8 (Address), StartBit, EndBit, AndData)
454 );
455}
456
488UINT8
489EFIAPI
491 IN UINTN Address,
492 IN UINTN StartBit,
493 IN UINTN EndBit,
494 IN UINT8 AndData,
495 IN UINT8 OrData
496 )
497{
498 return PciWrite8 (
499 Address,
500 BitFieldAndThenOr8 (PciRead8 (Address), StartBit, EndBit, AndData, OrData)
501 );
502}
503
520UINT16
521EFIAPI
523 IN UINTN Address
524 )
525{
526 ASSERT_INVALID_PCI_ADDRESS (Address, 1);
527
528 return (UINT16)PeiPciLibPciCfg2ReadWorker (Address, EfiPeiPciCfgWidthUint16);
529}
530
548UINT16
549EFIAPI
551 IN UINTN Address,
552 IN UINT16 Value
553 )
554{
555 ASSERT_INVALID_PCI_ADDRESS (Address, 1);
556
557 return (UINT16)PeiPciLibPciCfg2WriteWorker (Address, EfiPeiPciCfgWidthUint16, Value);
558}
559
581UINT16
582EFIAPI
584 IN UINTN Address,
585 IN UINT16 OrData
586 )
587{
588 return PciWrite16 (Address, (UINT16)(PciRead16 (Address) | OrData));
589}
590
612UINT16
613EFIAPI
615 IN UINTN Address,
616 IN UINT16 AndData
617 )
618{
619 return PciWrite16 (Address, (UINT16)(PciRead16 (Address) & AndData));
620}
621
645UINT16
646EFIAPI
648 IN UINTN Address,
649 IN UINT16 AndData,
650 IN UINT16 OrData
651 )
652{
653 return PciWrite16 (Address, (UINT16)((PciRead16 (Address) & AndData) | OrData));
654}
655
678UINT16
679EFIAPI
681 IN UINTN Address,
682 IN UINTN StartBit,
683 IN UINTN EndBit
684 )
685{
686 return BitFieldRead16 (PciRead16 (Address), StartBit, EndBit);
687}
688
714UINT16
715EFIAPI
717 IN UINTN Address,
718 IN UINTN StartBit,
719 IN UINTN EndBit,
720 IN UINT16 Value
721 )
722{
723 return PciWrite16 (
724 Address,
725 BitFieldWrite16 (PciRead16 (Address), StartBit, EndBit, Value)
726 );
727}
728
757UINT16
758EFIAPI
760 IN UINTN Address,
761 IN UINTN StartBit,
762 IN UINTN EndBit,
763 IN UINT16 OrData
764 )
765{
766 return PciWrite16 (
767 Address,
768 BitFieldOr16 (PciRead16 (Address), StartBit, EndBit, OrData)
769 );
770}
771
800UINT16
801EFIAPI
803 IN UINTN Address,
804 IN UINTN StartBit,
805 IN UINTN EndBit,
806 IN UINT16 AndData
807 )
808{
809 return PciWrite16 (
810 Address,
811 BitFieldAnd16 (PciRead16 (Address), StartBit, EndBit, AndData)
812 );
813}
814
847UINT16
848EFIAPI
850 IN UINTN Address,
851 IN UINTN StartBit,
852 IN UINTN EndBit,
853 IN UINT16 AndData,
854 IN UINT16 OrData
855 )
856{
857 return PciWrite16 (
858 Address,
859 BitFieldAndThenOr16 (PciRead16 (Address), StartBit, EndBit, AndData, OrData)
860 );
861}
862
879UINT32
880EFIAPI
882 IN UINTN Address
883 )
884{
885 ASSERT_INVALID_PCI_ADDRESS (Address, 3);
886
888}
889
907UINT32
908EFIAPI
910 IN UINTN Address,
911 IN UINT32 Value
912 )
913{
914 ASSERT_INVALID_PCI_ADDRESS (Address, 3);
915
917}
918
940UINT32
941EFIAPI
943 IN UINTN Address,
944 IN UINT32 OrData
945 )
946{
947 return PciWrite32 (Address, PciRead32 (Address) | OrData);
948}
949
971UINT32
972EFIAPI
974 IN UINTN Address,
975 IN UINT32 AndData
976 )
977{
978 return PciWrite32 (Address, PciRead32 (Address) & AndData);
979}
980
1004UINT32
1005EFIAPI
1007 IN UINTN Address,
1008 IN UINT32 AndData,
1009 IN UINT32 OrData
1010 )
1011{
1012 return PciWrite32 (Address, (PciRead32 (Address) & AndData) | OrData);
1013}
1014
1037UINT32
1038EFIAPI
1040 IN UINTN Address,
1041 IN UINTN StartBit,
1042 IN UINTN EndBit
1043 )
1044{
1045 return BitFieldRead32 (PciRead32 (Address), StartBit, EndBit);
1046}
1047
1073UINT32
1074EFIAPI
1076 IN UINTN Address,
1077 IN UINTN StartBit,
1078 IN UINTN EndBit,
1079 IN UINT32 Value
1080 )
1081{
1082 return PciWrite32 (
1083 Address,
1084 BitFieldWrite32 (PciRead32 (Address), StartBit, EndBit, Value)
1085 );
1086}
1087
1116UINT32
1117EFIAPI
1119 IN UINTN Address,
1120 IN UINTN StartBit,
1121 IN UINTN EndBit,
1122 IN UINT32 OrData
1123 )
1124{
1125 return PciWrite32 (
1126 Address,
1127 BitFieldOr32 (PciRead32 (Address), StartBit, EndBit, OrData)
1128 );
1129}
1130
1159UINT32
1160EFIAPI
1162 IN UINTN Address,
1163 IN UINTN StartBit,
1164 IN UINTN EndBit,
1165 IN UINT32 AndData
1166 )
1167{
1168 return PciWrite32 (
1169 Address,
1170 BitFieldAnd32 (PciRead32 (Address), StartBit, EndBit, AndData)
1171 );
1172}
1173
1206UINT32
1207EFIAPI
1209 IN UINTN Address,
1210 IN UINTN StartBit,
1211 IN UINTN EndBit,
1212 IN UINT32 AndData,
1213 IN UINT32 OrData
1214 )
1215{
1216 return PciWrite32 (
1217 Address,
1218 BitFieldAndThenOr32 (PciRead32 (Address), StartBit, EndBit, AndData, OrData)
1219 );
1220}
1221
1245UINTN
1246EFIAPI
1248 IN UINTN StartAddress,
1249 IN UINTN Size,
1250 OUT VOID *Buffer
1251 )
1252{
1253 UINTN ReturnValue;
1254
1255 ASSERT_INVALID_PCI_ADDRESS (StartAddress, 0);
1256 ASSERT (((StartAddress & 0xFFF) + Size) <= 0x1000);
1257
1258 if (Size == 0) {
1259 return Size;
1260 }
1261
1262 ASSERT (Buffer != NULL);
1263
1264 //
1265 // Save Size for return
1266 //
1267 ReturnValue = Size;
1268
1269 if ((StartAddress & BIT0) != 0) {
1270 //
1271 // Read a byte if StartAddress is byte aligned
1272 //
1273 *(volatile UINT8 *)Buffer = PciRead8 (StartAddress);
1274 StartAddress += sizeof (UINT8);
1275 Size -= sizeof (UINT8);
1276 Buffer = (UINT8 *)Buffer + 1;
1277 }
1278
1279 if ((Size >= sizeof (UINT16)) && ((StartAddress & BIT1) != 0)) {
1280 //
1281 // Read a word if StartAddress is word aligned
1282 //
1283 WriteUnaligned16 (Buffer, PciRead16 (StartAddress));
1284 StartAddress += sizeof (UINT16);
1285 Size -= sizeof (UINT16);
1286 Buffer = (UINT16 *)Buffer + 1;
1287 }
1288
1289 while (Size >= sizeof (UINT32)) {
1290 //
1291 // Read as many double words as possible
1292 //
1293 WriteUnaligned32 (Buffer, PciRead32 (StartAddress));
1294 StartAddress += sizeof (UINT32);
1295 Size -= sizeof (UINT32);
1296 Buffer = (UINT32 *)Buffer + 1;
1297 }
1298
1299 if (Size >= sizeof (UINT16)) {
1300 //
1301 // Read the last remaining word if exist
1302 //
1303 WriteUnaligned16 (Buffer, PciRead16 (StartAddress));
1304 StartAddress += sizeof (UINT16);
1305 Size -= sizeof (UINT16);
1306 Buffer = (UINT16 *)Buffer + 1;
1307 }
1308
1309 if (Size >= sizeof (UINT8)) {
1310 //
1311 // Read the last remaining byte if exist
1312 //
1313 *(volatile UINT8 *)Buffer = PciRead8 (StartAddress);
1314 }
1315
1316 return ReturnValue;
1317}
1318
1343UINTN
1344EFIAPI
1346 IN UINTN StartAddress,
1347 IN UINTN Size,
1348 IN VOID *Buffer
1349 )
1350{
1351 UINTN ReturnValue;
1352
1353 ASSERT_INVALID_PCI_ADDRESS (StartAddress, 0);
1354 ASSERT (((StartAddress & 0xFFF) + Size) <= 0x1000);
1355
1356 if (Size == 0) {
1357 return 0;
1358 }
1359
1360 ASSERT (Buffer != NULL);
1361
1362 //
1363 // Save Size for return
1364 //
1365 ReturnValue = Size;
1366
1367 if ((StartAddress & BIT0) != 0) {
1368 //
1369 // Write a byte if StartAddress is byte aligned
1370 //
1371 PciWrite8 (StartAddress, *(UINT8 *)Buffer);
1372 StartAddress += sizeof (UINT8);
1373 Size -= sizeof (UINT8);
1374 Buffer = (UINT8 *)Buffer + 1;
1375 }
1376
1377 if ((Size >= sizeof (UINT16)) && ((StartAddress & BIT1) != 0)) {
1378 //
1379 // Write a word if StartAddress is word aligned
1380 //
1381 PciWrite16 (StartAddress, ReadUnaligned16 (Buffer));
1382 StartAddress += sizeof (UINT16);
1383 Size -= sizeof (UINT16);
1384 Buffer = (UINT16 *)Buffer + 1;
1385 }
1386
1387 while (Size >= sizeof (UINT32)) {
1388 //
1389 // Write as many double words as possible
1390 //
1391 PciWrite32 (StartAddress, ReadUnaligned32 (Buffer));
1392 StartAddress += sizeof (UINT32);
1393 Size -= sizeof (UINT32);
1394 Buffer = (UINT32 *)Buffer + 1;
1395 }
1396
1397 if (Size >= sizeof (UINT16)) {
1398 //
1399 // Write the last remaining word if exist
1400 //
1401 PciWrite16 (StartAddress, ReadUnaligned16 (Buffer));
1402 StartAddress += sizeof (UINT16);
1403 Size -= sizeof (UINT16);
1404 Buffer = (UINT16 *)Buffer + 1;
1405 }
1406
1407 if (Size >= sizeof (UINT8)) {
1408 //
1409 // Write the last remaining byte if exist
1410 //
1411 PciWrite8 (StartAddress, *(UINT8 *)Buffer);
1412 }
1413
1414 return ReturnValue;
1415}
UINT64 UINTN
CONST EFI_PEI_SERVICES **EFIAPI GetPeiServicesTablePointer(VOID)
UINT32 EFIAPI BitFieldAnd32(IN UINT32 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 AndData)
Definition: BitField.c:639
UINT16 EFIAPI BitFieldAnd16(IN UINT16 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 AndData)
Definition: BitField.c:447
UINT8 EFIAPI BitFieldAndThenOr8(IN UINT8 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 AndData, IN UINT8 OrData)
Definition: BitField.c:296
UINT32 EFIAPI BitFieldAndThenOr32(IN UINT32 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 AndData, IN UINT32 OrData)
Definition: BitField.c:680
UINT32 EFIAPI BitFieldWrite32(IN UINT32 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 Value)
Definition: BitField.c:563
UINT16 EFIAPI BitFieldAndThenOr16(IN UINT16 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 AndData, IN UINT16 OrData)
Definition: BitField.c:488
UINT32 EFIAPI BitFieldOr32(IN UINT32 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 OrData)
Definition: BitField.c:601
UINT16 EFIAPI ReadUnaligned16(IN CONST UINT16 *Buffer)
Definition: Unaligned.c:29
UINT8 EFIAPI BitFieldWrite8(IN UINT8 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 Value)
Definition: BitField.c:179
UINT8 EFIAPI BitFieldRead8(IN UINT8 Operand, IN UINTN StartBit, IN UINTN EndBit)
Definition: BitField.c:143
UINT8 EFIAPI BitFieldAnd8(IN UINT8 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 AndData)
Definition: BitField.c:255
UINT32 EFIAPI WriteUnaligned32(OUT UINT32 *Buffer, IN UINT32 Value)
Definition: Unaligned.c:177
UINT16 EFIAPI BitFieldWrite16(IN UINT16 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 Value)
Definition: BitField.c:371
UINT16 EFIAPI WriteUnaligned16(OUT UINT16 *Buffer, IN UINT16 Value)
Definition: Unaligned.c:61
UINT16 EFIAPI BitFieldOr16(IN UINT16 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 OrData)
Definition: BitField.c:409
UINT16 EFIAPI BitFieldRead16(IN UINT16 Operand, IN UINTN StartBit, IN UINTN EndBit)
Definition: BitField.c:335
UINT8 EFIAPI BitFieldOr8(IN UINT8 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 OrData)
Definition: BitField.c:217
UINT32 EFIAPI BitFieldRead32(IN UINT32 Operand, IN UINTN StartBit, IN UINTN EndBit)
Definition: BitField.c:527
UINT32 EFIAPI ReadUnaligned32(IN CONST UINT32 *Buffer)
Definition: Unaligned.c:145
EFI_STATUS EFIAPI PeiServicesLocatePpi(IN CONST EFI_GUID *Guid, IN UINTN Instance, IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor, IN OUT VOID **Ppi)
#define NULL
Definition: Base.h:319
#define CONST
Definition: Base.h:259
#define RETURN_UNSUPPORTED
Definition: Base.h:1081
#define IN
Definition: Base.h:279
#define OUT
Definition: Base.h:284
#define ASSERT_EFI_ERROR(StatusParameter)
Definition: DebugLib.h:462
UINT16 EFIAPI PciBitFieldOr16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 OrData)
Definition: PciLib.c:626
UINTN EFIAPI PciWriteBuffer(IN UINTN StartAddress, IN UINTN Size, IN VOID *Buffer)
Definition: PciLib.c:1124
UINT32 EFIAPI PciBitFieldWrite32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 Value)
Definition: PciLib.c:929
UINT32 EFIAPI PciAndThenOr32(IN UINTN Address, IN UINT32 AndData, IN UINT32 OrData)
Definition: PciLib.c:860
UINT32 EFIAPI PciBitFieldOr32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 OrData)
Definition: PciLib.c:969
UINT32 EFIAPI PciRead32(IN UINTN Address)
Definition: PciLib.c:739
UINT32 EFIAPI PciOr32(IN UINTN Address, IN UINT32 OrData)
Definition: PciLib.c:796
UINT8 EFIAPI PciBitFieldWrite8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 Value)
Definition: PciLib.c:246
RETURN_STATUS EFIAPI PciRegisterForRuntimeAccess(IN UINTN Address)
Definition: PciLib.c:38
UINT8 EFIAPI PciRead8(IN UINTN Address)
Definition: PciLib.c:62
UINT8 EFIAPI PciAnd8(IN UINTN Address, IN UINT8 AndData)
Definition: PciLib.c:147
UINT8 EFIAPI PciOr8(IN UINTN Address, IN UINT8 OrData)
Definition: PciLib.c:117
UINT16 EFIAPI PciAnd16(IN UINTN Address, IN UINT16 AndData)
Definition: PciLib.c:484
UINT32 EFIAPI PciWrite32(IN UINTN Address, IN UINT32 Value)
Definition: PciLib.c:765
UINT16 EFIAPI PciOr16(IN UINTN Address, IN UINT16 OrData)
Definition: PciLib.c:453
UINT16 EFIAPI PciBitFieldAnd16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 AndData)
Definition: PciLib.c:666
UINT32 EFIAPI PciBitFieldAnd32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 AndData)
Definition: PciLib.c:1009
UINT32 EFIAPI PciBitFieldRead32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit)
Definition: PciLib.c:893
UINT16 EFIAPI PciBitFieldAndThenOr16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 AndData, IN UINT16 OrData)
Definition: PciLib.c:710
UINT8 EFIAPI PciAndThenOr8(IN UINTN Address, IN UINT8 AndData, IN UINT8 OrData)
Definition: PciLib.c:179
UINT8 EFIAPI PciWrite8(IN UINTN Address, IN UINT8 Value)
Definition: PciLib.c:87
UINT16 EFIAPI PciWrite16(IN UINTN Address, IN UINT16 Value)
Definition: PciLib.c:422
UINT16 EFIAPI PciBitFieldRead16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit)
Definition: PciLib.c:550
UINT16 EFIAPI PciBitFieldWrite16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 Value)
Definition: PciLib.c:586
UINT8 EFIAPI PciBitFieldAnd8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 AndData)
Definition: PciLib.c:324
UINT8 EFIAPI PciBitFieldAndThenOr8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 AndData, IN UINT8 OrData)
Definition: PciLib.c:367
UINT8 EFIAPI PciBitFieldOr8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 OrData)
Definition: PciLib.c:285
UINT32 EFIAPI PciAnd32(IN UINTN Address, IN UINT32 AndData)
Definition: PciLib.c:827
UINT32 EFIAPI PciBitFieldAndThenOr32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 AndData, IN UINT32 OrData)
Definition: PciLib.c:1053
UINT8 EFIAPI PciBitFieldRead8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit)
Definition: PciLib.c:211
UINT16 EFIAPI PciAndThenOr16(IN UINTN Address, IN UINT16 AndData, IN UINT16 OrData)
Definition: PciLib.c:517
UINTN EFIAPI PciReadBuffer(IN UINTN StartAddress, IN UINTN Size, OUT VOID *Buffer)
Definition: PciLib.c:1089
UINT16 EFIAPI PciRead16(IN UINTN Address)
Definition: PciLib.c:396
#define PCI_TO_PCICFG2_ADDRESS(A)
Definition: PciLib.c:37
UINT32 PeiPciLibPciCfg2ReadWorker(IN UINTN Address, IN EFI_PEI_PCI_CFG_PPI_WIDTH Width)
Definition: PciLib.c:55
#define ASSERT_INVALID_PCI_ADDRESS(A, M)
Definition: PciLib.c:27
UINT32 PeiPciLibPciCfg2WriteWorker(IN UINTN Address, IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, IN UINT32 Data)
Definition: PciLib.c:98
EFI_PEI_PCI_CFG_PPI_WIDTH
Definition: PciCfg2.h:35
@ EfiPeiPciCfgWidthUint8
Definition: PciCfg2.h:39
@ EfiPeiPciCfgWidthUint16
Definition: PciCfg2.h:43
@ EfiPeiPciCfgWidthUint32
Definition: PciCfg2.h:47
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29