/** @file
Interrupt policy
Copyright (c) 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _INTERRUPT_CONFIG_H_
#define _INTERRUPT_CONFIG_H_
#define INTERRUPT_CONFIG_REVISION 1
extern EFI_GUID gInterruptConfigGuid;
#pragma pack (push,1)
//
// --------------------- Interrupts Config ------------------------------
//
typedef enum {
PchNoInt, ///< No Interrupt Pin
PchIntA,
PchIntB,
PchIntC,
PchIntD
} PCH_INT_PIN;
///
/// The PCH_DEVICE_INTERRUPT_CONFIG block describes interrupt pin, IRQ and interrupt mode for PCH device.
///
typedef struct {
UINT8 Device; ///< Device number
UINT8 Function; ///< Device function
UINT8 IntX; ///< Interrupt pin: INTA-INTD (see PCH_INT_PIN)
UINT8 Irq; ///< IRQ to be set for device.
} PCH_DEVICE_INTERRUPT_CONFIG;
#define PCH_MAX_DEVICE_INTERRUPT_CONFIG 128 ///< Number of all PCH devices
#define PCH_MAX_PXRC_CONFIG 8 ///< Number of PXRC registers in ITSS
#define PCH_MAX_ITSS_IPC_REGS 4 ///< Number of IPC registers in ITSS
#define PCH_MAX_ITSS_IRQ_NUM 120 ///< Maximum number of IRQs
///
/// The PCH_INTERRUPT_CONFIG block describes interrupt settings for PCH.
///
typedef struct {
CONFIG_BLOCK_HEADER Header; ///< Config Block Header
UINT8 NumOfDevIntConfig; ///< Number of entries in DevIntConfig table
UINT8 Rsvd0[3]; ///< Reserved bytes, align to multiple 4.
PCH_DEVICE_INTERRUPT_CONFIG DevIntConfig[PCH_MAX_DEVICE_INTERRUPT_CONFIG]; ///< Array which stores PCH devices interrupts settings
UINT8 GpioIrqRoute; ///< Interrupt routing for GPIO. Default is 14.
UINT8 SciIrqSelect; ///< Interrupt select for SCI. Default is 9.
UINT8 TcoIrqSelect; ///< Interrupt select for TCO. Default is 9.
UINT8 TcoIrqEnable; ///< Enable IRQ generation for TCO. 0: Disable; 1: Enable.
} PCH_INTERRUPT_CONFIG;
#pragma pack (pop)
#endif // _INTERRUPT_CONFIG_H_