]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Include/Protocol/SuperIoControl.h
MdePkg: Add SIO related protocol/PPI definitions.
[mirror_edk2.git] / Include / Protocol / SuperIoControl.h
diff --git a/Include/Protocol/SuperIoControl.h b/Include/Protocol/SuperIoControl.h
new file mode 100644 (file)
index 0000000..e68fce8
--- /dev/null
@@ -0,0 +1,92 @@
+/** @file\r
+  The Super I/O Control Protocol is installed by the Super I/O driver. It provides\r
+  the low-level services for SIO devices that enable them to be used in the UEFI\r
+  driver model.\r
+\r
+  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
+  This program and the accompanying materials                          \r
+  are licensed and made available under the terms and conditions of the BSD License         \r
+  which accompanies this distribution.  The full text of the license may be found at        \r
+  http://opensource.org/licenses/bsd-license.php                                            \r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+\r
+  @par Revision Reference:\r
+  This protocol is from PI Version 1.2.1.\r
+\r
+**/\r
+\r
+#ifndef __EFI_SUPER_IO_CONTROL_PROTOCOL_H__\r
+#define __EFI_SUPER_IO_CONTROL_PROTOCOL_H__\r
+\r
+#define EFI_SIO_CONTROL_PROTOCOL_GUID \\r
+  { \\r
+    0xb91978df, 0x9fc1, 0x427d, { 0xbb, 0x5, 0x4c, 0x82, 0x84, 0x55, 0xca, 0x27 } \\r
+  }\r
+\r
+typedef struct _EFI_SIO_CONTROL_PROTOCOL EFI_SIO_CONTROL_PROTOCOL;\r
+typedef struct _EFI_SIO_CONTROL_PROTOCOL *PEFI_SIO_CONTROL_PROTOCOL;\r
+\r
+/**\r
+  Enable an ISA-style device.\r
+\r
+  This function enables a logical ISA device and, if necessary, configures it\r
+  to default settings, including memory, I/O, DMA and IRQ resources.\r
+\r
+  @param This A pointer to this instance of the EFI_SIO_CONTROL_PROTOCOL.\r
+\r
+  @retval EFI_SUCCESS          The device is enabled successfully.\r
+  @retval EFI_OUT_OF_RESOURCES The device could not be enabled because there\r
+                               were insufficient resources either for the device \r
+                               itself or for the records needed to track the device.\r
+  @retval EFI_ALREADY_STARTED  The device is already enabled.\r
+  @retval EFI_UNSUPPORTED      The device cannot be enabled.\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SIO_CONTROL_ENABLE)(\r
+  IN CONST EFI_SIO_CONTROL_PROTOCOL *This\r
+  );\r
+\r
+/**\r
+  Disable a logical ISA device.\r
+\r
+  This function disables a logical ISA device so that it no longer consumes\r
+  system resources, such as memory, I/O, DMA and IRQ resources. Enough information\r
+  must be available so that subsequent Enable() calls would properly reconfigure\r
+  the device.\r
+\r
+  @param This A pointer to this instance of the EFI_SIO_CONTROL_PROTOCOL.\r
+\r
+  @retval EFI_SUCCESS          The device is disabled successfully.\r
+  @retval EFI_OUT_OF_RESOURCES The device could not be disabled because there\r
+                               were insufficient resources either for the device \r
+                               itself or for the records needed to track the device.\r
+  @retval EFI_ALREADY_STARTED  The device is already disabled.\r
+  @retval EFI_UNSUPPORTED      The device cannot be disabled.\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SIO_CONTROL_DISABLE)(\r
+  IN CONST EFI_SIO_CONTROL_PROTOCOL *This\r
+  );\r
+\r
+struct _EFI_SIO_CONTROL_PROTOCOL {\r
+  ///\r
+  /// The version of this protocol.\r
+  ///\r
+  UINT32                  Version;\r
+  ///\r
+  /// Enable a device.\r
+  ///\r
+  EFI_SIO_CONTROL_ENABLE  EnableDevice;\r
+  ///\r
+  /// Disable a device.\r
+  ///\r
+  EFI_SIO_CONTROL_DISABLE DisableDevice;\r
+};\r
+\r
+extern EFI_GUID gEfiSioControlProtocolGuid;\r
+\r
+#endif // __EFI_SUPER_IO_CONTROL_PROTOCOL_H__\r