Remove the references to DuetPkg.  Copy the files from revision
ffea0a2ce2 of DuetPkg into
CorebootModulePkg.  The components include:
* PciBusNoEnumerationDxe
* PciRootBridgeNoEnumerationDxe
* SataControllerDxe
TEST=Build and run on Galileo Gen2
Change-Id: Id07185f7e226749e5f7c6b6cb427bcef7eac8496
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Lee Leahy <leroy.p.leahy@intel.com>
Reviewed-by: Maurice Ma <maurice.ma@intel.com>
Reviewed-by: Prince Agyeman <prince.agyeman@intel.com>
		
	
		
			
				
	
	
		
			245 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			245 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*++
 | 
						|
 | 
						|
Copyright (c) 2005 - 2006, Intel Corporation. All rights reserved.<BR>
 | 
						|
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        
 | 
						|
http://opensource.org/licenses/bsd-license.php                                            
 | 
						|
                                                                                          
 | 
						|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
 | 
						|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             
 | 
						|
 | 
						|
Module Name:
 | 
						|
  PcatPciRootBridge.h
 | 
						|
 | 
						|
Abstract:
 | 
						|
 | 
						|
  The driver for the host to pci bridge (root bridge).
 | 
						|
 | 
						|
--*/
 | 
						|
 | 
						|
#ifndef _PCAT_PCI_ROOT_BRIDGE_H_
 | 
						|
#define _PCAT_PCI_ROOT_BRIDGE_H_
 | 
						|
 | 
						|
#include <PiDxe.h>
 | 
						|
#include <Protocol/PciRootBridgeIo.h>
 | 
						|
#include <Protocol/DeviceIo.h>
 | 
						|
#include <Protocol/CpuIo2.h>
 | 
						|
 | 
						|
#include <Library/UefiLib.h>
 | 
						|
#include <Library/BaseLib.h>
 | 
						|
#include <Library/MemoryAllocationLib.h>
 | 
						|
#include <Library/UefiBootServicesTableLib.h>
 | 
						|
#include <Library/DebugLib.h>
 | 
						|
#include <Library/BaseMemoryLib.h>
 | 
						|
#include <Library/DevicePathLib.h>
 | 
						|
#include <Library/HobLib.h>
 | 
						|
 | 
						|
#include <Guid/PciOptionRomTable.h>
 | 
						|
#include <Guid/HobList.h>
 | 
						|
#include <Guid/PciExpressBaseAddress.h>
 | 
						|
 | 
						|
#include <IndustryStandard/Acpi.h>
 | 
						|
#include <IndustryStandard/Pci.h>
 | 
						|
 | 
						|
#define PCI_MAX_SEGMENT   0
 | 
						|
//
 | 
						|
// Driver Instance Data Prototypes
 | 
						|
//
 | 
						|
#define PCAT_PCI_ROOT_BRIDGE_SIGNATURE  SIGNATURE_32('p', 'c', 'r', 'b')
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT32                            Signature;
 | 
						|
  EFI_HANDLE                        Handle;
 | 
						|
                                    
 | 
						|
  EFI_DEVICE_PATH_PROTOCOL          *DevicePath;
 | 
						|
  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL   Io;
 | 
						|
  EFI_CPU_IO2_PROTOCOL              *CpuIo;
 | 
						|
 | 
						|
  UINT32                            RootBridgeNumber;
 | 
						|
  UINT32                            PrimaryBus;
 | 
						|
  UINT32                            SubordinateBus;
 | 
						|
                                     
 | 
						|
  UINT64                            MemBase;     // Offsets host to bus memory addr.
 | 
						|
  UINT64                            MemLimit;    // Max allowable memory access
 | 
						|
                                    
 | 
						|
  UINT64                            IoBase;      // Offsets host to bus io addr.
 | 
						|
  UINT64                            IoLimit;     // Max allowable io access
 | 
						|
                                    
 | 
						|
  UINT64                            PciAddress;
 | 
						|
  UINT64                            PciData;
 | 
						|
                                    
 | 
						|
  UINT64                            PhysicalMemoryBase;
 | 
						|
  UINT64                            PhysicalIoBase;
 | 
						|
                                     
 | 
						|
  EFI_LOCK                          PciLock;
 | 
						|
                                    
 | 
						|
  UINT64                            Attributes;
 | 
						|
                                    
 | 
						|
  UINT64                            Mem32Base;
 | 
						|
  UINT64                            Mem32Limit;
 | 
						|
  UINT64                            Pmem32Base;
 | 
						|
  UINT64                            Pmem32Limit;
 | 
						|
  UINT64                            Mem64Base;
 | 
						|
  UINT64                            Mem64Limit;
 | 
						|
  UINT64                            Pmem64Base;
 | 
						|
  UINT64                            Pmem64Limit;
 | 
						|
 | 
						|
  UINT64                            PciExpressBaseAddress;
 | 
						|
 | 
						|
  EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Configuration;
 | 
						|
 | 
						|
  LIST_ENTRY                    MapInfo;
 | 
						|
} PCAT_PCI_ROOT_BRIDGE_INSTANCE;
 | 
						|
 | 
						|
//
 | 
						|
// Driver Instance Data Macros
 | 
						|
//
 | 
						|
#define DRIVER_INSTANCE_FROM_PCI_ROOT_BRIDGE_IO_THIS(a) \
 | 
						|
  CR(a, PCAT_PCI_ROOT_BRIDGE_INSTANCE, Io, PCAT_PCI_ROOT_BRIDGE_SIGNATURE)
 | 
						|
 | 
						|
//
 | 
						|
