155a1bb43aa37fc948911197a99e23199fcc58b72xli/** @file
255a1bb43aa37fc948911197a99e23199fcc58b72xli  UEFI Component Name(2) protocol implementation for VGA Class Driver.
33db510989eb500296c3f4839c427325a02aea2e3klu
4c2d9a4d253d3a3b146b5ddf5313907a149ec4acaniruiyuCopyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
5180a5a35cb49699bd249dee19e41cee34c856a58hhtianThis program and the accompanying materials
63db510989eb500296c3f4839c427325a02aea2e3kluare licensed and made available under the terms and conditions of the BSD License
73db510989eb500296c3f4839c427325a02aea2e3kluwhich accompanies this distribution.  The full text of the license may be found at
83db510989eb500296c3f4839c427325a02aea2e3kluhttp://opensource.org/licenses/bsd-license.php
93db510989eb500296c3f4839c427325a02aea2e3klu
103db510989eb500296c3f4839c427325a02aea2e3kluTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
113db510989eb500296c3f4839c427325a02aea2e3kluWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
123db510989eb500296c3f4839c427325a02aea2e3klu
133db510989eb500296c3f4839c427325a02aea2e3klu**/
14e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang
15e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang#include "VgaClass.h"
16e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang
17e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang//
18e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang// EFI Component Name Protocol
19e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang//
201307dcd745881377355a2e7fba53ff9184e92657qhuangGLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL  gVgaClassComponentName = {
21e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  VgaClassComponentNameGetDriverName,
22e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  VgaClassComponentNameGetControllerName,
23e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  "eng"
241307dcd745881377355a2e7fba53ff9184e92657qhuang};
259d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang
269d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang//
279d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang// EFI Component Name 2 Protocol
289d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang//
291307dcd745881377355a2e7fba53ff9184e92657qhuangGLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gVgaClassComponentName2 = {
309d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) VgaClassComponentNameGetDriverName,
319d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) VgaClassComponentNameGetControllerName,
329d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  "en"
331307dcd745881377355a2e7fba53ff9184e92657qhuang};
349d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang
35e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang
36d1aeb0bdc36f6bece71a2b0fd3684857d11a867bqhuangGLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mVgaClassDriverNameTable[] = {
37e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  {
389d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang    "eng;en",
39e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang    L"VGA Class Driver"
40e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  },
41e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  {
42e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang    NULL,
43e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang    NULL
44e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  }
45e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang};
46e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang
479d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang/**
489d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  Retrieves a Unicode string that is the user readable name of the driver.
499d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang
509d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  This function retrieves the user readable name of a driver in the form of a
519d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  Unicode string. If the driver specified by This has a user readable name in
529d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  the language specified by Language, then a pointer to the driver name is
539d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
549d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  by This does not support the language specified by Language,
559d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  then EFI_UNSUPPORTED is returned.
569d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang
5755a1bb43aa37fc948911197a99e23199fcc58b72xli  @param  This                  A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
589d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                EFI_COMPONENT_NAME_PROTOCOL instance.
5955a1bb43aa37fc948911197a99e23199fcc58b72xli  @param  Language              A pointer to a Null-terminated ASCII string
609d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                array indicating the language. This is the
619d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                language of the driver name that the caller is
629d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                requesting, and it must match one of the
639d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                languages specified in SupportedLanguages. The
649d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                number of languages supported by a driver is up
659d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                to the driver writer. Language is specified
664bca47e17581c099b7a8e9b7ba08bd4e69b31d4dgikidy                                in RFC 4646 or ISO 639-2 language code format.
6755a1bb43aa37fc948911197a99e23199fcc58b72xli  @param  DriverName            A pointer to the Unicode string to return.
689d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                This Unicode string is the name of the
699d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                driver specified by This in the language
709d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                specified by Language.
719d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang
729d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  @retval EFI_SUCCESS           The Unicode string for the Driver specified by
739d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                This and the language specified by Language was
749d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                returned in DriverName.
759d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  @retval EFI_INVALID_PARAMETER Language is NULL.
769d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  @retval EFI_INVALID_PARAMETER DriverName is NULL.
779d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  @retval EFI_UNSUPPORTED       The driver specified by This does not support
789d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                the language specified by Language.
799d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang
809d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang**/
81e081218df73d6b6042c1c1a2ce422a2495b03f8dqwangEFI_STATUS
82e081218df73d6b6042c1c1a2ce422a2495b03f8dqwangEFIAPI
83e081218df73d6b6042c1c1a2ce422a2495b03f8dqwangVgaClassComponentNameGetDriverName (
84e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  IN  EFI_COMPONENT_NAME_PROTOCOL  *This,
85e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  IN  CHAR8                        *Language,
86e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  OUT CHAR16                       **DriverName
87e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  )
88e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang{
899d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  return LookupUnicodeString2 (
909d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang           Language,
919d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang           This->SupportedLanguages,
929d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang           mVgaClassDriverNameTable,
939d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang           DriverName,
949d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang           (BOOLEAN)(This == &gVgaClassComponentName)
959d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang           );
96e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang}
97e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang
989d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang/**
999d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  Retrieves a Unicode string that is the user readable name of the controller
1009d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  that is being managed by a driver.
1019d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang
1029d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  This function retrieves the user readable name of the controller specified by
1039d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  ControllerHandle and ChildHandle in the form of a Unicode string. If the
1049d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  driver specified by This has a user readable name in the language specified by
1059d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  Language, then a pointer to the controller name is returned in ControllerName,
1069d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  and EFI_SUCCESS is returned.  If the driver specified by This is not currently
1079d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  managing the controller specified by ControllerHandle and ChildHandle,
1089d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  then EFI_UNSUPPORTED is returned.  If the driver specified by This does not
1099d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  support the language specified by Language, then EFI_UNSUPPORTED is returned.
1109d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang
11155a1bb43aa37fc948911197a99e23199fcc58b72xli  @param  This                  A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
1129d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                EFI_COMPONENT_NAME_PROTOCOL instance.
11355a1bb43aa37fc948911197a99e23199fcc58b72xli  @param  ControllerHandle      The handle of a controller that the driver
1149d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                specified by This is managing.  This handle
1159d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                specifies the controller whose name is to be
1169d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                returned.
11755a1bb43aa37fc948911197a99e23199fcc58b72xli  @param  ChildHandle           The handle of the child controller to retrieve
1189d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                the name of.  This is an optional parameter that
1199d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                may be NULL.  It will be NULL for device
1209d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                drivers.  It will also be NULL for a bus drivers
1219d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                that wish to retrieve the name of the bus
1229d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                controller.  It will not be NULL for a bus
1239d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                driver that wishes to retrieve the name of a
1249d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                child controller.
12555a1bb43aa37fc948911197a99e23199fcc58b72xli  @param  Language              A pointer to a Null-terminated ASCII string
1269d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                array indicating the language.  This is the
1279d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                language of the driver name that the caller is
1289d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                requesting, and it must match one of the
1299d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                languages specified in SupportedLanguages. The
1309d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                number of languages supported by a driver is up
1319d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                to the driver writer. Language is specified in
1324bca47e17581c099b7a8e9b7ba08bd4e69b31d4dgikidy                                RFC 4646 or ISO 639-2 language code format.
13355a1bb43aa37fc948911197a99e23199fcc58b72xli  @param  ControllerName        A pointer to the Unicode string to return.
1349d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                This Unicode string is the name of the
1359d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                controller specified by ControllerHandle and
1369d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                ChildHandle in the language specified by
1379d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                Language from the point of view of the driver
1389d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                specified by This.
1399d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang
1409d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  @retval EFI_SUCCESS           The Unicode string for the user readable name in
1419d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                the language specified by Language for the
1429d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                driver specified by This was returned in
1439d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                DriverName.
144c2d9a4d253d3a3b146b5ddf5313907a149ec4acaniruiyu  @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.
1459d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
1469d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                EFI_HANDLE.
1479d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  @retval EFI_INVALID_PARAMETER Language is NULL.
1489d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  @retval EFI_INVALID_PARAMETER ControllerName is NULL.
1499d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  @retval EFI_UNSUPPORTED       The driver specified by This is not currently
1509d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                managing the controller specified by
1519d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                ControllerHandle and ChildHandle.
1529d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang  @retval EFI_UNSUPPORTED       The driver specified by This does not support
1539d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang                                the language specified by Language.
1549d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang
1559d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang**/
156e081218df73d6b6042c1c1a2ce422a2495b03f8dqwangEFI_STATUS
157e081218df73d6b6042c1c1a2ce422a2495b03f8dqwangEFIAPI
158e081218df73d6b6042c1c1a2ce422a2495b03f8dqwangVgaClassComponentNameGetControllerName (
159e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,
160e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  IN  EFI_HANDLE                                      ControllerHandle,
161e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,
162e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  IN  CHAR8                                           *Language,
163e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  OUT CHAR16                                          **ControllerName
164e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  )
165e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang{
166e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang  return EFI_UNSUPPORTED;
167e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang}
168