23#define ASSERT_INVALID_PCI_ADDRESS(A, M) \
24 ASSERT (((A) & (~0xfffffff | (M))) == 0)
33#define PCI_TO_PCI_ROOT_BRIDGE_IO_ADDRESS(A) \
34 ((((A) << 4) & 0xff000000) | (((A) >> 4) & 0x00000700) | (((A) << 1) & 0x001f0000) | (LShiftU64((A) & 0xfff, 32)))
62 Status =
gSmst->SmmLocateProtocol (&gEfiSmmPciRootBridgeIoProtocolGuid,
NULL, (VOID **)&mSmmPciRootBridgeIo);
64 ASSERT (mSmmPciRootBridgeIo !=
NULL);
91 mSmmPciRootBridgeIo->Pci.
Read (
125 mSmmPciRootBridgeIo->Pci.
Write (
1267 ASSERT (((StartAddress & 0xFFF) + Size) <= 0x1000);
1273 ASSERT (Buffer !=
NULL);
1280 if ((StartAddress & BIT0) != 0) {
1284 *(
volatile UINT8 *)Buffer =
PciRead8 (StartAddress);
1285 StartAddress +=
sizeof (UINT8);
1286 Size -=
sizeof (UINT8);
1287 Buffer = (UINT8 *)Buffer + 1;
1290 if ((Size >=
sizeof (UINT16)) && ((StartAddress & BIT1) != 0)) {
1295 StartAddress +=
sizeof (UINT16);
1296 Size -=
sizeof (UINT16);
1297 Buffer = (UINT16 *)Buffer + 1;
1300 while (Size >=
sizeof (UINT32)) {
1305 StartAddress +=
sizeof (UINT32);
1306 Size -=
sizeof (UINT32);
1307 Buffer = (UINT32 *)Buffer + 1;
1310 if (Size >=
sizeof (UINT16)) {
1315 StartAddress +=
sizeof (UINT16);
1316 Size -=
sizeof (UINT16);
1317 Buffer = (UINT16 *)Buffer + 1;
1320 if (Size >=
sizeof (UINT8)) {
1324 *(
volatile UINT8 *)Buffer =
PciRead8 (StartAddress);
1365 ASSERT (((StartAddress & 0xFFF) + Size) <= 0x1000);
1371 ASSERT (Buffer !=
NULL);
1378 if ((StartAddress & BIT0) != 0) {
1382 PciWrite8 (StartAddress, *(UINT8 *)Buffer);
1383 StartAddress +=
sizeof (UINT8);
1384 Size -=
sizeof (UINT8);
1385 Buffer = (UINT8 *)Buffer + 1;
1388 if ((Size >=
sizeof (UINT16)) && ((StartAddress & BIT1) != 0)) {
1393 StartAddress +=
sizeof (UINT16);
1394 Size -=
sizeof (UINT16);
1395 Buffer = (UINT16 *)Buffer + 1;
1398 while (Size >=
sizeof (UINT32)) {
1403 StartAddress +=
sizeof (UINT32);
1404 Size -=
sizeof (UINT32);
1405 Buffer = (UINT32 *)Buffer + 1;
1408 if (Size >=
sizeof (UINT16)) {
1413 StartAddress +=
sizeof (UINT16);
1414 Size -=
sizeof (UINT16);
1415 Buffer = (UINT16 *)Buffer + 1;
1418 if (Size >=
sizeof (UINT8)) {
1422 PciWrite8 (StartAddress, *(UINT8 *)Buffer);
UINT32 EFIAPI BitFieldAnd32(IN UINT32 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 AndData)
UINT16 EFIAPI BitFieldAnd16(IN UINT16 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 AndData)
UINT8 EFIAPI BitFieldAndThenOr8(IN UINT8 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 AndData, IN UINT8 OrData)
UINT32 EFIAPI BitFieldAndThenOr32(IN UINT32 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 AndData, IN UINT32 OrData)
UINT32 EFIAPI BitFieldWrite32(IN UINT32 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 Value)
UINT16 EFIAPI BitFieldAndThenOr16(IN UINT16 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 AndData, IN UINT16 OrData)
UINT32 EFIAPI BitFieldOr32(IN UINT32 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 OrData)
UINT16 EFIAPI ReadUnaligned16(IN CONST UINT16 *Buffer)
UINT8 EFIAPI BitFieldWrite8(IN UINT8 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 Value)
UINT8 EFIAPI BitFieldRead8(IN UINT8 Operand, IN UINTN StartBit, IN UINTN EndBit)
UINT8 EFIAPI BitFieldAnd8(IN UINT8 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 AndData)
UINT32 EFIAPI WriteUnaligned32(OUT UINT32 *Buffer, IN UINT32 Value)
UINT16 EFIAPI BitFieldWrite16(IN UINT16 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 Value)
UINT16 EFIAPI WriteUnaligned16(OUT UINT16 *Buffer, IN UINT16 Value)
UINT16 EFIAPI BitFieldOr16(IN UINT16 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 OrData)
UINT16 EFIAPI BitFieldRead16(IN UINT16 Operand, IN UINTN StartBit, IN UINTN EndBit)
UINT8 EFIAPI BitFieldOr8(IN UINT8 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 OrData)
UINT32 EFIAPI BitFieldRead32(IN UINT32 Operand, IN UINTN StartBit, IN UINTN EndBit)
UINT32 EFIAPI ReadUnaligned32(IN CONST UINT32 *Buffer)
#define RETURN_UNSUPPORTED
#define ASSERT_EFI_ERROR(StatusParameter)
UINT16 EFIAPI PciBitFieldOr16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 OrData)
UINTN EFIAPI PciWriteBuffer(IN UINTN StartAddress, IN UINTN Size, IN VOID *Buffer)
UINT32 EFIAPI PciBitFieldWrite32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 Value)
UINT32 EFIAPI PciAndThenOr32(IN UINTN Address, IN UINT32 AndData, IN UINT32 OrData)
UINT32 EFIAPI PciBitFieldOr32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 OrData)
UINT32 EFIAPI PciRead32(IN UINTN Address)
UINT32 EFIAPI PciOr32(IN UINTN Address, IN UINT32 OrData)
UINT8 EFIAPI PciBitFieldWrite8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 Value)
RETURN_STATUS EFIAPI PciRegisterForRuntimeAccess(IN UINTN Address)
UINT8 EFIAPI PciRead8(IN UINTN Address)
UINT8 EFIAPI PciAnd8(IN UINTN Address, IN UINT8 AndData)
UINT8 EFIAPI PciOr8(IN UINTN Address, IN UINT8 OrData)
UINT16 EFIAPI PciAnd16(IN UINTN Address, IN UINT16 AndData)
UINT32 EFIAPI PciWrite32(IN UINTN Address, IN UINT32 Value)
UINT16 EFIAPI PciOr16(IN UINTN Address, IN UINT16 OrData)
UINT16 EFIAPI PciBitFieldAnd16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 AndData)
UINT32 EFIAPI PciBitFieldAnd32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 AndData)
UINT32 EFIAPI PciBitFieldRead32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit)
UINT16 EFIAPI PciBitFieldAndThenOr16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 AndData, IN UINT16 OrData)
UINT8 EFIAPI PciAndThenOr8(IN UINTN Address, IN UINT8 AndData, IN UINT8 OrData)
UINT8 EFIAPI PciWrite8(IN UINTN Address, IN UINT8 Value)
UINT16 EFIAPI PciWrite16(IN UINTN Address, IN UINT16 Value)
UINT16 EFIAPI PciBitFieldRead16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit)
UINT16 EFIAPI PciBitFieldWrite16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 Value)
UINT8 EFIAPI PciBitFieldAnd8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 AndData)
UINT8 EFIAPI PciBitFieldAndThenOr8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 AndData, IN UINT8 OrData)
UINT8 EFIAPI PciBitFieldOr8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 OrData)
UINT32 EFIAPI PciAnd32(IN UINTN Address, IN UINT32 AndData)
UINT32 EFIAPI PciBitFieldAndThenOr32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 AndData, IN UINT32 OrData)
UINT8 EFIAPI PciBitFieldRead8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit)
UINT16 EFIAPI PciAndThenOr16(IN UINTN Address, IN UINT16 AndData, IN UINT16 OrData)
UINTN EFIAPI PciReadBuffer(IN UINTN StartAddress, IN UINTN Size, OUT VOID *Buffer)
UINT16 EFIAPI PciRead16(IN UINTN Address)
#define ASSERT_INVALID_PCI_ADDRESS(A, M)
UINT32 SmmPciLibPciRootBridgeIoReadWorker(IN UINTN Address, IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH Width)
UINT32 SmmPciLibPciRootBridgeIoWriteWorker(IN UINTN Address, IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH Width, IN UINT32 Data)
EFI_STATUS EFIAPI PciLibConstructor(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
#define PCI_TO_PCI_ROOT_BRIDGE_IO_ADDRESS(A)
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH
EFI_SMM_SYSTEM_TABLE2 * gSmst
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM Write
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM Read