-/**@file\r
+/** @file\r
+ UEFI Component Name and Name2 protocol for Isa serial driver.\r
\r
- \r
-Copyright (c) 2006 - 2007, Intel Corporation.<BR>\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
}\r
};\r
\r
+GLOBAL_REMOVE_IF_UNREFERENCED CHAR16 mSerialPortName[] = L"ISA Serial Port # ";\r
+\r
/**\r
Retrieves a Unicode string that is the user readable name of the driver.\r
\r
driver specified by This was returned in\r
DriverName.\r
\r
- @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
+ @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.\r
\r
@retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
EFI_HANDLE.\r
OUT CHAR16 **ControllerName\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_SERIAL_IO_PROTOCOL *SerialIo;\r
- SERIAL_DEV *SerialDevice;\r
+ EFI_STATUS Status;\r
+ EFI_SERIAL_IO_PROTOCOL *SerialIo;\r
+ SERIAL_DEV *SerialDevice;\r
+ EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
\r
- //\r
- // This is a device driver, so ChildHandle must be NULL.\r
- //\r
- if (ChildHandle != NULL) {\r
- return EFI_UNSUPPORTED;\r
- }\r
//\r
// Make sure this driver is currently managing ControllerHandle\r
//\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
- //\r
- // Get the Block I/O Protocol on Controller\r
- //\r
- Status = gBS->OpenProtocol (\r
- ControllerHandle,\r
- &gEfiSerialIoProtocolGuid,\r
- (VOID **) &SerialIo,\r
- gSerialControllerDriver.DriverBindingHandle,\r
- ControllerHandle,\r
- EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
- );\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
+\r
+ ControllerNameTable = NULL;\r
+ if (ChildHandle != NULL) {\r
+ Status = EfiTestChildHandle (\r
+ ControllerHandle,\r
+ ChildHandle,\r
+ &gEfiIsaIoProtocolGuid\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+\r
+ //\r
+ // Get the Serial I/O Protocol from the child handle\r
+ //\r
+ Status = gBS->OpenProtocol (\r
+ ChildHandle,\r
+ &gEfiSerialIoProtocolGuid,\r
+ (VOID **) &SerialIo,\r
+ gSerialControllerDriver.DriverBindingHandle,\r
+ ChildHandle,\r
+ EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+\r
+ //\r
+ // Get the Serial Controller's Device structure\r
+ //\r
+ SerialDevice = SERIAL_DEV_FROM_THIS (SerialIo);\r
+ ControllerNameTable = SerialDevice->ControllerNameTable;\r
}\r
- //\r
- // Get the Serial Controller's Device structure\r
- //\r
- SerialDevice = SERIAL_DEV_FROM_THIS (SerialIo);\r
\r
return LookupUnicodeString2 (\r
Language,\r
This->SupportedLanguages,\r
- SerialDevice->ControllerNameTable,\r
+ ControllerNameTable,\r
ControllerName,\r
(BOOLEAN)(This == &gIsaSerialComponentName)\r
);\r
}\r
\r
-VOID\r
-AddName (\r
- IN SERIAL_DEV *SerialDevice,\r
- IN EFI_ISA_IO_PROTOCOL *IsaIo\r
- )\r
/**\r
+ Add the ISO639-2 and RFC4646 component name both for the Serial IO device\r
\r
- Routine Description:\r
- \r
- Add the component name for the serial io device\r
+ @param SerialDevice A pointer to the SERIAL_DEV instance.\r
\r
- Arguments:\r
- \r
- SerialDevice - A pointer to the SERIAL_DEV instance.\r
- IsaIo - A pointer to the EFI_ISA_IO_PROTOCOL instance.\r
- \r
- Returns:\r
+ @param IsaIo A pointer to the EFI_ISA_IO_PROTOCOL instance.\r
\r
- None\r
- \r
**/\r
+VOID\r
+AddName (\r
+ IN SERIAL_DEV *SerialDevice,\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo\r
+ )\r
{\r
- CHAR16 SerialPortName[sizeof (SERIAL_PORT_NAME)];\r
-\r
- StrCpy (SerialPortName, L"ISA Serial Port # ");\r
- SerialPortName[sizeof (SERIAL_PORT_NAME) - 2] = (CHAR16) (L'0' + (UINT8) IsaIo->ResourceList->Device.UID);\r
+ mSerialPortName[(sizeof (mSerialPortName) / 2) - 2] = (CHAR16) (L'0' + (UINT8) IsaIo->ResourceList->Device.UID);\r
AddUnicodeString2 (\r
"eng",\r
gIsaSerialComponentName.SupportedLanguages,\r
&SerialDevice->ControllerNameTable,\r
- (CHAR16 *) SerialPortName,\r
+ mSerialPortName,\r
TRUE\r
);\r
AddUnicodeString2 (\r
"en",\r
gIsaSerialComponentName2.SupportedLanguages,\r
&SerialDevice->ControllerNameTable,\r
- (CHAR16 *) SerialPortName,\r
+ mSerialPortName,\r
FALSE\r
);\r
\r