mirror of https://github.com/acidanthera/audk.git
124 lines
3.2 KiB
C
124 lines
3.2 KiB
C
/** @file
|
|
Legacy Region Support
|
|
|
|
Copyright (c) 2006 - 2011, 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.
|
|
|
|
**/
|
|
|
|
#ifndef _LEGACY_INTERRUPT_H_
|
|
#define _LEGACY_INTERRUPT_H_
|
|
|
|
#include <PiDxe.h>
|
|
|
|
#include <Protocol/LegacyInterrupt.h>
|
|
|
|
#include <Library/PcdLib.h>
|
|
#include <Library/PciLib.h>
|
|
#include <Library/DebugLib.h>
|
|
#include <Library/UefiBootServicesTableLib.h>
|
|
#include <OvmfPlatforms.h>
|
|
|
|
|
|
#define LEGACY_INT_BUS 0
|
|
#define LEGACY_INT_DEV_PIIX4 0x01
|
|
#define LEGACY_INT_DEV_Q35 0x1f
|
|
#define LEGACY_INT_FUNC 0
|
|
|
|
#define PIRQN 0x00 // PIRQ Null
|
|
#define PIRQA 0x60
|
|
#define PIRQB 0x61
|
|
#define PIRQC 0x62
|
|
#define PIRQD 0x63
|
|
#define PIRQE 0x68
|
|
#define PIRQF 0x69
|
|
#define PIRQG 0x6A
|
|
#define PIRQH 0x6B
|
|
|
|
#define MAX_PIRQ_NUMBER 8
|
|
|
|
/**
|
|
Return the number of PIRQs supported by this chipset.
|
|
|
|
@param[in] This Pointer to LegacyInterrupt Protocol
|
|
@param[out] NumberPirqs The pointer to return the max IRQ number supported
|
|
|
|
@retval EFI_SUCCESS Max PIRQs successfully returned
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
GetNumberPirqs (
|
|
IN EFI_LEGACY_INTERRUPT_PROTOCOL *This,
|
|
OUT UINT8 *NumberPirqs
|
|
);
|
|
|
|
/**
|
|
Return PCI location of this device.
|
|
$PIR table requires this info.
|
|
|
|
@param[in] This - Protocol instance pointer.
|
|
@param[out] Bus - PCI Bus
|
|
@param[out] Device - PCI Device
|
|
@param[out] Function - PCI Function
|
|
|
|
@retval EFI_SUCCESS Bus/Device/Function returned
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
GetLocation (
|
|
IN EFI_LEGACY_INTERRUPT_PROTOCOL *This,
|
|
OUT UINT8 *Bus,
|
|
OUT UINT8 *Device,
|
|
OUT UINT8 *Function
|
|
);
|
|
|
|
/**
|
|
Read the given PIRQ register
|
|
|
|
@param[in] This Protocol instance pointer
|
|
@param[in] PirqNumber The Pirq register 0 = A, 1 = B etc
|
|
@param[out] PirqData Value read
|
|
|
|
@retval EFI_SUCCESS Decoding change affected.
|
|
@retval EFI_INVALID_PARAMETER Invalid PIRQ number
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
ReadPirq (
|
|
IN EFI_LEGACY_INTERRUPT_PROTOCOL *This,
|
|
IN UINT8 PirqNumber,
|
|
OUT UINT8 *PirqData
|
|
);
|
|
|
|
/**
|
|
Write the given PIRQ register
|
|
|
|
@param[in] This Protocol instance pointer
|
|
@param[in] PirqNumber The Pirq register 0 = A, 1 = B etc
|
|
@param[out] PirqData Value to write
|
|
|
|
@retval EFI_SUCCESS Decoding change affected.
|
|
@retval EFI_INVALID_PARAMETER Invalid PIRQ number
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
WritePirq (
|
|
IN EFI_LEGACY_INTERRUPT_PROTOCOL *This,
|
|
IN UINT8 PirqNumber,
|
|
IN UINT8 PirqData
|
|
);
|
|
|
|
#endif
|
|
|