4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI Driver Configuration Protocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef __EFI_DRIVER_CONFIGURATION_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define __EFI_DRIVER_CONFIGURATION_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Protocol/DriverConfiguration2.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Global ID for the Driver Configuration Protocol defined in EFI 1.1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_DRIVER_CONFIGURATION_PROTOCOL_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0x107a772b, 0xd5e1, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_DRIVER_CONFIGURATION_PROTOCOL EFI_DRIVER_CONFIGURATION_PROTOCOL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Allows the user to set controller specific options for a controller that a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync driver is currently managing.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This A pointer to the EFI_DRIVER_CONFIGURATION_PROTOCOL instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ControllerHandle The handle of the controller to set options on.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ChildHandle The handle of the child controller to set options on. This
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is an optional parameter that may be NULL. It will be NULL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for device drivers, and for bus drivers that wish to set
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync options for the bus controller. It will not be NULL for a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync bus driver that wishes to set options for one of its child
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync controllers.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Language A pointer to a three character ISO 639-2 language identifier.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This is the language of the user interface that should be
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync presented to the user, and it must match one of the languages
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync specified in SupportedLanguages. The number of languages
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync supported by a driver is up to the driver writer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ActionRequired A pointer to the action that the calling agent is required
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync to perform when this function returns. See "Related
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Definitions" for a list of the actions that the calling
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync agent is required to perform prior to accessing
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ControllerHandle again.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The driver specified by This successfully set the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync configuration options for the controller specified
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync by ControllerHandle..
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid EFI_HANDLE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER ActionRequired is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_UNSUPPORTED The driver specified by This does not support setting
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync configuration options for the controller specified by
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ControllerHandle and ChildHandle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_UNSUPPORTED The driver specified by This does not support the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync language specified by Language.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR A device error occurred while attempt to set the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync configuration options for the controller specified
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync by ControllerHandle and ChildHandle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_RESOURCES There are not enough resources available to set the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync configuration options for the controller specified
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync by ControllerHandle and ChildHandle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_DRIVER_CONFIGURATION_SET_OPTIONS)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE ControllerHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE ChildHandle OPTIONAL,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR8 *Language,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tests to see if a controller's current configuration options are valid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This A pointer to the EFI_DRIVER_CONFIGURATION_PROTOCOL instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ControllerHandle The handle of the controller to test if it's current
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync configuration options are valid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ChildHandle The handle of the child controller to test if it's current
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync configuration options are valid. This is an optional
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync parameter that may be NULL. It will be NULL for device
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync drivers. It will also be NULL for bus drivers that wish
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync to test the configuration options for the bus controller.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync It will not be NULL for a bus driver that wishes to test
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync configuration options for one of its child controllers.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The controller specified by ControllerHandle and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ChildHandle that is being managed by the driver
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync specified by This has a valid set of configuration
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync options.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid EFI_HANDLE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_UNSUPPORTED The driver specified by This is not currently
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync managing the controller specified by ControllerHandle
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync and ChildHandle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR The controller specified by ControllerHandle and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ChildHandle that is being managed by the driver
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync specified by This has an invalid set of configuration
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync options.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_DRIVER_CONFIGURATION_OPTIONS_VALID)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE ControllerHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE ChildHandle OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Forces a driver to set the default configuration options for a controller.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This A pointer to the EFI_DRIVER_CONFIGURATION_PROTOCOL instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ControllerHandle The handle of the controller to force default configuration options on.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ChildHandle The handle of the child controller to force default configuration options on This is an optional parameter that may be NULL. It will be NULL for device drivers. It will also be NULL for bus drivers that wish to force default configuration options for the bus controller. It will not be NULL for a bus driver that wishes to force default configuration options for one of its child controllers.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DefaultType The type of default configuration options to force on the controller specified by ControllerHandle and ChildHandle. See Table 9-1 for legal values. A DefaultType of 0x00000000 must be supported by this protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ActionRequired A pointer to the action that the calling agent is required to perform when this function returns. See "Related Definitions" in Section 9.1 for a list of the actions that the calling agent is required to perform prior to accessing ControllerHandle again.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The driver specified by This successfully forced the default configuration options on the controller specified by ControllerHandle and ChildHandle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid EFI_HANDLE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER ActionRequired is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_UNSUPPORTED The driver specified by This does not support forcing the default configuration options on the controller specified by ControllerHandle and ChildHandle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_UNSUPPORTED The driver specified by This does not support the configuration type specified by DefaultType.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR A device error occurred while attempt to force the default configuration options on the controller specified by ControllerHandle and ChildHandle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_RESOURCES There are not enough resources available to force the default configuration options on the controller specified by ControllerHandle and ChildHandle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_DRIVER_CONFIGURATION_FORCE_DEFAULTS)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE ControllerHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE ChildHandle OPTIONAL,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 DefaultType,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Used to set configuration options for a controller that an EFI Driver is managing.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct _EFI_DRIVER_CONFIGURATION_PROTOCOL {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DRIVER_CONFIGURATION_SET_OPTIONS SetOptions;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DRIVER_CONFIGURATION_OPTIONS_VALID OptionsValid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DRIVER_CONFIGURATION_FORCE_DEFAULTS ForceDefaults;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// A Null-terminated ASCII string that contains one or more
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// ISO 639-2 language codes. This is the list of language
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// codes that this protocol supports.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR8 *SupportedLanguages;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiDriverConfigurationProtocolGuid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif