1 /** @file 2 Legacy Region Support 3 4 Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR> 5 6 This program and the accompanying materials are 7 licensed and made available under the terms and conditions of the BSD License 8 which accompanies this distribution. The full text of the license may be found at 9 http://opensource.org/licenses/bsd-license.php 10 11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 13 14 **/ 15 16 #ifndef _LEGACY_INTERRUPT_H_ 17 #define _LEGACY_INTERRUPT_H_ 18 19 #include <PiDxe.h> 20 21 #include <Protocol/LegacyInterrupt.h> 22 23 #include <Library/PcdLib.h> 24 #include <Library/PciLib.h> 25 #include <Library/DebugLib.h> 26 #include <Library/UefiBootServicesTableLib.h> 27 #include <OvmfPlatforms.h> 28 29 30 #define LEGACY_INT_BUS 0 31 #define LEGACY_INT_DEV_PIIX4 0x01 32 #define LEGACY_INT_DEV_Q35 0x1f 33 #define LEGACY_INT_FUNC 0 34 35 #define PIRQN 0x00 // PIRQ Null 36 #define PIRQA 0x60 37 #define PIRQB 0x61 38 #define PIRQC 0x62 39 #define PIRQD 0x63 40 #define PIRQE 0x68 41 #define PIRQF 0x69 42 #define PIRQG 0x6A 43 #define PIRQH 0x6B 44 45 #define MAX_PIRQ_NUMBER 8 46 47 /** 48 Return the number of PIRQs supported by this chipset. 49 50 @param[in] This Pointer to LegacyInterrupt Protocol 51 @param[out] NumberPirqs The pointer to return the max IRQ number supported 52 53 @retval EFI_SUCCESS Max PIRQs successfully returned 54 55 **/ 56 EFI_STATUS 57 EFIAPI 58 GetNumberPirqs ( 59 IN EFI_LEGACY_INTERRUPT_PROTOCOL *This, 60 OUT UINT8 *NumberPirqs 61 ); 62 63 /** 64 Return PCI location of this device. 65 $PIR table requires this info. 66 67 @param[in] This - Protocol instance pointer. 68 @param[out] Bus - PCI Bus 69 @param[out] Device - PCI Device 70 @param[out] Function - PCI Function 71 72 @retval EFI_SUCCESS Bus/Device/Function returned 73 74 **/ 75 EFI_STATUS 76 EFIAPI 77 GetLocation ( 78 IN EFI_LEGACY_INTERRUPT_PROTOCOL *This, 79 OUT UINT8 *Bus, 80 OUT UINT8 *Device, 81 OUT UINT8 *Function 82 ); 83 84 /** 85 Read the given PIRQ register 86 87 @param[in] This Protocol instance pointer 88 @param[in] PirqNumber The Pirq register 0 = A, 1 = B etc 89 @param[out] PirqData Value read 90 91 @retval EFI_SUCCESS Decoding change affected. 92 @retval EFI_INVALID_PARAMETER Invalid PIRQ number 93 94 **/ 95 EFI_STATUS 96 EFIAPI 97 ReadPirq ( 98 IN EFI_LEGACY_INTERRUPT_PROTOCOL *This, 99 IN UINT8 PirqNumber, 100 OUT UINT8 *PirqData 101 ); 102 103 /** 104 Write the given PIRQ register 105 106 @param[in] This Protocol instance pointer 107 @param[in] PirqNumber The Pirq register 0 = A, 1 = B etc 108 @param[out] PirqData Value to write 109 110 @retval EFI_SUCCESS Decoding change affected. 111 @retval EFI_INVALID_PARAMETER Invalid PIRQ number 112 113 **/ 114 EFI_STATUS 115 EFIAPI 116 WritePirq ( 117 IN EFI_LEGACY_INTERRUPT_PROTOCOL *This, 118 IN UINT8 PirqNumber, 119 IN UINT8 PirqData 120 ); 121 122 #endif 123 124