// Private data types
 | 
						|
//
 | 
						|
typedef union {
 | 
						|
  UINT8   volatile  *buf;
 | 
						|
  UINT8   volatile  *ui8;
 | 
						|
  UINT16  volatile  *ui16;
 | 
						|
  UINT32  volatile  *ui32;
 | 
						|
  UINT64  volatile  *ui64;
 | 
						|
  UINTN   volatile  ui;
 | 
						|
} PTR;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION  Operation;
 | 
						|
  UINTN                                      NumberOfBytes;
 | 
						|
  UINTN                                      NumberOfPages;
 | 
						|
  EFI_PHYSICAL_ADDRESS                       HostAddress;
 | 
						|
  EFI_PHYSICAL_ADDRESS                       MappedHostAddress;
 | 
						|
} MAP_INFO;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  LIST_ENTRY Link;
 | 
						|
  MAP_INFO * Map;  
 | 
						|
} MAP_INFO_INSTANCE;
 | 
						|
 | 
						|
typedef
 | 
						|
VOID
 | 
						|
(*EFI_PCI_BUS_SCAN_CALLBACK) (
 | 
						|
  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *IoDev,
 | 
						|
  UINT16                           MinBus,
 | 
						|
  UINT16                           MaxBus,
 | 
						|
  UINT16                           MinDevice,
 | 
						|
  UINT16                           MaxDevice,
 | 
						|
  UINT16                           MinFunc,
 | 
						|
  UINT16                           MaxFunc,
 | 
						|
  UINT16                           Bus,
 | 
						|
  UINT16                           Device,
 | 
						|
  UINT16                           Func,
 | 
						|
  IN VOID                          *Context
 | 
						|
  );
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT16                    *CommandRegisterBuffer;
 | 
						|
  UINT32                    PpbMemoryWindow;     
 | 
						|
} PCAT_PCI_ROOT_BRIDGE_SCAN_FOR_ROM_CONTEXT;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT8 Register;
 | 
						|
  UINT8 Function;
 | 
						|
  UINT8 Device;
 | 
						|
  UINT8 Bus;
 | 
						|
  UINT8 Reserved[4];
 | 
						|
} DEFIO_PCI_ADDR;
 | 
						|
 | 
						|
//
 | 
						|
// Driver Protocol Constructor Prototypes
 | 
						|
//
 | 
						|
EFI_STATUS 
 | 
						|
ConstructConfiguration(
 | 
						|
  IN OUT PCAT_PCI_ROOT_BRIDGE_INSTANCE  *PrivateData
 | 
						|
  );
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
PcatPciRootBridgeParseBars (
 | 
						|
  IN PCAT_PCI_ROOT_BRIDGE_INSTANCE  *PrivateData,
 | 
						|
  IN UINT16                         Command,
 | 
						|
  IN UINTN                          Bus,
 | 
						|
  IN UINTN                          Device,
 | 
						|
  IN UINTN                          Function
 | 
						|
  );
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
ScanPciRootBridgeForRoms(
 | 
						|
  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *IoDev
 | 
						|
  );
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
PcatRootBridgeDevicePathConstructor (
 | 
						|
  IN EFI_DEVICE_PATH_PROTOCOL  **Protocol,
 | 
						|
  IN UINTN                     RootBridgeNumber,
 | 
						|
  IN BOOLEAN                   IsPciExpress
 | 
						|
  );
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
PcatRootBridgeIoConstructor (
 | 
						|
  IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *Protocol,
 | 
						|
  IN UINTN                            SegmentNumber
 | 
						|
  );
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
PcatRootBridgeIoGetIoPortMapping (
 | 
						|
  OUT EFI_PHYSICAL_ADDRESS  *IoPortMapping,
 | 
						|
  OUT EFI_PHYSICAL_ADDRESS  *MemoryPortMapping
 | 
						|
  );
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
PcatRootBridgeIoPciRW (
 | 
						|
  IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,
 | 
						|
  IN BOOLEAN                                Write,
 | 
						|
  IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,
 | 
						|
  IN UINT64                                 UserAddress,
 | 
						|
  IN UINTN                                  Count,
 | 
						|
  IN OUT VOID                               *UserBuffer
 | 
						|
  );
 | 
						|
 | 
						|
UINT64
 | 
						|
GetPciExpressBaseAddressForRootBridge (
 | 
						|
  IN UINTN    HostBridgeNumber,
 | 
						|
  IN UINTN    RootBridgeNumber
 | 
						|
  );
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
PcatRootBridgeIoIoRead (
 | 
						|
  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,
 | 
						|
  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,
 | 
						|
  IN     UINT64                                 UserAddress,
 | 
						|
  IN     UINTN                                  Count,
 | 
						|
  IN OUT VOID                                   *UserBuffer
 | 
						|
  );
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
PcatRootBridgeIoIoWrite (
 | 
						|
  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,
 | 
						|
  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,
 | 
						|
  IN     UINT64                                 UserAddress,
 | 
						|
  IN     UINTN                                  Count,
 | 
						|
  IN OUT VOID                                   *UserBuffer
 | 
						|
  );
 | 
						|
 | 
						|
//
 | 
						|
// Driver entry point prototype
 | 
						|
//
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
InitializePcatPciRootBridge (
 | 
						|
  IN EFI_HANDLE       ImageHandle,
 | 
						|
  IN EFI_SYSTEM_TABLE *SystemTable
 | 
						|
  );
 | 
						|
 | 
						|
extern EFI_CPU_IO2_PROTOCOL  *gCpuIo;
 | 
						|
 | 
						|
#endif
 |