summaryrefslogtreecommitdiffstats
path: root/MdePkg/Include/Protocol/SuperIoControl.h
blob: c49bb891e54752ca378b9857ba4b7af782df7973 (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
85
86
/** @file
  The Super I/O Control Protocol is installed by the Super I/O driver. It provides
  the low-level services for SIO devices that enable them to be used in the UEFI
  driver model.

  Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent

  @par Revision Reference:
  This protocol is from PI Version 1.2.1.

**/

#ifndef __EFI_SUPER_IO_CONTROL_PROTOCOL_H__
#define __EFI_SUPER_IO_CONTROL_PROTOCOL_H__

#define EFI_SIO_CONTROL_PROTOCOL_GUID \
  { \
    0xb91978df, 0x9fc1, 0x427d, { 0xbb, 0x5, 0x4c, 0x82, 0x84, 0x55, 0xca, 0x27 } \
  }

typedef struct _EFI_SIO_CONTROL_PROTOCOL EFI_SIO_CONTROL_PROTOCOL;
typedef struct _EFI_SIO_CONTROL_PROTOCOL *PEFI_SIO_CONTROL_PROTOCOL;

/**
  Enable an ISA-style device.

  This function enables a logical ISA device and, if necessary, configures it
  to default settings, including memory, I/O, DMA and IRQ resources.

  @param This A pointer to this instance of the EFI_SIO_CONTROL_PROTOCOL.

  @retval EFI_SUCCESS          The device is enabled successfully.
  @retval EFI_OUT_OF_RESOURCES The device could not be enabled because there
                               were insufficient resources either for the device
                               itself or for the records needed to track the device.
  @retval EFI_ALREADY_STARTED  The device is already enabled.
  @retval EFI_UNSUPPORTED      The device cannot be enabled.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_SIO_CONTROL_ENABLE)(
  IN CONST EFI_SIO_CONTROL_PROTOCOL *This
  );

/**
  Disable a logical ISA device.

  This function disables a logical ISA device so that it no longer consumes
  system resources, such as memory, I/O, DMA and IRQ resources. Enough information
  must be available so that subsequent Enable() calls would properly reconfigure
  the device.

  @param This A pointer to this instance of the EFI_SIO_CONTROL_PROTOCOL.

  @retval EFI_SUCCESS          The device is disabled successfully.
  @retval EFI_OUT_OF_RESOURCES The device could not be disabled because there
                               were insufficient resources either for the device
                               itself or for the records needed to track the device.
  @retval EFI_ALREADY_STARTED  The device is already disabled.
  @retval EFI_UNSUPPORTED      The device cannot be disabled.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_SIO_CONTROL_DISABLE)(
  IN CONST EFI_SIO_CONTROL_PROTOCOL *This
  );

struct _EFI_SIO_CONTROL_PROTOCOL {
  ///
  /// The version of this protocol.
  ///
  UINT32                  Version;
  ///
  /// Enable a device.
  ///
  EFI_SIO_CONTROL_ENABLE  EnableDevice;
  ///
  /// Disable a device.
  ///
  EFI_SIO_CONTROL_DISABLE DisableDevice;
};

extern EFI_GUID gEfiSioControlProtocolGuid;

#endif // __EFI_SUPER_IO_CONTROL_PROTOCOL_H__