1. Do not use tab characters 2. No trailing white space in one line 3. All files must end with CRLF Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Liming Gao <liming.gao@intel.com>
		
			
				
	
	
		
			129 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  This protocol abstracts the PIRQ programming from the generic EFI Compatibility Support Modules (CSMs).
 | 
						|
 | 
						|
Copyright (c) 2007 - 2018, 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 that 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.
 | 
						|
 | 
						|
  @par Revision Reference:
 | 
						|
  This protocol is defined in Framework for the EFI Compatibility Support Module specification.
 | 
						|
  Version 0.97.
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef _EFI_LEGACY_INTERRUPT_H_
 | 
						|
#define _EFI_LEGACY_INTERRUPT_H_
 | 
						|
 | 
						|
 | 
						|
#define EFI_LEGACY_INTERRUPT_PROTOCOL_GUID \
 | 
						|
  { \
 | 
						|
    0x31ce593d, 0x108a, 0x485d, {0xad, 0xb2, 0x78, 0xf2, 0x1f, 0x29, 0x66, 0xbe } \
 | 
						|
  }
 | 
						|
 | 
						|
typedef struct _EFI_LEGACY_INTERRUPT_PROTOCOL EFI_LEGACY_INTERRUPT_PROTOCOL;
 | 
						|
 | 
						|
/**
 | 
						|
  Get the number of PIRQs this hardware supports.
 | 
						|
 | 
						|
  @param  This                  The protocol instance pointer.
 | 
						|
  @param  NumberPirsq           The number of PIRQs that are supported.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The number of PIRQs was returned successfully.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_LEGACY_INTERRUPT_GET_NUMBER_PIRQS)(
 | 
						|
  IN EFI_LEGACY_INTERRUPT_PROTOCOL            *This,
 | 
						|
  OUT UINT8                                   *NumberPirqs
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Gets the PCI location associated with this protocol.
 | 
						|
 | 
						|
  @param  This                  The Protocol instance pointer.
 | 
						|
  @param  Bus                   The PCI Bus.
 | 
						|
  @param  Device                The PCI Device.
 | 
						|
  @param  Function              The PCI Function.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The Bus, Device, and Function were returned successfully.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_LEGACY_INTERRUPT_GET_LOCATION)(
 | 
						|
  IN EFI_LEGACY_INTERRUPT_PROTOCOL            *This,
 | 
						|
  OUT UINT8                                   *Bus,
 | 
						|
  OUT UINT8                                   *Device,
 | 
						|
  OUT UINT8                                   *Function
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Read the PIRQ register and return the data
 | 
						|
 | 
						|
  @param  This                  The protocol instance pointer.
 | 
						|
  @param  PirqNumber            The PIRQ register to read.
 | 
						|
  @param  PirqData              The data read.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The data was read.
 | 
						|
  @retval EFI_INVALID_PARAMETER Invalid PIRQ number.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_LEGACY_INTERRUPT_READ_PIRQ)(
 | 
						|
  IN EFI_LEGACY_INTERRUPT_PROTOCOL           *This,
 | 
						|
  IN  UINT8                                  PirqNumber,
 | 
						|
  OUT UINT8                                  *PirqData
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Write the specified PIRQ register with the given data.
 | 
						|
 | 
						|
  @param  This                  The protocol instance pointer.
 | 
						|
  @param  PirqNumber            A PIRQ register to read.
 | 
						|
  @param  PirqData              The data to write.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The PIRQ was programmed.
 | 
						|
  @retval EFI_INVALID_PARAMETER Invalid PIRQ number.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_LEGACY_INTERRUPT_WRITE_PIRQ)(
 | 
						|
  IN EFI_LEGACY_INTERRUPT_PROTOCOL           *This,
 | 
						|
  IN  UINT8                                  PirqNumber,
 | 
						|
  IN UINT8                                   PirqData
 | 
						|
  );
 | 
						|
 | 
						|
struct _EFI_LEGACY_INTERRUPT_PROTOCOL {
 | 
						|
  ///
 | 
						|
  ///   Gets the number of PIRQs supported.
 | 
						|
  ///
 | 
						|
  EFI_LEGACY_INTERRUPT_GET_NUMBER_PIRQS GetNumberPirqs;
 | 
						|
 | 
						|
  ///
 | 
						|
  /// Gets the PCI bus, device, and function that is associated with this protocol.
 | 
						|
  ///
 | 
						|
  EFI_LEGACY_INTERRUPT_GET_LOCATION     GetLocation;
 | 
						|
 | 
						|
  ///
 | 
						|
  /// Reads the indicated PIRQ register.
 | 
						|
  ///
 | 
						|
  EFI_LEGACY_INTERRUPT_READ_PIRQ        ReadPirq;
 | 
						|
 | 
						|
  ///
 | 
						|
  /// Writes to the indicated PIRQ register.
 | 
						|
  ///
 | 
						|
  EFI_LEGACY_INTERRUPT_WRITE_PIRQ       WritePirq;
 | 
						|
};
 | 
						|
 | 
						|
extern EFI_GUID gEfiLegacyInterruptProtocolGuid;
 | 
						|
 | 
						|
#endif
 |