summaryrefslogtreecommitdiff
path: root/Vlv2TbltDevicePkg/Include/Protocol/MmioDevice.h
blob: 3c0eb5201a22b88ea3c61fe311291e83f4a43a97 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*++

  Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
                                                                                   

  SPDX-License-Identifier: BSD-2-Clause-Patent

                                                                                   


**/

#ifndef __MMIO_DEVICE_H__
#define __MMIO_DEVICE_H__

//
// Protocol to define for the MMIO device
//
typedef struct {
  //
  // Address of a GUID
  //
  EFI_GUID *Guid;

  //
  // Context for the protocol
  //
  VOID *Context;
} EFI_MMIO_DEVICE_PROTOCOL_ITEM;


typedef struct _EFI_MMIO_DEVICE_PROTOCOL  EFI_MMIO_DEVICE_PROTOCOL;

//
//  The MMIO device protocol defines a memory mapped I/O device
//  for use by the system.
//
struct _EFI_MMIO_DEVICE_PROTOCOL {
  //
  // Pointer to an ACPI_EXTENDED_HID_DEVICE_PATH structure
  // containing HID/HidStr and CID/CidStr values.
  //
  // See the note below associated with the UnitIdentification
  // field.
  //
  CONST ACPI_EXTENDED_HID_DEVICE_PATH *AcpiPath;

  //
  // Allow the use of a shared template for the AcpiPath.
  //
  // If this value is non-zero UID value then the AcpiPath must
  // be a template which contains only the HID/HidStr and CID/CidStr
  // values.  The UID/UidStr values in the AcpiPath must be zero!
  //
  // If this value is zero then the AcpiPath is not shared and
  // must contain either a non-zero UID value or a UidStr value.
  //
  UINT32 UnitIdentification;

  //
  // Hardware revision - ACPI _HRV value
  //
  UINT32 HardwareRevision;

  //
  // Pointer to a data structure containing the controller
  // resources and configuration.  At a minimum this points
  // to an EFI_PHYSICAL_ADDRESS for the base address of the
  // MMIO device.
  //
  CONST VOID *DriverResources;

  //
  // Number of protocols in the array
  //
  UINTN ProtocolCount;

  //
  // List of protocols to define
  //
  CONST EFI_MMIO_DEVICE_PROTOCOL_ITEM *ProtocolArray;
};

extern EFI_GUID gEfiMmioDeviceProtocolGuid;

#endif  //  __MMIO_DEVICE_H__