]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/Protocol/SuperIoControl.h
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Include / Protocol / SuperIoControl.h
1 /** @file
2 The Super I/O Control Protocol is installed by the Super I/O driver. It provides
3 the low-level services for SIO devices that enable them to be used in the UEFI
4 driver model.
5
6 Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
7 SPDX-License-Identifier: BSD-2-Clause-Patent
8
9 @par Revision Reference:
10 This protocol is from PI Version 1.2.1.
11
12 **/
13
14 #ifndef __EFI_SUPER_IO_CONTROL_PROTOCOL_H__
15 #define __EFI_SUPER_IO_CONTROL_PROTOCOL_H__
16
17 #define EFI_SIO_CONTROL_PROTOCOL_GUID \
18 { \
19 0xb91978df, 0x9fc1, 0x427d, { 0xbb, 0x5, 0x4c, 0x82, 0x84, 0x55, 0xca, 0x27 } \
20 }
21
22 typedef struct _EFI_SIO_CONTROL_PROTOCOL EFI_SIO_CONTROL_PROTOCOL;
23 typedef struct _EFI_SIO_CONTROL_PROTOCOL *PEFI_SIO_CONTROL_PROTOCOL;
24
25 /**
26 Enable an ISA-style device.
27
28 This function enables a logical ISA device and, if necessary, configures it
29 to default settings, including memory, I/O, DMA and IRQ resources.
30
31 @param This A pointer to this instance of the EFI_SIO_CONTROL_PROTOCOL.
32
33 @retval EFI_SUCCESS The device is enabled successfully.
34 @retval EFI_OUT_OF_RESOURCES The device could not be enabled because there
35 were insufficient resources either for the device
36 itself or for the records needed to track the device.
37 @retval EFI_ALREADY_STARTED The device is already enabled.
38 @retval EFI_UNSUPPORTED The device cannot be enabled.
39 **/
40 typedef
41 EFI_STATUS
42 (EFIAPI *EFI_SIO_CONTROL_ENABLE)(
43 IN CONST EFI_SIO_CONTROL_PROTOCOL *This
44 );
45
46 /**
47 Disable a logical ISA device.
48
49 This function disables a logical ISA device so that it no longer consumes
50 system resources, such as memory, I/O, DMA and IRQ resources. Enough information
51 must be available so that subsequent Enable() calls would properly reconfigure
52 the device.
53
54 @param This A pointer to this instance of the EFI_SIO_CONTROL_PROTOCOL.
55
56 @retval EFI_SUCCESS The device is disabled successfully.
57 @retval EFI_OUT_OF_RESOURCES The device could not be disabled because there
58 were insufficient resources either for the device
59 itself or for the records needed to track the device.
60 @retval EFI_ALREADY_STARTED The device is already disabled.
61 @retval EFI_UNSUPPORTED The device cannot be disabled.
62 **/
63 typedef
64 EFI_STATUS
65 (EFIAPI *EFI_SIO_CONTROL_DISABLE)(
66 IN CONST EFI_SIO_CONTROL_PROTOCOL *This
67 );
68
69 struct _EFI_SIO_CONTROL_PROTOCOL {
70 ///
71 /// The version of this protocol.
72 ///
73 UINT32 Version;
74 ///
75 /// Enable a device.
76 ///
77 EFI_SIO_CONTROL_ENABLE EnableDevice;
78 ///
79 /// Disable a device.
80 ///
81 EFI_SIO_CONTROL_DISABLE DisableDevice;
82 };
83
84 extern EFI_GUID gEfiSioControlProtocolGuid;
85
86 #endif // __EFI_SUPER_IO_CONTROL_PROTOCOL_H__