mirror of https://github.com/acidanthera/audk.git
93 lines
3.3 KiB
C
93 lines
3.3 KiB
C
|
/** @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, Intel Corporation. All rights reserved.<BR>
|
||
|
This program and the accompanying materials
|
||
|
are licensed and made available under the terms and conditions of the BSD License
|
||
|
which accompanies this distribution. The full text of the license may be found at
|
||
|
http://opensource.org/licenses/bsd-license.php
|
||
|
|
||
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||
|
|
||
|
@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__
|