1 /*++ 2 3 Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR> 4 5 6 This program and the accompanying materials are licensed and made available under 7 8 the terms and conditions of the BSD License that accompanies this distribution. 9 10 The full text of the license may be found at 11 12 http://opensource.org/licenses/bsd-license.php. 13 14 15 16 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 17 18 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 19 20 21 22 23 **/ 24 25 #ifndef __MMIO_DEVICE_H__ 26 #define __MMIO_DEVICE_H__ 27 28 // 29 // Protocol to define for the MMIO device 30 // 31 typedef struct { 32 // 33 // Address of a GUID 34 // 35 EFI_GUID *Guid; 36 37 // 38 // Context for the protocol 39 // 40 VOID *Context; 41 } EFI_MMIO_DEVICE_PROTOCOL_ITEM; 42 43 44 typedef struct _EFI_MMIO_DEVICE_PROTOCOL EFI_MMIO_DEVICE_PROTOCOL; 45 46 // 47 // The MMIO device protocol defines a memory mapped I/O device 48 // for use by the system. 49 // 50 struct _EFI_MMIO_DEVICE_PROTOCOL { 51 // 52 // Pointer to an ACPI_EXTENDED_HID_DEVICE_PATH structure 53 // containing HID/HidStr and CID/CidStr values. 54 // 55 // See the note below associated with the UnitIdentification 56 // field. 57 // 58 CONST ACPI_EXTENDED_HID_DEVICE_PATH *AcpiPath; 59 60 // 61 // Allow the use of a shared template for the AcpiPath. 62 // 63 // If this value is non-zero UID value then the AcpiPath must 64 // be a template which contains only the HID/HidStr and CID/CidStr 65 // values. The UID/UidStr values in the AcpiPath must be zero! 66 // 67 // If this value is zero then the AcpiPath is not shared and 68 // must contain either a non-zero UID value or a UidStr value. 69 // 70 UINT32 UnitIdentification; 71 72 // 73 // Hardware revision - ACPI _HRV value 74 // 75 UINT32 HardwareRevision; 76 77 // 78 // Pointer to a data structure containing the controller 79 // resources and configuration. At a minimum this points 80 // to an EFI_PHYSICAL_ADDRESS for the base address of the 81 // MMIO device. 82 // 83 CONST VOID *DriverResources; 84 85 // 86 // Number of protocols in the array 87 // 88 UINTN ProtocolCount; 89 90 // 91 // List of protocols to define 92 // 93 CONST EFI_MMIO_DEVICE_PROTOCOL_ITEM *ProtocolArray; 94 }; 95 96 extern EFI_GUID gEfiMmioDeviceProtocolGuid; 97 98 #endif // __MMIO_DEVICE_H__ 99