4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UEFI Component Name(2) protocol implementation for GraphicsConsole driver.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncare licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncwhich accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynchttp://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include "GraphicsConsole.h"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EFI Component Name Protocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncGLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gGraphicsConsoleComponentName = {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GraphicsConsoleComponentNameGetDriverName,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GraphicsConsoleComponentNameGetControllerName,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "eng"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EFI Component Name 2 Protocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncGLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gGraphicsConsoleComponentName2 = {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) GraphicsConsoleComponentNameGetDriverName,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) GraphicsConsoleComponentNameGetControllerName,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "en"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncGLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mGraphicsConsoleDriverNameTable[] = {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "eng;en",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (CHAR16 *)L"UGA Console Driver"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync },
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync NULL,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync NULL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Retrieves a Unicode string that is the user readable name of the driver.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function retrieves the user readable name of a driver in the form of a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Unicode string. If the driver specified by This has a user readable name in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the language specified by Language, then a pointer to the driver name is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync by This does not support the language specified by Language,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync then EFI_UNSUPPORTED is returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_COMPONENT_NAME_PROTOCOL instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Language[in] A pointer to a Null-terminated ASCII string
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync array indicating the language. This is the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync language of the driver name that the caller is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync requesting, and it must match one of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync languages specified in SupportedLanguages. The
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync number of languages supported by a driver is up
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync to the driver writer. Language is specified
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync in RFC 4646 or ISO 639-2 language code format.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DriverName[out] A pointer to the Unicode string to return.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This Unicode string is the name of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync driver specified by This in the language
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync specified by Language.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The Unicode string for the Driver specified by
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This and the language specified by Language was
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync returned in DriverName.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER Language is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER DriverName is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_UNSUPPORTED The driver specified by This does not support
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the language specified by Language.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncGraphicsConsoleComponentNameGetDriverName (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_COMPONENT_NAME_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR8 *Language,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT CHAR16 **DriverName
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return LookupUnicodeString2 (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Language,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This->SupportedLanguages,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mGraphicsConsoleDriverNameTable,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DriverName,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (BOOLEAN)(This == &gGraphicsConsoleComponentName)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Retrieves a Unicode string that is the user readable name of the controller
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync that is being managed by a driver.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function retrieves the user readable name of the controller specified by
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ControllerHandle and ChildHandle in the form of a Unicode string. If the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync driver specified by This has a user readable name in the language specified by
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Language, then a pointer to the controller name is returned in ControllerName,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync and EFI_SUCCESS is returned. If the driver specified by This is not currently
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync managing the controller specified by ControllerHandle and ChildHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync then EFI_UNSUPPORTED is returned. If the driver specified by This does not
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync support the language specified by Language, then EFI_UNSUPPORTED is returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_COMPONENT_NAME_PROTOCOL instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ControllerHandle[in] The handle of a controller that the driver
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync specified by This is managing. This handle
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync specifies the controller whose name is to be
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ChildHandle[in] The handle of the child controller to retrieve
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the name of. This is an optional parameter that
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync may be NULL. It will be NULL for device
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync drivers. It will also be NULL for a bus drivers
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync that wish to retrieve the name of the bus
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync controller. It will not be NULL for a bus
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync driver that wishes to retrieve the name of a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync child controller.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Language[in] A pointer to a Null-terminated ASCII string
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync array indicating the language. This is the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync language of the driver name that the caller is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync requesting, and it must match one of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync languages specified in SupportedLanguages. The
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync number of languages supported by a driver is up
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync to the driver writer. Language is specified in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync RFC 4646 or ISO 639-2 language code format.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ControllerName[out] A pointer to the Unicode string to return.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This Unicode string is the name of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync controller specified by ControllerHandle and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ChildHandle in the language specified by
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Language from the point of view of the driver
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync specified by This.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The Unicode string for the user readable name in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the language specified by Language for the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync driver specified by This was returned in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DriverName.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_HANDLE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER Language is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER ControllerName is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_UNSUPPORTED The driver specified by This is not currently
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync managing the controller specified by
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ControllerHandle and ChildHandle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_UNSUPPORTED The driver specified by This does not support
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the language specified by Language.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncGraphicsConsoleComponentNameGetControllerName (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_COMPONENT_NAME_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE ControllerHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE ChildHandle OPTIONAL,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR8 *Language,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT CHAR16 **ControllerName
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return EFI_UNSUPPORTED;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}