Introduce a protocol that can be exposed by a platform for devices that are not discoverable, usually because they are wired straight to the memory bus rather than to an enumerable bus like PCI or USB. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com> Tested-by: Marcin Wojtas <mw@semihalf.com>
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Protocol to describe devices that are not on a discoverable bus
 | |
| 
 | |
|   Copyright (c) 2016, Linaro, Ltd. 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.
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __NON_DISCOVERABLE_DEVICE_H__
 | |
| #define __NON_DISCOVERABLE_DEVICE_H__
 | |
| 
 | |
| #include <IndustryStandard/Acpi.h>
 | |
| 
 | |
| #define EDKII_NON_DISCOVERABLE_DEVICE_PROTOCOL_GUID \
 | |
|   { 0x0d51905b, 0xb77e, 0x452a, {0xa2, 0xc0, 0xec, 0xa0, 0xcc, 0x8d, 0x51, 0x4a } }
 | |
| 
 | |
| //
 | |
| // Protocol interface structure
 | |
| //
 | |
| typedef struct _NON_DISCOVERABLE_DEVICE NON_DISCOVERABLE_DEVICE;
 | |
| 
 | |
| //
 | |
| // Data Types
 | |
| //
 | |
| typedef enum {
 | |
|   NonDiscoverableDeviceDmaTypeCoherent,
 | |
|   NonDiscoverableDeviceDmaTypeNonCoherent,
 | |
|   NonDiscoverableDeviceDmaTypeMax,
 | |
| } NON_DISCOVERABLE_DEVICE_DMA_TYPE;
 | |
| 
 | |
| //
 | |
| // Function Prototypes
 | |
| //
 | |
| 
 | |
| /**
 | |
|   Perform device specific initialization before the device is started
 | |
| 
 | |
|   @param  This          The non-discoverable device protocol pointer
 | |
| 
 | |
|   @retval EFI_SUCCESS   Initialization successful, the device may be used
 | |
|   @retval Other         Initialization failed, device should not be started
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *NON_DISCOVERABLE_DEVICE_INIT) (
 | |
|   IN  NON_DISCOVERABLE_DEVICE       *This
 | |
|   );
 | |
| 
 | |
| struct _NON_DISCOVERABLE_DEVICE {
 | |
|   //
 | |
|   // The type of device
 | |
|   //
 | |
|   CONST EFI_GUID                      *Type;
 | |
|   //
 | |
|   // Whether this device is DMA coherent
 | |
|   //
 | |
|   NON_DISCOVERABLE_DEVICE_DMA_TYPE    DmaType;
 | |
|   //
 | |
|   // Initialization function for the device
 | |
|   //
 | |
|   NON_DISCOVERABLE_DEVICE_INIT        Initialize;
 | |
|   //
 | |
|   // The MMIO and I/O regions owned by the device
 | |
|   //
 | |
|   EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR   *Resources;
 | |
| };
 | |
| 
 | |
| extern EFI_GUID gEdkiiNonDiscoverableDeviceProtocolGuid;
 | |
| 
 | |
| #endif
 |