blob: 1f2f62345ac5cbaf56dcb2e4663c5ede914ed500 [file] [log] [blame]
Subrata Banik20fe24b2021-12-09 02:46:38 +05301/** @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
22typedef struct _EFI_SIO_CONTROL_PROTOCOL EFI_SIO_CONTROL_PROTOCOL;
23typedef 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**/
40typedef
41EFI_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**/
63typedef
64EFI_STATUS
65(EFIAPI *EFI_SIO_CONTROL_DISABLE)(
66 IN CONST EFI_SIO_CONTROL_PROTOCOL *This
67 );
68
69struct _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
84extern EFI_GUID gEfiSioControlProtocolGuid;
85
86#endif // __EFI_SUPER_IO_CONTROL_PROTOCOL_H__