mirror of https://github.com/acidanthera/audk.git
Remove dependency on PCI Root Bridge I/O Protocol. This library should only layer on top of the CPU I/O Protocol.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9690 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
17d2c9a3af
commit
33338afebd
|
@ -4,7 +4,7 @@
|
|||
for implementation of IoLib library instance. It is included
|
||||
all source code of this library instance.
|
||||
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
Copyright (c) 2006 - 2010, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
|
@ -23,10 +23,7 @@
|
|||
|
||||
#include <FrameworkDxe.h>
|
||||
|
||||
|
||||
#include <Protocol/CpuIo.h>
|
||||
#include <Protocol/PciRootBridgeIo.h>
|
||||
|
||||
|
||||
#include <Library/IoLib.h>
|
||||
#include <Library/UefiBootServicesTableLib.h>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
# I/O Library implementation that uses the CPU I/O Protocol for I/O
|
||||
# and MMIO operations.
|
||||
# Copyright (c) 2006, Intel Corporation.
|
||||
# Copyright (c) 2006 - 2010, Intel Corporation.
|
||||
#
|
||||
# All rights reserved. This program and the accompanying materials
|
||||
# are licensed and made available under the terms and conditions of the BSD License
|
||||
|
@ -22,8 +22,6 @@
|
|||
MODULE_TYPE = DXE_DRIVER
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = IoLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
|
||||
EFI_SPECIFICATION_VERSION = 0x00020000
|
||||
|
||||
CONSTRUCTOR = IoLibConstructor
|
||||
|
||||
#
|
||||
|
@ -38,12 +36,10 @@
|
|||
IoHighLevel.c
|
||||
IoLib.c
|
||||
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
IntelFrameworkPkg/IntelFrameworkPkg.dec
|
||||
|
||||
|
||||
[LibraryClasses]
|
||||
BaseLib
|
||||
DebugLib
|
||||
|
@ -51,7 +47,6 @@
|
|||
|
||||
[Protocols]
|
||||
gEfiCpuIoProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||
gEfiPciRootBridgeIoProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||
|
||||
[Depex]
|
||||
gEfiCpuIoProtocolGuid OR gEfiPciRootBridgeIoProtocolGuid
|
||||
gEfiCpuIoProtocolGuid
|
|
@ -3,7 +3,7 @@
|
|||
The implementation of I/O operation for this library instance
|
||||
are based on EFI_CPU_IO_PROTOCOL.
|
||||
|
||||
Copyright (c) 2006, Intel Corporation<BR>
|
||||
Copyright (c) 2006-2010, Intel Corporation<BR>
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
|
@ -22,8 +22,7 @@
|
|||
//
|
||||
// Globle varible to cache pointer to CpuIo protocol.
|
||||
//
|
||||
EFI_CPU_IO_PROTOCOL *mCpuIo = NULL;
|
||||
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *mPciRootBridgeIo = NULL;
|
||||
EFI_CPU_IO_PROTOCOL *mCpuIo = NULL;
|
||||
|
||||
/**
|
||||
The constructor function caches the pointer to CpuIo protocol.
|
||||
|
@ -44,12 +43,9 @@ IoLibConstructor (
|
|||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = gBS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, (VOID **) &mPciRootBridgeIo);
|
||||
if (EFI_ERROR (Status)) {
|
||||
Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, (VOID **) &mCpuIo);
|
||||
}
|
||||
Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, (VOID **) &mCpuIo);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
return Status;
|
||||
|
@ -72,18 +68,14 @@ IoLibConstructor (
|
|||
UINT64
|
||||
EFIAPI
|
||||
IoReadWorker (
|
||||
IN UINTN Port,
|
||||
IN EFI_CPU_IO_PROTOCOL_WIDTH Width
|
||||
IN UINTN Port,
|
||||
IN EFI_CPU_IO_PROTOCOL_WIDTH Width
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINT64 Data;
|
||||
|
||||
if (mPciRootBridgeIo != NULL) {
|
||||
Status = mPciRootBridgeIo->Io.Read (mPciRootBridgeIo, (EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH) Width, Port, 1, &Data);
|
||||
} else {
|
||||
Status = mCpuIo->Io.Read (mCpuIo, Width, Port, 1, &Data);
|
||||
}
|
||||
Status = mCpuIo->Io.Read (mCpuIo, Width, Port, 1, &Data);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
return Data;
|
||||
|
@ -107,18 +99,14 @@ IoReadWorker (
|
|||
UINT64
|
||||
EFIAPI
|
||||
IoWriteWorker (
|
||||
IN UINTN Port,
|
||||
IN EFI_CPU_IO_PROTOCOL_WIDTH Width,
|
||||
IN UINT64 Data
|
||||
IN UINTN Port,
|
||||
IN EFI_CPU_IO_PROTOCOL_WIDTH Width,
|
||||
IN UINT64 Data
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
if (mPciRootBridgeIo != NULL) {
|
||||
Status = mPciRootBridgeIo->Io.Write (mPciRootBridgeIo, (EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH) Width, Port, 1, &Data);
|
||||
} else {
|
||||
Status = mCpuIo->Io.Write (mCpuIo, Width, Port, 1, &Data);
|
||||
}
|
||||
Status = mCpuIo->Io.Write (mCpuIo, Width, Port, 1, &Data);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
return Data;
|
||||
|
@ -141,18 +129,14 @@ IoWriteWorker (
|
|||
UINT64
|
||||
EFIAPI
|
||||
MmioReadWorker (
|
||||
IN UINTN Address,
|
||||
IN EFI_CPU_IO_PROTOCOL_WIDTH Width
|
||||
IN UINTN Address,
|
||||
IN EFI_CPU_IO_PROTOCOL_WIDTH Width
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINT64 Data;
|
||||
EFI_STATUS Status;
|
||||
UINT64 Data;
|
||||
|
||||
if (mPciRootBridgeIo != NULL) {
|
||||
Status = mPciRootBridgeIo->Mem.Read (mPciRootBridgeIo, (EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH) Width, Address, 1, &Data);
|
||||
} else {
|
||||
Status = mCpuIo->Mem.Read (mCpuIo, Width, Address, 1, &Data);
|
||||
}
|
||||
Status = mCpuIo->Mem.Read (mCpuIo, Width, Address, 1, &Data);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
return Data;
|
||||
|
@ -176,18 +160,14 @@ MmioReadWorker (
|
|||
UINT64
|
||||
EFIAPI
|
||||
MmioWriteWorker (
|
||||
IN UINTN Address,
|
||||
IN EFI_CPU_IO_PROTOCOL_WIDTH Width,
|
||||
IN UINT64 Data
|
||||
IN UINTN Address,
|
||||
IN EFI_CPU_IO_PROTOCOL_WIDTH Width,
|
||||
IN UINT64 Data
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
if (mPciRootBridgeIo != NULL) {
|
||||
Status = mPciRootBridgeIo->Mem.Write (mPciRootBridgeIo, (EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH) Width, Address, 1, &Data);
|
||||
} else {
|
||||
Status = mCpuIo->Mem.Write (mCpuIo, Width, Address, 1, &Data);
|
||||
}
|
||||
Status = mCpuIo->Mem.Write (mCpuIo, Width, Address, 1, &Data);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
return Data;
|
||||
|
|
Loading…
Reference in New Issue