• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /** @file
2   Protocol to describe devices that are not on a discoverable bus
3 
4   Copyright (c) 2016, Linaro, Ltd. All rights reserved.<BR>
5 
6   This program and the accompanying materials
7   are 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 __NON_DISCOVERABLE_DEVICE_H__
17 #define __NON_DISCOVERABLE_DEVICE_H__
18 
19 #include <IndustryStandard/Acpi.h>
20 
21 #define EDKII_NON_DISCOVERABLE_DEVICE_PROTOCOL_GUID \
22   { 0x0d51905b, 0xb77e, 0x452a, {0xa2, 0xc0, 0xec, 0xa0, 0xcc, 0x8d, 0x51, 0x4a } }
23 
24 //
25 // Protocol interface structure
26 //
27 typedef struct _NON_DISCOVERABLE_DEVICE NON_DISCOVERABLE_DEVICE;
28 
29 //
30 // Data Types
31 //
32 typedef enum {
33   NonDiscoverableDeviceDmaTypeCoherent,
34   NonDiscoverableDeviceDmaTypeNonCoherent,
35   NonDiscoverableDeviceDmaTypeMax,
36 } NON_DISCOVERABLE_DEVICE_DMA_TYPE;
37 
38 //
39 // Function Prototypes
40 //
41 
42 /**
43   Perform device specific initialization before the device is started
44 
45   @param  This          The non-discoverable device protocol pointer
46 
47   @retval EFI_SUCCESS   Initialization successful, the device may be used
48   @retval Other         Initialization failed, device should not be started
49 **/
50 typedef
51 EFI_STATUS
52 (EFIAPI *NON_DISCOVERABLE_DEVICE_INIT) (
53   IN  NON_DISCOVERABLE_DEVICE       *This
54   );
55 
56 struct _NON_DISCOVERABLE_DEVICE {
57   //
58   // The type of device
59   //
60   CONST EFI_GUID                      *Type;
61   //
62   // Whether this device is DMA coherent
63   //
64   NON_DISCOVERABLE_DEVICE_DMA_TYPE    DmaType;
65   //
66   // Initialization function for the device
67   //
68   NON_DISCOVERABLE_DEVICE_INIT        Initialize;
69   //
70   // The MMIO and I/O regions owned by the device
71   //
72   EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR   *Resources;
73 };
74 
75 extern EFI_GUID gEdkiiNonDiscoverableDeviceProtocolGuid;
76 
77 #endif
78