1fb0b259e4e440577dcd6ba6722c252d90605b3e9vanjeff/** @file
2fb0b259e4e440577dcd6ba6722c252d90605b3e9vanjeff  UEFI Component Name(2) protocol implementation for GraphicsConsole driver.
395276127e373f2e2fb2a208ff77267422a197d9fxgu
4be759f774ff737364ee7571e9f9714ec35d67b34li-elvinCopyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
5e5eed7d3641d71d7ea539e5379ea9c6a5cd97004hhtianThis program and the accompanying materials
6fb0b259e4e440577dcd6ba6722c252d90605b3e9vanjeffare licensed and made available under the terms and conditions of the BSD License
7fb0b259e4e440577dcd6ba6722c252d90605b3e9vanjeffwhich accompanies this distribution.  The full text of the license may be found at
8fb0b259e4e440577dcd6ba6722c252d90605b3e9vanjeffhttp://opensource.org/licenses/bsd-license.php
995276127e373f2e2fb2a208ff77267422a197d9fxgu
10fb0b259e4e440577dcd6ba6722c252d90605b3e9vanjeffTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11fb0b259e4e440577dcd6ba6722c252d90605b3e9vanjeffWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
1295276127e373f2e2fb2a208ff77267422a197d9fxgu
13fb0b259e4e440577dcd6ba6722c252d90605b3e9vanjeff**/
1495276127e373f2e2fb2a208ff77267422a197d9fxgu
1595276127e373f2e2fb2a208ff77267422a197d9fxgu#include "GraphicsConsole.h"
1695276127e373f2e2fb2a208ff77267422a197d9fxgu
1795276127e373f2e2fb2a208ff77267422a197d9fxgu//
1895276127e373f2e2fb2a208ff77267422a197d9fxgu// EFI Component Name Protocol
1995276127e373f2e2fb2a208ff77267422a197d9fxgu//
201307dcd745881377355a2e7fba53ff9184e92657qhuangGLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL  gGraphicsConsoleComponentName = {
2195276127e373f2e2fb2a208ff77267422a197d9fxgu  GraphicsConsoleComponentNameGetDriverName,
2295276127e373f2e2fb2a208ff77267422a197d9fxgu  GraphicsConsoleComponentNameGetControllerName,
2395276127e373f2e2fb2a208ff77267422a197d9fxgu  "eng"
241307dcd745881377355a2e7fba53ff9184e92657qhuang};
255bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
265bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang//
275bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang// EFI Component Name 2 Protocol
285bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang//
291307dcd745881377355a2e7fba53ff9184e92657qhuangGLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gGraphicsConsoleComponentName2 = {
305bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) GraphicsConsoleComponentNameGetDriverName,
315bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) GraphicsConsoleComponentNameGetControllerName,
325bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  "en"
331307dcd745881377355a2e7fba53ff9184e92657qhuang};
345bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
3595276127e373f2e2fb2a208ff77267422a197d9fxgu
36d1aeb0bdc36f6bece71a2b0fd3684857d11a867bqhuangGLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mGraphicsConsoleDriverNameTable[] = {
3795276127e373f2e2fb2a208ff77267422a197d9fxgu  {
385bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang    "eng;en",
39be759f774ff737364ee7571e9f9714ec35d67b34li-elvin    (CHAR16 *)L"Graphics Console Driver"
4095276127e373f2e2fb2a208ff77267422a197d9fxgu  },
4195276127e373f2e2fb2a208ff77267422a197d9fxgu  {
4295276127e373f2e2fb2a208ff77267422a197d9fxgu    NULL,
4395276127e373f2e2fb2a208ff77267422a197d9fxgu    NULL
4495276127e373f2e2fb2a208ff77267422a197d9fxgu  }
4595276127e373f2e2fb2a208ff77267422a197d9fxgu};
4695276127e373f2e2fb2a208ff77267422a197d9fxgu
475bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang/**
485bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  Retrieves a Unicode string that is the user readable name of the driver.
495bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
505bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  This function retrieves the user readable name of a driver in the form of a
515bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  Unicode string. If the driver specified by This has a user readable name in
525bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  the language specified by Language, then a pointer to the driver name is
535bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
545bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  by This does not support the language specified by Language,
555bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  then EFI_UNSUPPORTED is returned.
565bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
575bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
585bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                EFI_COMPONENT_NAME_PROTOCOL instance.
595bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
605bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @param  Language[in]          A pointer to a Null-terminated ASCII string
615bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                array indicating the language. This is the
625bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                language of the driver name that the caller is
635bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                requesting, and it must match one of the
645bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                languages specified in SupportedLanguages. The
655bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                number of languages supported by a driver is up
665bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                to the driver writer. Language is specified
670254efc01e461445240512ae1a1c2fc48ed2f70egikidy                                in RFC 4646 or ISO 639-2 language code format.
685bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
695bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @param  DriverName[out]       A pointer to the Unicode string to return.
705bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                This Unicode string is the name of the
715bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                driver specified by This in the language
725bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                specified by Language.
735bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
745bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @retval EFI_SUCCESS           The Unicode string for the Driver specified by
755bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                This and the language specified by Language was
765bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                returned in DriverName.
775bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
785bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @retval EFI_INVALID_PARAMETER Language is NULL.
795bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
805bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @retval EFI_INVALID_PARAMETER DriverName is NULL.
815bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
825bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @retval EFI_UNSUPPORTED       The driver specified by This does not support
835bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                the language specified by Language.
845bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
855bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang**/
8695276127e373f2e2fb2a208ff77267422a197d9fxguEFI_STATUS
8795276127e373f2e2fb2a208ff77267422a197d9fxguEFIAPI
8895276127e373f2e2fb2a208ff77267422a197d9fxguGraphicsConsoleComponentNameGetDriverName (
8995276127e373f2e2fb2a208ff77267422a197d9fxgu  IN  EFI_COMPONENT_NAME_PROTOCOL  *This,
9095276127e373f2e2fb2a208ff77267422a197d9fxgu  IN  CHAR8                        *Language,
9195276127e373f2e2fb2a208ff77267422a197d9fxgu  OUT CHAR16                       **DriverName
9295276127e373f2e2fb2a208ff77267422a197d9fxgu  )
9395276127e373f2e2fb2a208ff77267422a197d9fxgu{
945bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  return LookupUnicodeString2 (
955bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang           Language,
965bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang           This->SupportedLanguages,
975bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang           mGraphicsConsoleDriverNameTable,
985bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang           DriverName,
995bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang           (BOOLEAN)(This == &gGraphicsConsoleComponentName)
1005bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang           );
10195276127e373f2e2fb2a208ff77267422a197d9fxgu}
10295276127e373f2e2fb2a208ff77267422a197d9fxgu
1035bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang/**
1045bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  Retrieves a Unicode string that is the user readable name of the controller
1055bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  that is being managed by a driver.
1065bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
1075bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  This function retrieves the user readable name of the controller specified by
1085bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  ControllerHandle and ChildHandle in the form of a Unicode string. If the
1095bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  driver specified by This has a user readable name in the language specified by
1105bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  Language, then a pointer to the controller name is returned in ControllerName,
1115bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  and EFI_SUCCESS is returned.  If the driver specified by This is not currently
1125bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  managing the controller specified by ControllerHandle and ChildHandle,
1135bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  then EFI_UNSUPPORTED is returned.  If the driver specified by This does not
1145bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  support the language specified by Language, then EFI_UNSUPPORTED is returned.
1155bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
1165bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
1175bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                EFI_COMPONENT_NAME_PROTOCOL instance.
1185bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
1195bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @param  ControllerHandle[in]  The handle of a controller that the driver
1205bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                specified by This is managing.  This handle
1215bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                specifies the controller whose name is to be
1225bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                returned.
1235bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
1245bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @param  ChildHandle[in]       The handle of the child controller to retrieve
1255bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                the name of.  This is an optional parameter that
1265bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                may be NULL.  It will be NULL for device
1275bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                drivers.  It will also be NULL for a bus drivers
1285bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                that wish to retrieve the name of the bus
1295bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                controller.  It will not be NULL for a bus
1305bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                driver that wishes to retrieve the name of a
1315bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                child controller.
1325bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
1335bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @param  Language[in]          A pointer to a Null-terminated ASCII string
1345bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                array indicating the language.  This is the
1355bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                language of the driver name that the caller is
1365bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                requesting, and it must match one of the
1375bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                languages specified in SupportedLanguages. The
1385bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                number of languages supported by a driver is up
1395bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                to the driver writer. Language is specified in
1400254efc01e461445240512ae1a1c2fc48ed2f70egikidy                                RFC 4646 or ISO 639-2 language code format.
1415bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
1425bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @param  ControllerName[out]   A pointer to the Unicode string to return.
1435bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                This Unicode string is the name of the
1445bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                controller specified by ControllerHandle and
1455bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                ChildHandle in the language specified by
1465bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                Language from the point of view of the driver
1475bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                specified by This.
1485bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
1495bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @retval EFI_SUCCESS           The Unicode string for the user readable name in
1505bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                the language specified by Language for the
1515bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                driver specified by This was returned in
1525bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                DriverName.
1535bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
154284ee2e829ab2453293b7dc4539727ad6c047163niruiyu  @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.
1555bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
1565bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
1575bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                EFI_HANDLE.
1585bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
1595bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @retval EFI_INVALID_PARAMETER Language is NULL.
1605bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
1615bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @retval EFI_INVALID_PARAMETER ControllerName is NULL.
1625bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
1635bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @retval EFI_UNSUPPORTED       The driver specified by This is not currently
1645bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                managing the controller specified by
1655bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                ControllerHandle and ChildHandle.
1665bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
1675bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang  @retval EFI_UNSUPPORTED       The driver specified by This does not support
1685bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang                                the language specified by Language.
1695bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang
1705bca971e545e01271c6ae5b1b66ee9f281123bf2qhuang**/
17195276127e373f2e2fb2a208ff77267422a197d9fxguEFI_STATUS
17295276127e373f2e2fb2a208ff77267422a197d9fxguEFIAPI
17395276127e373f2e2fb2a208ff77267422a197d9fxguGraphicsConsoleComponentNameGetControllerName (
17495276127e373f2e2fb2a208ff77267422a197d9fxgu  IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,
17595276127e373f2e2fb2a208ff77267422a197d9fxgu  IN  EFI_HANDLE                                      ControllerHandle,
17695276127e373f2e2fb2a208ff77267422a197d9fxgu  IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,
17795276127e373f2e2fb2a208ff77267422a197d9fxgu  IN  CHAR8                                           *Language,
17895276127e373f2e2fb2a208ff77267422a197d9fxgu  OUT CHAR16                                          **ControllerName
17995276127e373f2e2fb2a208ff77267422a197d9fxgu  )
18095276127e373f2e2fb2a208ff77267422a197d9fxgu{
18195276127e373f2e2fb2a208ff77267422a197d9fxgu  return EFI_UNSUPPORTED;
18295276127e373f2e2fb2a208ff77267422a197d9fxgu}
183