X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=IntelFrameworkModulePkg%2FBus%2FIsa%2FIsaSerialDxe%2FSerial.h;h=db5bd21b92cdf363d430da4e8759a832cf62a16f;hb=6b008b74fbc9fdef1359c3807fc5d043f34a2046;hp=d06f728267c3382bd875003483ceb93849eb6164;hpb=637ff81988c4fab871c5293a931d866ec051a107;p=mirror_edk2.git diff --git a/IntelFrameworkModulePkg/Bus/Isa/IsaSerialDxe/Serial.h b/IntelFrameworkModulePkg/Bus/Isa/IsaSerialDxe/Serial.h index d06f728267..db5bd21b92 100644 --- a/IntelFrameworkModulePkg/Bus/Isa/IsaSerialDxe/Serial.h +++ b/IntelFrameworkModulePkg/Bus/Isa/IsaSerialDxe/Serial.h @@ -1,47 +1,29 @@ -/*++ - -Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved. -This software and associated documentation (if any) is furnished -under a license and may only be used or copied in accordance -with the terms of the license. Except as permitted by such -license, no part of this software or documentation may be -reproduced, stored in a retrieval system, or transmitted in any -form or by any means without the express written consent of -Intel Corporation. - - -Module Name: - - serial.h +/** @file + Include for Serial Driver + +Copyright (c) 2006 - 2009, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php -Abstract: +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - Include for Serial Driver +**/ -Revision History: +#ifndef _SERIAL_H_ +#define _SERIAL_H_ ---*/ -#ifndef _SERIAL_H -#define _SERIAL_H +#include -// -// The package level header files this module uses -// -#include -#include -// -// The protocols, PPI and GUID defintions for this module -// #include #include #include -// -// The Library classes this module consumes -// + #include #include -#include #include #include #include @@ -49,16 +31,18 @@ Revision History: #include #include #include + // // Driver Binding Externs // -extern EFI_DRIVER_BINDING_PROTOCOL gSerialControllerDriver; -extern EFI_COMPONENT_NAME_PROTOCOL gIsaSerialComponentName; +extern EFI_DRIVER_BINDING_PROTOCOL gSerialControllerDriver; +extern EFI_COMPONENT_NAME_PROTOCOL gIsaSerialComponentName; +extern EFI_COMPONENT_NAME2_PROTOCOL gIsaSerialComponentName2; // // Internal Data Structures // -#define SERIAL_DEV_SIGNATURE EFI_SIGNATURE_32 ('s', 'e', 'r', 'd') +#define SERIAL_DEV_SIGNATURE SIGNATURE_32 ('s', 'e', 'r', 'd') #define SERIAL_MAX_BUFFER_SIZE 16 #define TIMEOUT_STALL_INTERVAL 10 @@ -80,10 +64,10 @@ typedef struct { } SERIAL_DEV_FIFO; typedef enum { - UART8250 = 0, - UART16450 = 1, - UART16550 = 2, - UART16550A= 3 + Uart8250 = 0, + Uart16450 = 1, + Uart16550 = 2, + Uart16550A= 3 } EFI_UART_TYPE; // @@ -125,25 +109,25 @@ typedef struct { EFI_UNICODE_STRING_TABLE *ControllerNameTable; } SERIAL_DEV; -#include "ComponentName.h" - #define SERIAL_DEV_FROM_THIS(a) CR (a, SERIAL_DEV, SerialIo, SERIAL_DEV_SIGNATURE) -// -// Globale Variables -// -extern EFI_DRIVER_BINDING_PROTOCOL gSerialControllerDriver; - // // Serial Driver Defaults // -#define SERIAL_PORT_DEFAULT_BAUD_RATE 115200 #define SERIAL_PORT_DEFAULT_RECEIVE_FIFO_DEPTH 1 #define SERIAL_PORT_DEFAULT_TIMEOUT 1000000 -#define SERIAL_PORT_DEFAULT_PARITY NoParity -#define SERIAL_PORT_DEFAULT_DATA_BITS 8 -#define SERIAL_PORT_DEFAULT_STOP_BITS 1 -#define SERIAL_PORT_DEFAULT_CONTROL_MASK 0 +#define SERIAL_PORT_SUPPORT_CONTROL_MASK (EFI_SERIAL_CLEAR_TO_SEND | \ + EFI_SERIAL_DATA_SET_READY | \ + EFI_SERIAL_RING_INDICATE | \ + EFI_SERIAL_CARRIER_DETECT | \ + EFI_SERIAL_REQUEST_TO_SEND | \ + EFI_SERIAL_DATA_TERMINAL_READY | \ + EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE | \ + EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE | \ + EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE | \ + EFI_SERIAL_OUTPUT_BUFFER_EMPTY | \ + EFI_SERIAL_INPUT_BUFFER_EMPTY) + // // (24000000/13)MHz input clock @@ -180,17 +164,17 @@ extern EFI_DRIVER_BINDING_PROTOCOL gSerialControllerDriver; // Purpose: Define each bit in Interrupt Enable Register // Context: // Fields: -// RAVIE Bit0: Receiver Data Available Interrupt Enable -// THEIE Bit1: Transmistter Holding Register Empty Interrupt Enable -// RIE Bit2: Receiver Interrupt Enable -// MIE Bit3: Modem Interrupt Enable +// Ravie Bit0: Receiver Data Available Interrupt Enable +// Theie Bit1: Transmistter Holding Register Empty Interrupt Enable +// Rie Bit2: Receiver Interrupt Enable +// Mie Bit3: Modem Interrupt Enable // Reserved Bit4-Bit7: Reserved // typedef struct { - UINT8 RAVIE : 1; - UINT8 THEIE : 1; - UINT8 RIE : 1; - UINT8 MIE : 1; + UINT8 Ravie : 1; + UINT8 Theie : 1; + UINT8 Rie : 1; + UINT8 Mie : 1; UINT8 Reserved : 4; } SERIAL_PORT_IER_BITS; @@ -207,55 +191,25 @@ typedef union { UINT8 Data; } SERIAL_PORT_IER; -// -// Name: SERIAL_PORT_IIR_BITS -// Purpose: Define each bit in Interrupt Identification Register -// Context: -// Fields: -// IPS Bit0: Interrupt Pending Status -// IIB Bit1-Bit3: Interrupt ID Bits -// Reserved Bit4-Bit5: Reserved -// FIFOES Bit6-Bit7: FIFO Mode Enable Status -// -typedef struct { - UINT8 IPS : 1; - UINT8 IIB : 3; - UINT8 Reserved : 2; - UINT8 FIFOES : 2; -} SERIAL_PORT_IIR_BITS; - -// -// Name: SERIAL_PORT_IIR -// Purpose: -// Context: -// Fields: -// Bits SERIAL_PORT_IIR_BITS: Bits of the IIR -// Data UINT8: the value of the IIR -// -typedef union { - SERIAL_PORT_IIR_BITS Bits; - UINT8 Data; -} SERIAL_PORT_IIR; - // // Name: SERIAL_PORT_FCR_BITS // Purpose: Define each bit in FIFO Control Register // Context: // Fields: -// TRFIFOE Bit0: Transmit and Receive FIFO Enable -// RESETRF Bit1: Reset Reciever FIFO -// RESETTF Bit2: Reset Transmistter FIFO -// DMS Bit3: DMA Mode Select +// TrFIFOE Bit0: Transmit and Receive FIFO Enable +// ResetRF Bit1: Reset Reciever FIFO +// ResetTF Bit2: Reset Transmistter FIFO +// Dms Bit3: DMA Mode Select // Reserved Bit4-Bit5: Reserved -// RTB Bit6-Bit7: Receive Trigger Bits +// Rtb Bit6-Bit7: Receive Trigger Bits // typedef struct { - UINT8 TRFIFOE : 1; - UINT8 RESETRF : 1; - UINT8 RESETTF : 1; - UINT8 DMS : 1; + UINT8 TrFIFOE : 1; + UINT8 ResetRF : 1; + UINT8 ResetTF : 1; + UINT8 Dms : 1; UINT8 Reserved : 2; - UINT8 RTB : 2; + UINT8 Rtb : 2; } SERIAL_PORT_FCR_BITS; // @@ -276,22 +230,22 @@ typedef union { // Purpose: Define each bit in Line Control Register // Context: // Fields: -// SERIALDB Bit0-Bit1: Number of Serial Data Bits -// STOPB Bit2: Number of Stop Bits -// PAREN Bit3: Parity Enable -// EVENPAR Bit4: Even Parity Select -// STICPAR Bit5: Sticky Parity -// BRCON Bit6: Break Control -// DLAB Bit7: Divisor Latch Access Bit +// SerialDB Bit0-Bit1: Number of Serial Data Bits +// StopB Bit2: Number of Stop Bits +// ParEn Bit3: Parity Enable +// EvenPar Bit4: Even Parity Select +// SticPar Bit5: Sticky Parity +// BrCon Bit6: Break Control +// DLab Bit7: Divisor Latch Access Bit // typedef struct { - UINT8 SERIALDB : 2; - UINT8 STOPB : 1; - UINT8 PAREN : 1; - UINT8 EVENPAR : 1; - UINT8 STICPAR : 1; - UINT8 BRCON : 1; - UINT8 DLAB : 1; + UINT8 SerialDB : 2; + UINT8 StopB : 1; + UINT8 ParEn : 1; + UINT8 EvenPar : 1; + UINT8 SticPar : 1; + UINT8 BrCon : 1; + UINT8 DLab : 1; } SERIAL_PORT_LCR_BITS; // @@ -312,19 +266,19 @@ typedef union { // Purpose: Define each bit in Modem Control Register // Context: // Fields: -// DTRC Bit0: Data Terminal Ready Control -// RTS Bit1: Request To Send Control -// OUT1 Bit2: Output1 -// OUT2 Bit3: Output2, used to disable interrupt -// LME; Bit4: Loopback Mode Enable +// DtrC Bit0: Data Terminal Ready Control +// Rts Bit1: Request To Send Control +// Out1 Bit2: Output1 +// Out2 Bit3: Output2, used to disable interrupt +// Lme; Bit4: Loopback Mode Enable // Reserved Bit5-Bit7: Reserved // typedef struct { - UINT8 DTRC : 1; - UINT8 RTS : 1; - UINT8 OUT1 : 1; - UINT8 OUT2 : 1; - UINT8 LME : 1; + UINT8 DtrC : 1; + UINT8 Rts : 1; + UINT8 Out1 : 1; + UINT8 Out2 : 1; + UINT8 Lme : 1; UINT8 Reserved : 3; } SERIAL_PORT_MCR_BITS; @@ -346,24 +300,24 @@ typedef union { // Purpose: Define each bit in Line Status Register // Context: // Fields: -// DR Bit0: Receiver Data Ready Status -// OE Bit1: Overrun Error Status -// PE Bit2: Parity Error Status -// FE Bit3: Framing Error Status -// BI Bit4: Break Interrupt Status -// THRE Bit5: Transmistter Holding Register Status -// TEMT Bit6: Transmitter Empty Status -// FIFOE Bit7: FIFO Error Status +// Dr Bit0: Receiver Data Ready Status +// Oe Bit1: Overrun Error Status +// Pe Bit2: Parity Error Status +// Fe Bit3: Framing Error Status +// Bi Bit4: Break Interrupt Status +// Thre Bit5: Transmistter Holding Register Status +// Temt Bit6: Transmitter Empty Status +// FIFOe Bit7: FIFO Error Status // typedef struct { - UINT8 DR : 1; - UINT8 OE : 1; - UINT8 PE : 1; - UINT8 FE : 1; - UINT8 BI : 1; - UINT8 THRE : 1; - UINT8 TEMT : 1; - UINT8 FIFOE : 1; + UINT8 Dr : 1; + UINT8 Oe : 1; + UINT8 Pe : 1; + UINT8 Fe : 1; + UINT8 Bi : 1; + UINT8 Thre : 1; + UINT8 Temt : 1; + UINT8 FIFOe : 1; } SERIAL_PORT_LSR_BITS; // @@ -388,20 +342,20 @@ typedef union { // DeltaDSR Bit1: Delta Data Set Ready Status // TrailingEdgeRI Bit2: Trailing Edge of Ring Indicator Status // DeltaDCD Bit3: Delta Data Carrier Detect Status -// CTS Bit4: Clear To Send Status -// DSR Bit5: Data Set Ready Status -// RI Bit6: Ring Indicator Status -// DCD Bit7: Data Carrier Detect Status +// Cts Bit4: Clear To Send Status +// Dsr Bit5: Data Set Ready Status +// Ri Bit6: Ring Indicator Status +// Dcd Bit7: Data Carrier Detect Status // typedef struct { UINT8 DeltaCTS : 1; UINT8 DeltaDSR : 1; UINT8 TrailingEdgeRI : 1; UINT8 DeltaDCD : 1; - UINT8 CTS : 1; - UINT8 DSR : 1; - UINT8 RI : 1; - UINT8 DCD : 1; + UINT8 Cts : 1; + UINT8 Dsr : 1; + UINT8 Ri : 1; + UINT8 Dcd : 1; } SERIAL_PORT_MSR_BITS; // @@ -447,7 +401,16 @@ typedef union { // Prototypes // Driver model protocol interface // +/** + Check to see if this driver supports the given controller + + @param This A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance. + @param Controller The handle of the controller to test. + @param RemainingDevicePath A pointer to the remaining portion of a device path. + @return EFI_SUCCESS This driver can support the given controller + +**/ EFI_STATUS EFIAPI SerialControllerDriverSupported ( @@ -456,6 +419,15 @@ SerialControllerDriverSupported ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ); +/** + Start to management the controller passed in + + @param This A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance. + @param Controller The handle of the controller to test. + @param RemainingDevicePath A pointer to the remaining portion of a device path. + + @return EFI_SUCCESS Driver is started successfully +**/ EFI_STATUS EFIAPI SerialControllerDriverStart ( @@ -464,6 +436,18 @@ SerialControllerDriverStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ); +/** + Disconnect this driver with the controller, uninstall related protocol instance + + @param This A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance. + @param Controller The handle of the controller to test. + @param NumberOfChildren Number of child device. + @param ChildHandleBuffer A pointer to the remaining portion of a device path. + + @retval EFI_SUCCESS Operation successfully + @retval EFI_DEVICE_ERROR Cannot stop the driver successfully + +**/ EFI_STATUS EFIAPI SerialControllerDriverStop ( @@ -476,12 +460,38 @@ SerialControllerDriverStop ( // // Serial I/O Protocol Interface // +/** + Reset serial device. + + @param This Pointer to EFI_SERIAL_IO_PROTOCOL + + @retval EFI_SUCCESS Reset successfully + @retval EFI_DEVICE_ERROR Failed to reset + +**/ EFI_STATUS EFIAPI IsaSerialReset ( IN EFI_SERIAL_IO_PROTOCOL *This ); +/** + Set new attributes to a serial device. + + @param This Pointer to EFI_SERIAL_IO_PROTOCOL + @param BaudRate The baudrate of the serial device + @param ReceiveFifoDepth The depth of receive FIFO buffer + @param Timeout The request timeout for a single char + @param Parity The type of parity used in serial device + @param DataBits Number of databits used in serial device + @param StopBits Number of stopbits used in serial device + + @retval EFI_SUCCESS The new attributes were set + @retval EFI_INVALID_PARAMETERS One or more attributes have an unsupported value + @retval EFI_UNSUPPORTED Data Bits can not set to 5 or 6 + @retval EFI_DEVICE_ERROR The serial device is not functioning correctly (no return) + +**/ EFI_STATUS EFIAPI IsaSerialSetAttributes ( @@ -494,6 +504,16 @@ IsaSerialSetAttributes ( IN EFI_STOP_BITS_TYPE StopBits ); +/** + Set Control Bits. + + @param This Pointer to EFI_SERIAL_IO_PROTOCOL + @param Control Control bits that can be settable + + @retval EFI_SUCCESS New Control bits were set successfully + @retval EFI_UNSUPPORTED The Control bits wanted to set are not supported + +**/ EFI_STATUS EFIAPI IsaSerialSetControl ( @@ -501,6 +521,15 @@ IsaSerialSetControl ( IN UINT32 Control ); +/** + Get ControlBits. + + @param This Pointer to EFI_SERIAL_IO_PROTOCOL + @param Control Control signals of the serial device + + @retval EFI_SUCCESS Get Control signals successfully + +**/ EFI_STATUS EFIAPI IsaSerialGetControl ( @@ -508,6 +537,19 @@ IsaSerialGetControl ( OUT UINT32 *Control ); +/** + Write the specified number of bytes to serial device. + + @param This Pointer to EFI_SERIAL_IO_PROTOCOL + @param BufferSize On input the size of Buffer, on output the amount of + data actually written + @param Buffer The buffer of data to write + + @retval EFI_SUCCESS The data were written successfully + @retval EFI_DEVICE_ERROR The device reported an error + @retval EFI_TIMEOUT The write operation was stopped due to timeout + +**/ EFI_STATUS EFIAPI IsaSerialWrite ( @@ -516,6 +558,19 @@ IsaSerialWrite ( IN VOID *Buffer ); +/** + Read the specified number of bytes from serial device. + + @param This Pointer to EFI_SERIAL_IO_PROTOCOL + @param BufferSize On input the size of Buffer, on output the amount of + data returned in buffer + @param Buffer The buffer to return the data into + + @retval EFI_SUCCESS The data were read successfully + @retval EFI_DEVICE_ERROR The device reported an error + @retval EFI_TIMEOUT The read operation was stopped due to timeout + +**/ EFI_STATUS EFIAPI IsaSerialRead ( @@ -527,38 +582,101 @@ IsaSerialRead ( // // Internal Functions // +/** + Use scratchpad register to test if this serial port is present. + + @param SerialDevice Pointer to serial device structure + + @return if this serial port is present +**/ BOOLEAN IsaSerialPortPresent ( IN SERIAL_DEV *SerialDevice ); +/** + Detect whether specific FIFO is full or not. + + @param Fifo A pointer to the Data Structure SERIAL_DEV_FIFO + + @return whether specific FIFO is full or not + +**/ BOOLEAN IsaSerialFifoFull ( IN SERIAL_DEV_FIFO *Fifo ); +/** + Detect whether specific FIFO is empty or not. + + @param Fifo A pointer to the Data Structure SERIAL_DEV_FIFO + + @return whether specific FIFO is empty or not + +**/ BOOLEAN IsaSerialFifoEmpty ( IN SERIAL_DEV_FIFO *Fifo ); +/** + Add data to specific FIFO. + + @param Fifo A pointer to the Data Structure SERIAL_DEV_FIFO + @param Data the data added to FIFO + + @retval EFI_SUCCESS Add data to specific FIFO successfully + @retval EFI_OUT_OF_RESOURCE Failed to add data because FIFO is already full + +**/ EFI_STATUS IsaSerialFifoAdd ( IN SERIAL_DEV_FIFO *Fifo, IN UINT8 Data ); +/** + Remove data from specific FIFO. + + @param Fifo A pointer to the Data Structure SERIAL_DEV_FIFO + @param Data the data removed from FIFO + + @retval EFI_SUCCESS Remove data from specific FIFO successfully + @retval EFI_OUT_OF_RESOURCE Failed to remove data because FIFO is empty + +**/ EFI_STATUS IsaSerialFifoRemove ( IN SERIAL_DEV_FIFO *Fifo, OUT UINT8 *Data ); +/** + Reads and writes all avaliable data. + + @param SerialDevice The device to flush + + @retval EFI_SUCCESS Data was read/written successfully. + @retval EFI_OUT_OF_RESOURCE Failed because software receive FIFO is full. Note, when + this happens, pending writes are not done. + +**/ EFI_STATUS IsaSerialReceiveTransmit ( IN SERIAL_DEV *SerialDevice ); +/** + Use IsaIo protocol to read serial port. + + @param IsaIo Pointer to EFI_ISA_IO_PROTOCOL instance + @param BaseAddress Serial port register group base address + @param Offset Offset in register group + + @return Data read from serial port + +**/ UINT8 IsaSerialReadPort ( IN EFI_ISA_IO_PROTOCOL *IsaIo, @@ -566,6 +684,15 @@ IsaSerialReadPort ( IN UINT32 Offset ); +/** + Use IsaIo protocol to write serial port. + + @param IsaIo Pointer to EFI_ISA_IO_PROTOCOL instance + @param BaseAddress Serial port register group base address + @param Offset Offset in register group + @param Data data which is to be written to some serial port register + +**/ VOID IsaSerialWritePort ( IN EFI_ISA_IO_PROTOCOL *IsaIo, @@ -574,4 +701,148 @@ IsaSerialWritePort ( IN UINT8 Data ); + +// +// EFI Component Name Functions +// +/** + Retrieves a Unicode string that is the user readable name of the driver. + + This function retrieves the user readable name of a driver in the form of a + Unicode string. If the driver specified by This has a user readable name in + the language specified by Language, then a pointer to the driver name is + returned in DriverName, and EFI_SUCCESS is returned. If the driver specified + by This does not support the language specified by Language, + then EFI_UNSUPPORTED is returned. + + @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or + EFI_COMPONENT_NAME_PROTOCOL instance. + + @param Language[in] A pointer to a Null-terminated ASCII string + array indicating the language. This is the + language of the driver name that the caller is + requesting, and it must match one of the + languages specified in SupportedLanguages. The + number of languages supported by a driver is up + to the driver writer. Language is specified + in RFC 4646 or ISO 639-2 language code format. + + @param DriverName[out] A pointer to the Unicode string to return. + This Unicode string is the name of the + driver specified by This in the language + specified by Language. + + @retval EFI_SUCCESS The Unicode string for the Driver specified by + This and the language specified by Language was + returned in DriverName. + + @retval EFI_INVALID_PARAMETER Language is NULL. + + @retval EFI_INVALID_PARAMETER DriverName is NULL. + + @retval EFI_UNSUPPORTED The driver specified by This does not support + the language specified by Language. + +**/ +EFI_STATUS +EFIAPI +IsaSerialComponentNameGetDriverName ( + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN CHAR8 *Language, + OUT CHAR16 **DriverName + ); + + +/** + Retrieves a Unicode string that is the user readable name of the controller + that is being managed by a driver. + + This function retrieves the user readable name of the controller specified by + ControllerHandle and ChildHandle in the form of a Unicode string. If the + driver specified by This has a user readable name in the language specified by + Language, then a pointer to the controller name is returned in ControllerName, + and EFI_SUCCESS is returned. If the driver specified by This is not currently + managing the controller specified by ControllerHandle and ChildHandle, + then EFI_UNSUPPORTED is returned. If the driver specified by This does not + support the language specified by Language, then EFI_UNSUPPORTED is returned. + + @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or + EFI_COMPONENT_NAME_PROTOCOL instance. + + @param ControllerHandle[in] The handle of a controller that the driver + specified by This is managing. This handle + specifies the controller whose name is to be + returned. + + @param ChildHandle[in] The handle of the child controller to retrieve + the name of. This is an optional parameter that + may be NULL. It will be NULL for device + drivers. It will also be NULL for a bus drivers + that wish to retrieve the name of the bus + controller. It will not be NULL for a bus + driver that wishes to retrieve the name of a + child controller. + + @param Language[in] A pointer to a Null-terminated ASCII string + array indicating the language. This is the + language of the driver name that the caller is + requesting, and it must match one of the + languages specified in SupportedLanguages. The + number of languages supported by a driver is up + to the driver writer. Language is specified in + RFC 4646 or ISO 639-2 language code format. + + @param ControllerName[out] A pointer to the Unicode string to return. + This Unicode string is the name of the + controller specified by ControllerHandle and + ChildHandle in the language specified by + Language from the point of view of the driver + specified by This. + + @retval EFI_SUCCESS The Unicode string for the user readable name in + the language specified by Language for the + driver specified by This was returned in + DriverName. + + @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE. + + @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid + EFI_HANDLE. + + @retval EFI_INVALID_PARAMETER Language is NULL. + + @retval EFI_INVALID_PARAMETER ControllerName is NULL. + + @retval EFI_UNSUPPORTED The driver specified by This is not currently + managing the controller specified by + ControllerHandle and ChildHandle. + + @retval EFI_UNSUPPORTED The driver specified by This does not support + the language specified by Language. + +**/ +EFI_STATUS +EFIAPI +IsaSerialComponentNameGetControllerName ( + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName + ); + +/** + Add the component name for the serial io device + + @param SerialDevice A pointer to the SERIAL_DEV instance. + + @param IsaIo A pointer to the EFI_ISA_IO_PROTOCOL instance. + +**/ +VOID +AddName ( + IN SERIAL_DEV *SerialDevice, + IN EFI_ISA_IO_PROTOCOL *IsaIo + ); + #endif