Update code style.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8669 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@ -1,7 +1,7 @@
|
|||||||
/**@file
|
/** @file
|
||||||
|
UEFI Component Name and Name2 protocol for Isa serial driver.
|
||||||
|
|
||||||
|
Copyright (c) 2006 - 2009, Intel Corporation.<BR>
|
||||||
Copyright (c) 2006 - 2007, Intel Corporation.<BR>
|
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
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
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -14,6 +14,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
|
|
||||||
#include "Serial.h"
|
#include "Serial.h"
|
||||||
|
|
||||||
|
#define SERIAL_PORT_NAME "ISA Serial Port # "
|
||||||
//
|
//
|
||||||
// EFI Component Name Protocol
|
// EFI Component Name Protocol
|
||||||
//
|
//
|
||||||
@ -227,27 +228,19 @@ IsaSerialComponentNameGetControllerName (
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Add the ISO639-2 and RFC4646 component name both 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
|
VOID
|
||||||
AddName (
|
AddName (
|
||||||
IN SERIAL_DEV *SerialDevice,
|
IN SERIAL_DEV *SerialDevice,
|
||||||
IN EFI_ISA_IO_PROTOCOL *IsaIo
|
IN EFI_ISA_IO_PROTOCOL *IsaIo
|
||||||
)
|
)
|
||||||
/**
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Add the component name for the serial io device
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
SerialDevice - A pointer to the SERIAL_DEV instance.
|
|
||||||
IsaIo - A pointer to the EFI_ISA_IO_PROTOCOL instance.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
**/
|
|
||||||
{
|
{
|
||||||
CHAR16 SerialPortName[sizeof (SERIAL_PORT_NAME)];
|
CHAR16 SerialPortName[sizeof (SERIAL_PORT_NAME)];
|
||||||
|
|
||||||
|
@ -1,177 +0,0 @@
|
|||||||
/**@file
|
|
||||||
|
|
||||||
|
|
||||||
Copyright (c) 2006 - 2007, Intel Corporation.<BR>
|
|
||||||
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
|
|
||||||
|
|
||||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#ifndef _SERIAL_COMPONENT_NAME_H
|
|
||||||
#define _SERIAL_COMPONENT_NAME_H
|
|
||||||
|
|
||||||
#define SERIAL_PORT_NAME "ISA Serial Port # "
|
|
||||||
#define ADD_SERIAL_NAME(x, y) AddName ((x), (y))
|
|
||||||
|
|
||||||
extern EFI_COMPONENT_NAME_PROTOCOL gIsaSerialComponentName;
|
|
||||||
extern EFI_COMPONENT_NAME2_PROTOCOL gIsaSerialComponentName2;
|
|
||||||
|
|
||||||
//
|
|
||||||
// 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
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
|
||||||
AddName (
|
|
||||||
IN SERIAL_DEV *SerialDevice,
|
|
||||||
IN EFI_ISA_IO_PROTOCOL *IsaIo
|
|
||||||
)
|
|
||||||
/**
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Add the component name for the serial io device
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
SerialDevice - A pointer to the SERIAL_DEV instance.
|
|
||||||
IsaIo - A pointer to the EFI_ISA_IO_PROTOCOL instance.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
**/
|
|
||||||
;
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,7 +1,6 @@
|
|||||||
#/** @file
|
#/** @file
|
||||||
# Component description file for IsaSerial module.
|
|
||||||
#
|
|
||||||
# Serial driver for standard UARTS on an ISA bus.
|
# Serial driver for standard UARTS on an ISA bus.
|
||||||
|
#
|
||||||
# Copyright (c) 2007 - 2009, Intel Corporation
|
# Copyright (c) 2007 - 2009, Intel Corporation
|
||||||
#
|
#
|
||||||
# All rights reserved. This program and the accompanying materials
|
# All rights reserved. This program and the accompanying materials
|
||||||
@ -35,7 +34,6 @@
|
|||||||
|
|
||||||
[Sources.common]
|
[Sources.common]
|
||||||
ComponentName.c
|
ComponentName.c
|
||||||
ComponentName.h
|
|
||||||
Serial.h
|
Serial.h
|
||||||
Serial.c
|
Serial.c
|
||||||
|
|
||||||
@ -58,14 +56,12 @@
|
|||||||
DebugLib
|
DebugLib
|
||||||
|
|
||||||
[Protocols]
|
[Protocols]
|
||||||
gEfiIsaIoProtocolGuid # PROTOCOL TO_START
|
gEfiIsaIoProtocolGuid ## TO_START
|
||||||
gEfiSerialIoProtocolGuid # PROTOCOL BY_START
|
gEfiDevicePathProtocolGuid ## TO_START
|
||||||
gEfiDevicePathProtocolGuid # PROTOCOL TO_START
|
gEfiSerialIoProtocolGuid ## BY_START
|
||||||
|
|
||||||
[FixedPcd.common]
|
[FixedPcd.common]
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate|115200
|
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate|115200
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits|8
|
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits|8
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity|1
|
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity|1
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits|1
|
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits|1
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
/**@file
|
/** @file
|
||||||
Serial driver for standard UARTS on an ISA bus.
|
Serial driver for standard UARTS on an ISA bus.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2007, Intel Corporation<BR>
|
Copyright (c) 2006 - 2009, Intel Corporation<BR>
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
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
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
http://opensource.org/licenses/bsd-license.php
|
http://opensource.org/licenses/bsd-license.php
|
||||||
|
|
||||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ SERIAL_DEV gSerialDevTempate = {
|
|||||||
},
|
},
|
||||||
FALSE,
|
FALSE,
|
||||||
FALSE,
|
FALSE,
|
||||||
UART16550A,
|
Uart16550A,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -125,11 +125,11 @@ InitializeIsaSerial (
|
|||||||
/**
|
/**
|
||||||
Check to see if this driver supports the given controller
|
Check to see if this driver supports the given controller
|
||||||
|
|
||||||
@param This - A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
|
@param This A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
|
||||||
@param Controller - The handle of the controller to test.
|
@param Controller The handle of the controller to test.
|
||||||
@param RemainingDevicePath - A pointer to the remaining portion of a device path.
|
@param RemainingDevicePath A pointer to the remaining portion of a device path.
|
||||||
|
|
||||||
@return EFI_SUCCESS - This driver can support the given controller
|
@return EFI_SUCCESS This driver can support the given controller
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
@ -261,11 +261,11 @@ Error:
|
|||||||
/**
|
/**
|
||||||
Start to management the controller passed in
|
Start to management the controller passed in
|
||||||
|
|
||||||
@param This - A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
|
@param This A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
|
||||||
@param Controller - The handle of the controller to test.
|
@param Controller The handle of the controller to test.
|
||||||
@param RemainingDevicePath - A pointer to the remaining portion of a device path.
|
@param RemainingDevicePath A pointer to the remaining portion of a device path.
|
||||||
|
|
||||||
@return EFI_SUCCESS - Driver is started successfully
|
@return EFI_SUCCESS Driver is started successfully
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
@ -388,7 +388,7 @@ SerialControllerDriverStart (
|
|||||||
SerialDevice->IsaIo = IsaIo;
|
SerialDevice->IsaIo = IsaIo;
|
||||||
SerialDevice->ParentDevicePath = ParentDevicePath;
|
SerialDevice->ParentDevicePath = ParentDevicePath;
|
||||||
|
|
||||||
ADD_SERIAL_NAME (SerialDevice, IsaIo);
|
AddName (SerialDevice, IsaIo);
|
||||||
|
|
||||||
for (Index = 0; SerialDevice->IsaIo->ResourceList->ResourceItem[Index].Type != EfiIsaAcpiResourceEndOfList; Index++) {
|
for (Index = 0; SerialDevice->IsaIo->ResourceList->ResourceItem[Index].Type != EfiIsaAcpiResourceEndOfList; Index++) {
|
||||||
if (SerialDevice->IsaIo->ResourceList->ResourceItem[Index].Type == EfiIsaAcpiResourceIo) {
|
if (SerialDevice->IsaIo->ResourceList->ResourceItem[Index].Type == EfiIsaAcpiResourceIo) {
|
||||||
@ -501,8 +501,8 @@ Error:
|
|||||||
This->DriverBindingHandle,
|
This->DriverBindingHandle,
|
||||||
Controller
|
Controller
|
||||||
);
|
);
|
||||||
if (SerialDevice) {
|
if (SerialDevice != NULL) {
|
||||||
if (SerialDevice->DevicePath) {
|
if (SerialDevice->DevicePath != NULL) {
|
||||||
gBS->FreePool (SerialDevice->DevicePath);
|
gBS->FreePool (SerialDevice->DevicePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -517,13 +517,13 @@ Error:
|
|||||||
/**
|
/**
|
||||||
Disconnect this driver with the controller, uninstall related protocol instance
|
Disconnect this driver with the controller, uninstall related protocol instance
|
||||||
|
|
||||||
@param This - A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
|
@param This A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
|
||||||
@param Controller - The handle of the controller to test.
|
@param Controller The handle of the controller to test.
|
||||||
@param NumberOfChildren - Number of child device.
|
@param NumberOfChildren Number of child device.
|
||||||
@param ChildHandleBuffer - A pointer to the remaining portion of a device path.
|
@param ChildHandleBuffer A pointer to the remaining portion of a device path.
|
||||||
|
|
||||||
@retval EFI_SUCCESS - Operation successfully
|
@retval EFI_SUCCESS Operation successfully
|
||||||
@retval EFI_DEVICE_ERROR - Cannot stop the driver successfully
|
@retval EFI_DEVICE_ERROR Cannot stop the driver successfully
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
@ -624,7 +624,7 @@ SerialControllerDriverStop (
|
|||||||
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
|
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
if (SerialDevice->DevicePath) {
|
if (SerialDevice->DevicePath != NULL) {
|
||||||
gBS->FreePool (SerialDevice->DevicePath);
|
gBS->FreePool (SerialDevice->DevicePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -646,9 +646,9 @@ SerialControllerDriverStop (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Detect whether specific FIFO is full or not
|
Detect whether specific FIFO is full or not.
|
||||||
|
|
||||||
@param Fifo - A pointer to the Data Structure SERIAL_DEV_FIFO
|
@param Fifo A pointer to the Data Structure SERIAL_DEV_FIFO
|
||||||
|
|
||||||
@return whether specific FIFO is full or not
|
@return whether specific FIFO is full or not
|
||||||
|
|
||||||
@ -667,10 +667,9 @@ IsaSerialFifoFull (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Detect whether specific FIFO is empty or not
|
Detect whether specific FIFO is empty or not.
|
||||||
|
|
||||||
|
@param Fifo A pointer to the Data Structure SERIAL_DEV_FIFO
|
||||||
@param Fifo - A pointer to the Data Structure SERIAL_DEV_FIFO
|
|
||||||
|
|
||||||
@return whether specific FIFO is empty or not
|
@return whether specific FIFO is empty or not
|
||||||
|
|
||||||
@ -689,13 +688,13 @@ IsaSerialFifoEmpty (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Add data to specific FIFO
|
Add data to specific FIFO.
|
||||||
|
|
||||||
@param Fifo - A pointer to the Data Structure SERIAL_DEV_FIFO
|
@param Fifo A pointer to the Data Structure SERIAL_DEV_FIFO
|
||||||
@param Data - the data added to FIFO
|
@param Data the data added to FIFO
|
||||||
|
|
||||||
@retval EFI_SUCCESS - Add data to specific FIFO successfully
|
@retval EFI_SUCCESS Add data to specific FIFO successfully
|
||||||
@retval EFI_OUT_OF_RESOURCE - Failed to add data because FIFO is already full
|
@retval EFI_OUT_OF_RESOURCE Failed to add data because FIFO is already full
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
@ -725,13 +724,13 @@ IsaSerialFifoAdd (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Remove data from specific FIFO
|
Remove data from specific FIFO.
|
||||||
|
|
||||||
@param Fifo - A pointer to the Data Structure SERIAL_DEV_FIFO
|
@param Fifo A pointer to the Data Structure SERIAL_DEV_FIFO
|
||||||
@param Data - the data removed from FIFO
|
@param Data the data removed from FIFO
|
||||||
|
|
||||||
@retval EFI_SUCCESS - Remove data from specific FIFO successfully
|
@retval EFI_SUCCESS Remove data from specific FIFO successfully
|
||||||
@retval EFI_OUT_OF_RESOURCE - Failed to remove data because FIFO is empty
|
@retval EFI_OUT_OF_RESOURCE Failed to remove data because FIFO is empty
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
@ -763,10 +762,10 @@ IsaSerialFifoRemove (
|
|||||||
/**
|
/**
|
||||||
Reads and writes all avaliable data.
|
Reads and writes all avaliable data.
|
||||||
|
|
||||||
@param SerialDevice - The device to flush
|
@param SerialDevice The device to flush
|
||||||
|
|
||||||
@retval EFI_SUCCESS - Data was read/written successfully.
|
@retval EFI_SUCCESS Data was read/written successfully.
|
||||||
@retval EFI_OUT_OF_RESOURCE - Failed because software receive FIFO is full. Note, when
|
@retval EFI_OUT_OF_RESOURCE Failed because software receive FIFO is full. Note, when
|
||||||
this happens, pending writes are not done.
|
this happens, pending writes are not done.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
@ -808,16 +807,16 @@ IsaSerialReceiveTransmit (
|
|||||||
//
|
//
|
||||||
// Flush incomming data to prevent a an overrun during a long write
|
// Flush incomming data to prevent a an overrun during a long write
|
||||||
//
|
//
|
||||||
if (Lsr.Bits.DR && !ReceiveFifoFull) {
|
if ((Lsr.Bits.Dr == 1) && !ReceiveFifoFull) {
|
||||||
ReceiveFifoFull = IsaSerialFifoFull (&SerialDevice->Receive);
|
ReceiveFifoFull = IsaSerialFifoFull (&SerialDevice->Receive);
|
||||||
if (!ReceiveFifoFull) {
|
if (!ReceiveFifoFull) {
|
||||||
if (Lsr.Bits.FIFOE || Lsr.Bits.OE || Lsr.Bits.PE || Lsr.Bits.FE || Lsr.Bits.BI) {
|
if (Lsr.Bits.FIFOe == 1 || Lsr.Bits.Oe == 1 || Lsr.Bits.Pe == 1 || Lsr.Bits.Fe == 1 || Lsr.Bits.Bi == 1) {
|
||||||
REPORT_STATUS_CODE_WITH_DEVICE_PATH (
|
REPORT_STATUS_CODE_WITH_DEVICE_PATH (
|
||||||
EFI_ERROR_CODE,
|
EFI_ERROR_CODE,
|
||||||
EFI_P_EC_INPUT_ERROR | EFI_PERIPHERAL_SERIAL_PORT,
|
EFI_P_EC_INPUT_ERROR | EFI_PERIPHERAL_SERIAL_PORT,
|
||||||
SerialDevice->DevicePath
|
SerialDevice->DevicePath
|
||||||
);
|
);
|
||||||
if (Lsr.Bits.FIFOE || Lsr.Bits.PE || Lsr.Bits.FE || Lsr.Bits.BI) {
|
if (Lsr.Bits.FIFOe == 1 || Lsr.Bits.Pe == 1|| Lsr.Bits.Fe == 1 || Lsr.Bits.Bi == 1) {
|
||||||
Data = READ_RBR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
Data = READ_RBR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -827,7 +826,7 @@ IsaSerialReceiveTransmit (
|
|||||||
//
|
//
|
||||||
if (SerialDevice->HardwareFlowControl) {
|
if (SerialDevice->HardwareFlowControl) {
|
||||||
Mcr.Data = READ_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
Mcr.Data = READ_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
||||||
Mcr.Bits.DTRC &= 0;
|
Mcr.Bits.DtrC &= 0;
|
||||||
WRITE_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Mcr.Data);
|
WRITE_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Mcr.Data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -838,7 +837,7 @@ IsaSerialReceiveTransmit (
|
|||||||
//
|
//
|
||||||
if (SerialDevice->HardwareFlowControl) {
|
if (SerialDevice->HardwareFlowControl) {
|
||||||
Mcr.Data = READ_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
Mcr.Data = READ_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
||||||
Mcr.Bits.DTRC |= 1;
|
Mcr.Bits.DtrC |= 1;
|
||||||
WRITE_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Mcr.Data);
|
WRITE_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Mcr.Data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -856,7 +855,7 @@ IsaSerialReceiveTransmit (
|
|||||||
//
|
//
|
||||||
// Do the write
|
// Do the write
|
||||||
//
|
//
|
||||||
if (Lsr.Bits.THRE && !IsaSerialFifoEmpty (&SerialDevice->Transmit)) {
|
if (Lsr.Bits.Thre == 1 && !IsaSerialFifoEmpty (&SerialDevice->Transmit)) {
|
||||||
//
|
//
|
||||||
// Make sure the transmit data will not be missed
|
// Make sure the transmit data will not be missed
|
||||||
//
|
//
|
||||||
@ -865,14 +864,14 @@ IsaSerialReceiveTransmit (
|
|||||||
// Send RTS
|
// Send RTS
|
||||||
//
|
//
|
||||||
Mcr.Data = READ_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
Mcr.Data = READ_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
||||||
Mcr.Bits.RTS |= 1;
|
Mcr.Bits.Rts |= 1;
|
||||||
WRITE_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Mcr.Data);
|
WRITE_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Mcr.Data);
|
||||||
//
|
//
|
||||||
// Wait for CTS
|
// Wait for CTS
|
||||||
//
|
//
|
||||||
TimeOut = 0;
|
TimeOut = 0;
|
||||||
Msr.Data = READ_MSR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
Msr.Data = READ_MSR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
||||||
while (!Msr.Bits.CTS) {
|
while (Msr.Bits.Cts == 0) {
|
||||||
gBS->Stall (TIMEOUT_STALL_INTERVAL);
|
gBS->Stall (TIMEOUT_STALL_INTERVAL);
|
||||||
TimeOut++;
|
TimeOut++;
|
||||||
if (TimeOut > 5) {
|
if (TimeOut > 5) {
|
||||||
@ -882,7 +881,7 @@ IsaSerialReceiveTransmit (
|
|||||||
Msr.Data = READ_MSR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
Msr.Data = READ_MSR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Msr.Bits.CTS) {
|
if (Msr.Bits.Cts == 1) {
|
||||||
IsaSerialFifoRemove (&SerialDevice->Transmit, &Data);
|
IsaSerialFifoRemove (&SerialDevice->Transmit, &Data);
|
||||||
WRITE_THR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Data);
|
WRITE_THR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Data);
|
||||||
}
|
}
|
||||||
@ -902,11 +901,11 @@ IsaSerialReceiveTransmit (
|
|||||||
// Assert RTS
|
// Assert RTS
|
||||||
//
|
//
|
||||||
Mcr.Data = READ_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
Mcr.Data = READ_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
||||||
Mcr.Bits.RTS &= 0;
|
Mcr.Bits.Rts &= 0;
|
||||||
WRITE_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Mcr.Data);
|
WRITE_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Mcr.Data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while (Lsr.Bits.THRE && !IsaSerialFifoEmpty (&SerialDevice->Transmit));
|
} while (Lsr.Bits.Thre == 1 && !IsaSerialFifoEmpty (&SerialDevice->Transmit));
|
||||||
}
|
}
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
@ -916,12 +915,12 @@ IsaSerialReceiveTransmit (
|
|||||||
// Interface Functions
|
// Interface Functions
|
||||||
//
|
//
|
||||||
/**
|
/**
|
||||||
Reset serial device
|
Reset serial device.
|
||||||
|
|
||||||
@param This - Pointer to EFI_SERIAL_IO_PROTOCOL
|
@param This Pointer to EFI_SERIAL_IO_PROTOCOL
|
||||||
|
|
||||||
@retval EFI_SUCCESS - Reset successfully
|
@retval EFI_SUCCESS Reset successfully
|
||||||
@retval EFI_DEVICE_ERROR - Failed to reset
|
@retval EFI_DEVICE_ERROR Failed to reset
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
@ -955,32 +954,32 @@ IsaSerialReset (
|
|||||||
// Make sure DLAB is 0.
|
// Make sure DLAB is 0.
|
||||||
//
|
//
|
||||||
Lcr.Data = READ_LCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
Lcr.Data = READ_LCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
||||||
Lcr.Bits.DLAB = 0;
|
Lcr.Bits.DLab = 0;
|
||||||
WRITE_LCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Lcr.Data);
|
WRITE_LCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Lcr.Data);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Turn off all interrupts
|
// Turn off all interrupts
|
||||||
//
|
//
|
||||||
Ier.Data = READ_IER (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
Ier.Data = READ_IER (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
||||||
Ier.Bits.RAVIE = 0;
|
Ier.Bits.Ravie = 0;
|
||||||
Ier.Bits.THEIE = 0;
|
Ier.Bits.Theie = 0;
|
||||||
Ier.Bits.RIE = 0;
|
Ier.Bits.Rie = 0;
|
||||||
Ier.Bits.MIE = 0;
|
Ier.Bits.Mie = 0;
|
||||||
WRITE_IER (SerialDevice->IsaIo, SerialDevice->BaseAddress, Ier.Data);
|
WRITE_IER (SerialDevice->IsaIo, SerialDevice->BaseAddress, Ier.Data);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Disable the FIFO.
|
// Disable the FIFO.
|
||||||
//
|
//
|
||||||
Fcr.Bits.TRFIFOE = 0;
|
Fcr.Bits.TrFIFOE = 0;
|
||||||
WRITE_FCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Fcr.Data);
|
WRITE_FCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Fcr.Data);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Turn off loopback and disable device interrupt.
|
// Turn off loopback and disable device interrupt.
|
||||||
//
|
//
|
||||||
Mcr.Data = READ_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
Mcr.Data = READ_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
||||||
Mcr.Bits.OUT1 = 0;
|
Mcr.Bits.Out1 = 0;
|
||||||
Mcr.Bits.OUT2 = 0;
|
Mcr.Bits.Out2 = 0;
|
||||||
Mcr.Bits.LME = 0;
|
Mcr.Bits.Lme = 0;
|
||||||
WRITE_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Mcr.Data);
|
WRITE_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Mcr.Data);
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -1020,9 +1019,9 @@ IsaSerialReset (
|
|||||||
//
|
//
|
||||||
// for 16550A enable FIFO, 16550 disable FIFO
|
// for 16550A enable FIFO, 16550 disable FIFO
|
||||||
//
|
//
|
||||||
Fcr.Bits.TRFIFOE = 1;
|
Fcr.Bits.TrFIFOE = 1;
|
||||||
Fcr.Bits.RESETRF = 1;
|
Fcr.Bits.ResetRF = 1;
|
||||||
Fcr.Bits.RESETTF = 1;
|
Fcr.Bits.ResetTF = 1;
|
||||||
WRITE_FCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Fcr.Data);
|
WRITE_FCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Fcr.Data);
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -1044,20 +1043,20 @@ IsaSerialReset (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Set new attributes to a serial device
|
Set new attributes to a serial device.
|
||||||
|
|
||||||
@param This - Pointer to EFI_SERIAL_IO_PROTOCOL
|
@param This Pointer to EFI_SERIAL_IO_PROTOCOL
|
||||||
@param BaudRate - The baudrate of the serial device
|
@param BaudRate The baudrate of the serial device
|
||||||
@param ReceiveFifoDepth - The depth of receive FIFO buffer
|
@param ReceiveFifoDepth The depth of receive FIFO buffer
|
||||||
@param Timeout - The request timeout for a single char
|
@param Timeout The request timeout for a single char
|
||||||
@param Parity - The type of parity used in serial device
|
@param Parity The type of parity used in serial device
|
||||||
@param DataBits - Number of databits used in serial device
|
@param DataBits Number of databits used in serial device
|
||||||
@param StopBits - Number of stopbits used in serial device
|
@param StopBits Number of stopbits used in serial device
|
||||||
|
|
||||||
@retval EFI_SUCCESS - The new attributes were set
|
@retval EFI_SUCCESS The new attributes were set
|
||||||
@retval EFI_INVALID_PARAMETERS - One or more attributes have an unsupported value
|
@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_UNSUPPORTED Data Bits can not set to 5 or 6
|
||||||
@retval EFI_DEVICE_ERROR - The serial device is not functioning correctly (no return)
|
@retval EFI_DEVICE_ERROR The serial device is not functioning correctly (no return)
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
@ -1205,11 +1204,11 @@ IsaSerialSetAttributes (
|
|||||||
((UINT32) BaudRate * 16),
|
((UINT32) BaudRate * 16),
|
||||||
&Remained
|
&Remained
|
||||||
);
|
);
|
||||||
if (Remained) {
|
if (Remained != 0) {
|
||||||
Divisor += 1;
|
Divisor += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((Divisor == 0) || (Divisor & 0xffff0000)) {
|
if ((Divisor == 0) || ((Divisor & 0xffff0000) != 0)) {
|
||||||
return EFI_INVALID_PARAMETER;
|
return EFI_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1224,7 +1223,7 @@ IsaSerialSetAttributes (
|
|||||||
// Put serial port on Divisor Latch Mode
|
// Put serial port on Divisor Latch Mode
|
||||||
//
|
//
|
||||||
Lcr.Data = READ_LCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
Lcr.Data = READ_LCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
||||||
Lcr.Bits.DLAB = 1;
|
Lcr.Bits.DLab = 1;
|
||||||
WRITE_LCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Lcr.Data);
|
WRITE_LCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Lcr.Data);
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -1236,37 +1235,37 @@ IsaSerialSetAttributes (
|
|||||||
//
|
//
|
||||||
// Put serial port back in normal mode and set remaining attributes.
|
// Put serial port back in normal mode and set remaining attributes.
|
||||||
//
|
//
|
||||||
Lcr.Bits.DLAB = 0;
|
Lcr.Bits.DLab = 0;
|
||||||
|
|
||||||
switch (Parity) {
|
switch (Parity) {
|
||||||
case NoParity:
|
case NoParity:
|
||||||
Lcr.Bits.PAREN = 0;
|
Lcr.Bits.ParEn = 0;
|
||||||
Lcr.Bits.EVENPAR = 0;
|
Lcr.Bits.EvenPar = 0;
|
||||||
Lcr.Bits.STICPAR = 0;
|
Lcr.Bits.SticPar = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EvenParity:
|
case EvenParity:
|
||||||
Lcr.Bits.PAREN = 1;
|
Lcr.Bits.ParEn = 1;
|
||||||
Lcr.Bits.EVENPAR = 1;
|
Lcr.Bits.EvenPar = 1;
|
||||||
Lcr.Bits.STICPAR = 0;
|
Lcr.Bits.SticPar = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OddParity:
|
case OddParity:
|
||||||
Lcr.Bits.PAREN = 1;
|
Lcr.Bits.ParEn = 1;
|
||||||
Lcr.Bits.EVENPAR = 0;
|
Lcr.Bits.EvenPar = 0;
|
||||||
Lcr.Bits.STICPAR = 0;
|
Lcr.Bits.SticPar = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SpaceParity:
|
case SpaceParity:
|
||||||
Lcr.Bits.PAREN = 1;
|
Lcr.Bits.ParEn = 1;
|
||||||
Lcr.Bits.EVENPAR = 1;
|
Lcr.Bits.EvenPar = 1;
|
||||||
Lcr.Bits.STICPAR = 1;
|
Lcr.Bits.SticPar = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MarkParity:
|
case MarkParity:
|
||||||
Lcr.Bits.PAREN = 1;
|
Lcr.Bits.ParEn = 1;
|
||||||
Lcr.Bits.EVENPAR = 0;
|
Lcr.Bits.EvenPar = 0;
|
||||||
Lcr.Bits.STICPAR = 1;
|
Lcr.Bits.SticPar = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -1275,12 +1274,12 @@ IsaSerialSetAttributes (
|
|||||||
|
|
||||||
switch (StopBits) {
|
switch (StopBits) {
|
||||||
case OneStopBit:
|
case OneStopBit:
|
||||||
Lcr.Bits.STOPB = 0;
|
Lcr.Bits.StopB = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OneFiveStopBits:
|
case OneFiveStopBits:
|
||||||
case TwoStopBits:
|
case TwoStopBits:
|
||||||
Lcr.Bits.STOPB = 1;
|
Lcr.Bits.StopB = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -1289,7 +1288,7 @@ IsaSerialSetAttributes (
|
|||||||
//
|
//
|
||||||
// DataBits
|
// DataBits
|
||||||
//
|
//
|
||||||
Lcr.Bits.SERIALDB = (UINT8) ((DataBits - 5) & 0x03);
|
Lcr.Bits.SerialDB = (UINT8) ((DataBits - 5) & 0x03);
|
||||||
WRITE_LCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Lcr.Data);
|
WRITE_LCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Lcr.Data);
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -1343,7 +1342,7 @@ IsaSerialSetAttributes (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SerialDevice->DevicePath) {
|
if (SerialDevice->DevicePath != NULL) {
|
||||||
gBS->FreePool (SerialDevice->DevicePath);
|
gBS->FreePool (SerialDevice->DevicePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1355,13 +1354,13 @@ IsaSerialSetAttributes (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Set Control Bits
|
Set Control Bits.
|
||||||
|
|
||||||
@param This - Pointer to EFI_SERIAL_IO_PROTOCOL
|
@param This Pointer to EFI_SERIAL_IO_PROTOCOL
|
||||||
@param Control - Control bits that can be settable
|
@param Control Control bits that can be settable
|
||||||
|
|
||||||
@retval EFI_SUCCESS - New Control bits were set successfully
|
@retval EFI_SUCCESS New Control bits were set successfully
|
||||||
@retval EFI_UNSUPPORTED - The Control bits wanted to set are not supported
|
@retval EFI_UNSUPPORTED The Control bits wanted to set are not supported
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
@ -1387,38 +1386,38 @@ IsaSerialSetControl (
|
|||||||
//
|
//
|
||||||
// first determine the parameter is invalid
|
// first determine the parameter is invalid
|
||||||
//
|
//
|
||||||
if (Control & 0xffff8ffc) {
|
if ((Control & 0xffff8ffc) != 0) {
|
||||||
return EFI_UNSUPPORTED;
|
return EFI_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
Tpl = gBS->RaiseTPL (TPL_NOTIFY);
|
Tpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||||
|
|
||||||
Mcr.Data = READ_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
Mcr.Data = READ_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
||||||
Mcr.Bits.DTRC = 0;
|
Mcr.Bits.DtrC = 0;
|
||||||
Mcr.Bits.RTS = 0;
|
Mcr.Bits.Rts = 0;
|
||||||
Mcr.Bits.LME = 0;
|
Mcr.Bits.Lme = 0;
|
||||||
SerialDevice->SoftwareLoopbackEnable = FALSE;
|
SerialDevice->SoftwareLoopbackEnable = FALSE;
|
||||||
SerialDevice->HardwareFlowControl = FALSE;
|
SerialDevice->HardwareFlowControl = FALSE;
|
||||||
|
|
||||||
if (Control & EFI_SERIAL_DATA_TERMINAL_READY) {
|
if ((Control & EFI_SERIAL_DATA_TERMINAL_READY) == EFI_SERIAL_DATA_TERMINAL_READY) {
|
||||||
Mcr.Bits.DTRC = 1;
|
Mcr.Bits.DtrC = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Control & EFI_SERIAL_REQUEST_TO_SEND) {
|
if ((Control & EFI_SERIAL_REQUEST_TO_SEND) == EFI_SERIAL_REQUEST_TO_SEND) {
|
||||||
Mcr.Bits.RTS = 1;
|
Mcr.Bits.Rts = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Control & EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE) {
|
if ((Control & EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE) == EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE) {
|
||||||
Mcr.Bits.LME = 1;
|
Mcr.Bits.Lme = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Control & EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE) {
|
if ((Control & EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE) == EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE) {
|
||||||
SerialDevice->HardwareFlowControl = TRUE;
|
SerialDevice->HardwareFlowControl = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Mcr.Data);
|
WRITE_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Mcr.Data);
|
||||||
|
|
||||||
if (Control & EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE) {
|
if ((Control & EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE) == EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE) {
|
||||||
SerialDevice->SoftwareLoopbackEnable = TRUE;
|
SerialDevice->SoftwareLoopbackEnable = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1428,12 +1427,12 @@ IsaSerialSetControl (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Get ControlBits
|
Get ControlBits.
|
||||||
|
|
||||||
@param This - Pointer to EFI_SERIAL_IO_PROTOCOL
|
@param This Pointer to EFI_SERIAL_IO_PROTOCOL
|
||||||
@param Control - Control signals of the serial device
|
@param Control Control signals of the serial device
|
||||||
|
|
||||||
@retval EFI_SUCCESS - Get Control signals successfully
|
@retval EFI_SUCCESS Get Control signals successfully
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
@ -1459,19 +1458,19 @@ IsaSerialGetControl (
|
|||||||
//
|
//
|
||||||
Msr.Data = READ_MSR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
Msr.Data = READ_MSR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
||||||
|
|
||||||
if (Msr.Bits.CTS) {
|
if (Msr.Bits.Cts == 1) {
|
||||||
*Control |= EFI_SERIAL_CLEAR_TO_SEND;
|
*Control |= EFI_SERIAL_CLEAR_TO_SEND;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Msr.Bits.DSR) {
|
if (Msr.Bits.Dsr == 1) {
|
||||||
*Control |= EFI_SERIAL_DATA_SET_READY;
|
*Control |= EFI_SERIAL_DATA_SET_READY;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Msr.Bits.RI) {
|
if (Msr.Bits.Ri == 1) {
|
||||||
*Control |= EFI_SERIAL_RING_INDICATE;
|
*Control |= EFI_SERIAL_RING_INDICATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Msr.Bits.DCD) {
|
if (Msr.Bits.Dcd == 1) {
|
||||||
*Control |= EFI_SERIAL_CARRIER_DETECT;
|
*Control |= EFI_SERIAL_CARRIER_DETECT;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
@ -1479,15 +1478,15 @@ IsaSerialGetControl (
|
|||||||
//
|
//
|
||||||
Mcr.Data = READ_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
Mcr.Data = READ_MCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
|
||||||
|
|
||||||
if (Mcr.Bits.DTRC) {
|
if (Mcr.Bits.DtrC == 1) {
|
||||||
*Control |= EFI_SERIAL_DATA_TERMINAL_READY;
|
*Control |= EFI_SERIAL_DATA_TERMINAL_READY;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Mcr.Bits.RTS) {
|
if (Mcr.Bits.Rts == 1) {
|
||||||
*Control |= EFI_SERIAL_REQUEST_TO_SEND;
|
*Control |= EFI_SERIAL_REQUEST_TO_SEND;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Mcr.Bits.LME) {
|
if (Mcr.Bits.Lme == 1) {
|
||||||
*Control |= EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE;
|
*Control |= EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1521,16 +1520,16 @@ IsaSerialGetControl (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Write the specified number of bytes to serial device
|
Write the specified number of bytes to serial device.
|
||||||
|
|
||||||
@param This - Pointer to EFI_SERIAL_IO_PROTOCOL
|
@param This Pointer to EFI_SERIAL_IO_PROTOCOL
|
||||||
@param BufferSize - On input the size of Buffer, on output the amount of
|
@param BufferSize On input the size of Buffer, on output the amount of
|
||||||
data actually written
|
data actually written
|
||||||
@param Buffer - The buffer of data to write
|
@param Buffer The buffer of data to write
|
||||||
|
|
||||||
@retval EFI_SUCCESS - The data were written successfully
|
@retval EFI_SUCCESS The data were written successfully
|
||||||
@retval EFI_DEVICE_ERROR - The device reported an error
|
@retval EFI_DEVICE_ERROR The device reported an error
|
||||||
@retval EFI_TIMEOUT - The write operation was stopped due to timeout
|
@retval EFI_TIMEOUT The write operation was stopped due to timeout
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
@ -1556,7 +1555,7 @@ IsaSerialWrite (
|
|||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Buffer) {
|
if (Buffer == NULL) {
|
||||||
REPORT_STATUS_CODE_WITH_DEVICE_PATH (
|
REPORT_STATUS_CODE_WITH_DEVICE_PATH (
|
||||||
EFI_ERROR_CODE,
|
EFI_ERROR_CODE,
|
||||||
EFI_P_EC_OUTPUT_ERROR | EFI_PERIPHERAL_SERIAL_PORT,
|
EFI_P_EC_OUTPUT_ERROR | EFI_PERIPHERAL_SERIAL_PORT,
|
||||||
@ -1602,16 +1601,16 @@ IsaSerialWrite (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Read the specified number of bytes from serial device
|
Read the specified number of bytes from serial device.
|
||||||
|
|
||||||
@param This - Pointer to EFI_SERIAL_IO_PROTOCOL
|
@param This Pointer to EFI_SERIAL_IO_PROTOCOL
|
||||||
@param BufferSize - On input the size of Buffer, on output the amount of
|
@param BufferSize On input the size of Buffer, on output the amount of
|
||||||
data returned in buffer
|
data returned in buffer
|
||||||
@param Buffer - The buffer to return the data into
|
@param Buffer The buffer to return the data into
|
||||||
|
|
||||||
@retval EFI_SUCCESS - The data were read successfully
|
@retval EFI_SUCCESS The data were read successfully
|
||||||
@retval EFI_DEVICE_ERROR - The device reported an error
|
@retval EFI_DEVICE_ERROR The device reported an error
|
||||||
@retval EFI_TIMEOUT - The read operation was stopped due to timeout
|
@retval EFI_TIMEOUT The read operation was stopped due to timeout
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
@ -1636,7 +1635,7 @@ IsaSerialRead (
|
|||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Buffer) {
|
if (Buffer == NULL) {
|
||||||
return EFI_DEVICE_ERROR;
|
return EFI_DEVICE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1696,9 +1695,9 @@ IsaSerialRead (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Use scratchpad register to test if this serial port is present
|
Use scratchpad register to test if this serial port is present.
|
||||||
|
|
||||||
@param SerialDevice - Pointer to serial device structure
|
@param SerialDevice Pointer to serial device structure
|
||||||
|
|
||||||
@return if this serial port is present
|
@return if this serial port is present
|
||||||
**/
|
**/
|
||||||
@ -1736,11 +1735,11 @@ IsaSerialPortPresent (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Use IsaIo protocol to read serial port
|
Use IsaIo protocol to read serial port.
|
||||||
|
|
||||||
@param IsaIo - Pointer to EFI_ISA_IO_PROTOCOL instance
|
@param IsaIo Pointer to EFI_ISA_IO_PROTOCOL instance
|
||||||
@param BaseAddress - Serial port register group base address
|
@param BaseAddress Serial port register group base address
|
||||||
@param Offset - Offset in register group
|
@param Offset Offset in register group
|
||||||
|
|
||||||
@return Data read from serial port
|
@return Data read from serial port
|
||||||
|
|
||||||
@ -1768,12 +1767,12 @@ IsaSerialReadPort (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Use IsaIo protocol to write serial port
|
Use IsaIo protocol to write serial port.
|
||||||
|
|
||||||
@param IsaIo - Pointer to EFI_ISA_IO_PROTOCOL instance
|
@param IsaIo Pointer to EFI_ISA_IO_PROTOCOL instance
|
||||||
@param BaseAddress - Serial port register group base address
|
@param BaseAddress Serial port register group base address
|
||||||
@param Offset - Offset in register group
|
@param Offset Offset in register group
|
||||||
@param Data - data which is to be written to some serial port register
|
@param Data data which is to be written to some serial port register
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
VOID
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/**@file
|
/** @file
|
||||||
Include for Serial Driver
|
Include for Serial Driver
|
||||||
|
|
||||||
Copyright (c) 2006 - 2007, Intel Corporation.<BR>
|
Copyright (c) 2006 - 2009, Intel Corporation.<BR>
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
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
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -12,8 +12,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
||||||
#ifndef _SERIAL_H
|
#ifndef _SERIAL_H_
|
||||||
#define _SERIAL_H
|
#define _SERIAL_H_
|
||||||
|
|
||||||
|
|
||||||
#include <PiDxe.h>
|
#include <PiDxe.h>
|
||||||
@ -33,6 +33,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
#include <Library/UefiBootServicesTableLib.h>
|
#include <Library/UefiBootServicesTableLib.h>
|
||||||
#include <Library/ReportStatusCodeLib.h>
|
#include <Library/ReportStatusCodeLib.h>
|
||||||
#include <Library/PcdLib.h>
|
#include <Library/PcdLib.h>
|
||||||
|
|
||||||
//
|
//
|
||||||
// Driver Binding Externs
|
// Driver Binding Externs
|
||||||
//
|
//
|
||||||
@ -65,10 +66,10 @@ typedef struct {
|
|||||||
} SERIAL_DEV_FIFO;
|
} SERIAL_DEV_FIFO;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
UART8250 = 0,
|
Uart8250 = 0,
|
||||||
UART16450 = 1,
|
Uart16450 = 1,
|
||||||
UART16550 = 2,
|
Uart16550 = 2,
|
||||||
UART16550A= 3
|
Uart16550A= 3
|
||||||
} EFI_UART_TYPE;
|
} EFI_UART_TYPE;
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -110,23 +111,13 @@ typedef struct {
|
|||||||
EFI_UNICODE_STRING_TABLE *ControllerNameTable;
|
EFI_UNICODE_STRING_TABLE *ControllerNameTable;
|
||||||
} SERIAL_DEV;
|
} SERIAL_DEV;
|
||||||
|
|
||||||
#include "ComponentName.h"
|
|
||||||
|
|
||||||
#define SERIAL_DEV_FROM_THIS(a) CR (a, SERIAL_DEV, SerialIo, SERIAL_DEV_SIGNATURE)
|
#define SERIAL_DEV_FROM_THIS(a) CR (a, SERIAL_DEV, SerialIo, SERIAL_DEV_SIGNATURE)
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Serial Driver Defaults
|
// Serial Driver Defaults
|
||||||
//
|
//
|
||||||
#define SERIAL_PORT_DEFAULT_RECEIVE_FIFO_DEPTH 1
|
#define SERIAL_PORT_DEFAULT_RECEIVE_FIFO_DEPTH 1
|
||||||
#define SERIAL_PORT_DEFAULT_TIMEOUT 1000000
|
#define SERIAL_PORT_DEFAULT_TIMEOUT 1000000
|
||||||
|
|
||||||
/*
|
|
||||||
#define SERIAL_PORT_DEFAULT_BAUD_RATE 115200
|
|
||||||
#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_DEFAULT_CONTROL_MASK 0
|
||||||
|
|
||||||
|
|
||||||
@ -165,17 +156,17 @@ typedef struct {
|
|||||||
// Purpose: Define each bit in Interrupt Enable Register
|
// Purpose: Define each bit in Interrupt Enable Register
|
||||||
// Context:
|
// Context:
|
||||||
// Fields:
|
// Fields:
|
||||||
// RAVIE Bit0: Receiver Data Available Interrupt Enable
|
// Ravie Bit0: Receiver Data Available Interrupt Enable
|
||||||
// THEIE Bit1: Transmistter Holding Register Empty Interrupt Enable
|
// Theie Bit1: Transmistter Holding Register Empty Interrupt Enable
|
||||||
// RIE Bit2: Receiver Interrupt Enable
|
// Rie Bit2: Receiver Interrupt Enable
|
||||||
// MIE Bit3: Modem Interrupt Enable
|
// Mie Bit3: Modem Interrupt Enable
|
||||||
// Reserved Bit4-Bit7: Reserved
|
// Reserved Bit4-Bit7: Reserved
|
||||||
//
|
//
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINT8 RAVIE : 1;
|
UINT8 Ravie : 1;
|
||||||
UINT8 THEIE : 1;
|
UINT8 Theie : 1;
|
||||||
UINT8 RIE : 1;
|
UINT8 Rie : 1;
|
||||||
UINT8 MIE : 1;
|
UINT8 Mie : 1;
|
||||||
UINT8 Reserved : 4;
|
UINT8 Reserved : 4;
|
||||||
} SERIAL_PORT_IER_BITS;
|
} SERIAL_PORT_IER_BITS;
|
||||||
|
|
||||||
@ -192,55 +183,25 @@ typedef union {
|
|||||||
UINT8 Data;
|
UINT8 Data;
|
||||||
} SERIAL_PORT_IER;
|
} 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
|
// Name: SERIAL_PORT_FCR_BITS
|
||||||
// Purpose: Define each bit in FIFO Control Register
|
// Purpose: Define each bit in FIFO Control Register
|
||||||
// Context:
|
// Context:
|
||||||
// Fields:
|
// Fields:
|
||||||
// TRFIFOE Bit0: Transmit and Receive FIFO Enable
|
// TrFIFOE Bit0: Transmit and Receive FIFO Enable
|
||||||
// RESETRF Bit1: Reset Reciever FIFO
|
// ResetRF Bit1: Reset Reciever FIFO
|
||||||
// RESETTF Bit2: Reset Transmistter FIFO
|
// ResetTF Bit2: Reset Transmistter FIFO
|
||||||
// DMS Bit3: DMA Mode Select
|
// Dms Bit3: DMA Mode Select
|
||||||
// Reserved Bit4-Bit5: Reserved
|
// Reserved Bit4-Bit5: Reserved
|
||||||
// RTB Bit6-Bit7: Receive Trigger Bits
|
// Rtb Bit6-Bit7: Receive Trigger Bits
|
||||||
//
|
//
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINT8 TRFIFOE : 1;
|
UINT8 TrFIFOE : 1;
|
||||||
UINT8 RESETRF : 1;
|
UINT8 ResetRF : 1;
|
||||||
UINT8 RESETTF : 1;
|
UINT8 ResetTF : 1;
|
||||||
UINT8 DMS : 1;
|
UINT8 Dms : 1;
|
||||||
UINT8 Reserved : 2;
|
UINT8 Reserved : 2;
|
||||||
UINT8 RTB : 2;
|
UINT8 Rtb : 2;
|
||||||
} SERIAL_PORT_FCR_BITS;
|
} SERIAL_PORT_FCR_BITS;
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -261,22 +222,22 @@ typedef union {
|
|||||||
// Purpose: Define each bit in Line Control Register
|
// Purpose: Define each bit in Line Control Register
|
||||||
// Context:
|
// Context:
|
||||||
// Fields:
|
// Fields:
|
||||||
// SERIALDB Bit0-Bit1: Number of Serial Data Bits
|
// SerialDB Bit0-Bit1: Number of Serial Data Bits
|
||||||
// STOPB Bit2: Number of Stop Bits
|
// StopB Bit2: Number of Stop Bits
|
||||||
// PAREN Bit3: Parity Enable
|
// ParEn Bit3: Parity Enable
|
||||||
// EVENPAR Bit4: Even Parity Select
|
// EvenPar Bit4: Even Parity Select
|
||||||
// STICPAR Bit5: Sticky Parity
|
// SticPar Bit5: Sticky Parity
|
||||||
// BRCON Bit6: Break Control
|
// BrCon Bit6: Break Control
|
||||||
// DLAB Bit7: Divisor Latch Access Bit
|
// DLab Bit7: Divisor Latch Access Bit
|
||||||
//
|
//
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINT8 SERIALDB : 2;
|
UINT8 SerialDB : 2;
|
||||||
UINT8 STOPB : 1;
|
UINT8 StopB : 1;
|
||||||
UINT8 PAREN : 1;
|
UINT8 ParEn : 1;
|
||||||
UINT8 EVENPAR : 1;
|
UINT8 EvenPar : 1;
|
||||||
UINT8 STICPAR : 1;
|
UINT8 SticPar : 1;
|
||||||
UINT8 BRCON : 1;
|
UINT8 BrCon : 1;
|
||||||
UINT8 DLAB : 1;
|
UINT8 DLab : 1;
|
||||||
} SERIAL_PORT_LCR_BITS;
|
} SERIAL_PORT_LCR_BITS;
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -297,19 +258,19 @@ typedef union {
|
|||||||
// Purpose: Define each bit in Modem Control Register
|
// Purpose: Define each bit in Modem Control Register
|
||||||
// Context:
|
// Context:
|
||||||
// Fields:
|
// Fields:
|
||||||
// DTRC Bit0: Data Terminal Ready Control
|
// DtrC Bit0: Data Terminal Ready Control
|
||||||
// RTS Bit1: Request To Send Control
|
// Rts Bit1: Request To Send Control
|
||||||
// OUT1 Bit2: Output1
|
// Out1 Bit2: Output1
|
||||||
// OUT2 Bit3: Output2, used to disable interrupt
|
// Out2 Bit3: Output2, used to disable interrupt
|
||||||
// LME; Bit4: Loopback Mode Enable
|
// Lme; Bit4: Loopback Mode Enable
|
||||||
// Reserved Bit5-Bit7: Reserved
|
// Reserved Bit5-Bit7: Reserved
|
||||||
//
|
//
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINT8 DTRC : 1;
|
UINT8 DtrC : 1;
|
||||||
UINT8 RTS : 1;
|
UINT8 Rts : 1;
|
||||||
UINT8 OUT1 : 1;
|
UINT8 Out1 : 1;
|
||||||
UINT8 OUT2 : 1;
|
UINT8 Out2 : 1;
|
||||||
UINT8 LME : 1;
|
UINT8 Lme : 1;
|
||||||
UINT8 Reserved : 3;
|
UINT8 Reserved : 3;
|
||||||
} SERIAL_PORT_MCR_BITS;
|
} SERIAL_PORT_MCR_BITS;
|
||||||
|
|
||||||
@ -331,24 +292,24 @@ typedef union {
|
|||||||
// Purpose: Define each bit in Line Status Register
|
// Purpose: Define each bit in Line Status Register
|
||||||
// Context:
|
// Context:
|
||||||
// Fields:
|
// Fields:
|
||||||
// DR Bit0: Receiver Data Ready Status
|
// Dr Bit0: Receiver Data Ready Status
|
||||||
// OE Bit1: Overrun Error Status
|
// Oe Bit1: Overrun Error Status
|
||||||
// PE Bit2: Parity Error Status
|
// Pe Bit2: Parity Error Status
|
||||||
// FE Bit3: Framing Error Status
|
// Fe Bit3: Framing Error Status
|
||||||
// BI Bit4: Break Interrupt Status
|
// Bi Bit4: Break Interrupt Status
|
||||||
// THRE Bit5: Transmistter Holding Register Status
|
// Thre Bit5: Transmistter Holding Register Status
|
||||||
// TEMT Bit6: Transmitter Empty Status
|
// Temt Bit6: Transmitter Empty Status
|
||||||
// FIFOE Bit7: FIFO Error Status
|
// FIFOe Bit7: FIFO Error Status
|
||||||
//
|
//
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINT8 DR : 1;
|
UINT8 Dr : 1;
|
||||||
UINT8 OE : 1;
|
UINT8 Oe : 1;
|
||||||
UINT8 PE : 1;
|
UINT8 Pe : 1;
|
||||||
UINT8 FE : 1;
|
UINT8 Fe : 1;
|
||||||
UINT8 BI : 1;
|
UINT8 Bi : 1;
|
||||||
UINT8 THRE : 1;
|
UINT8 Thre : 1;
|
||||||
UINT8 TEMT : 1;
|
UINT8 Temt : 1;
|
||||||
UINT8 FIFOE : 1;
|
UINT8 FIFOe : 1;
|
||||||
} SERIAL_PORT_LSR_BITS;
|
} SERIAL_PORT_LSR_BITS;
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -373,20 +334,20 @@ typedef union {
|
|||||||
// DeltaDSR Bit1: Delta Data Set Ready Status
|
// DeltaDSR Bit1: Delta Data Set Ready Status
|
||||||
// TrailingEdgeRI Bit2: Trailing Edge of Ring Indicator Status
|
// TrailingEdgeRI Bit2: Trailing Edge of Ring Indicator Status
|
||||||
// DeltaDCD Bit3: Delta Data Carrier Detect Status
|
// DeltaDCD Bit3: Delta Data Carrier Detect Status
|
||||||
// CTS Bit4: Clear To Send Status
|
// Cts Bit4: Clear To Send Status
|
||||||
// DSR Bit5: Data Set Ready Status
|
// Dsr Bit5: Data Set Ready Status
|
||||||
// RI Bit6: Ring Indicator Status
|
// Ri Bit6: Ring Indicator Status
|
||||||
// DCD Bit7: Data Carrier Detect Status
|
// Dcd Bit7: Data Carrier Detect Status
|
||||||
//
|
//
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINT8 DeltaCTS : 1;
|
UINT8 DeltaCTS : 1;
|
||||||
UINT8 DeltaDSR : 1;
|
UINT8 DeltaDSR : 1;
|
||||||
UINT8 TrailingEdgeRI : 1;
|
UINT8 TrailingEdgeRI : 1;
|
||||||
UINT8 DeltaDCD : 1;
|
UINT8 DeltaDCD : 1;
|
||||||
UINT8 CTS : 1;
|
UINT8 Cts : 1;
|
||||||
UINT8 DSR : 1;
|
UINT8 Dsr : 1;
|
||||||
UINT8 RI : 1;
|
UINT8 Ri : 1;
|
||||||
UINT8 DCD : 1;
|
UINT8 Dcd : 1;
|
||||||
} SERIAL_PORT_MSR_BITS;
|
} SERIAL_PORT_MSR_BITS;
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -432,7 +393,16 @@ typedef union {
|
|||||||
// Prototypes
|
// Prototypes
|
||||||
// Driver model protocol interface
|
// 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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
SerialControllerDriverSupported (
|
SerialControllerDriverSupported (
|
||||||
@ -441,6 +411,15 @@ SerialControllerDriverSupported (
|
|||||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
SerialControllerDriverStart (
|
SerialControllerDriverStart (
|
||||||
@ -449,6 +428,18 @@ SerialControllerDriverStart (
|
|||||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
SerialControllerDriverStop (
|
SerialControllerDriverStop (
|
||||||
@ -461,12 +452,38 @@ SerialControllerDriverStop (
|
|||||||
//
|
//
|
||||||
// Serial I/O Protocol Interface
|
// 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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IsaSerialReset (
|
IsaSerialReset (
|
||||||
IN EFI_SERIAL_IO_PROTOCOL *This
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IsaSerialSetAttributes (
|
IsaSerialSetAttributes (
|
||||||
@ -479,6 +496,16 @@ IsaSerialSetAttributes (
|
|||||||
IN EFI_STOP_BITS_TYPE StopBits
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IsaSerialSetControl (
|
IsaSerialSetControl (
|
||||||
@ -486,6 +513,15 @@ IsaSerialSetControl (
|
|||||||
IN UINT32 Control
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IsaSerialGetControl (
|
IsaSerialGetControl (
|
||||||
@ -493,6 +529,19 @@ IsaSerialGetControl (
|
|||||||
OUT UINT32 *Control
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IsaSerialWrite (
|
IsaSerialWrite (
|
||||||
@ -501,6 +550,19 @@ IsaSerialWrite (
|
|||||||
IN VOID *Buffer
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IsaSerialRead (
|
IsaSerialRead (
|
||||||
@ -512,38 +574,101 @@ IsaSerialRead (
|
|||||||
//
|
//
|
||||||
// Internal Functions
|
// 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
|
BOOLEAN
|
||||||
IsaSerialPortPresent (
|
IsaSerialPortPresent (
|
||||||
IN SERIAL_DEV *SerialDevice
|
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
|
BOOLEAN
|
||||||
IsaSerialFifoFull (
|
IsaSerialFifoFull (
|
||||||
IN SERIAL_DEV_FIFO *Fifo
|
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
|
BOOLEAN
|
||||||
IsaSerialFifoEmpty (
|
IsaSerialFifoEmpty (
|
||||||
IN SERIAL_DEV_FIFO *Fifo
|
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
|
EFI_STATUS
|
||||||
IsaSerialFifoAdd (
|
IsaSerialFifoAdd (
|
||||||
IN SERIAL_DEV_FIFO *Fifo,
|
IN SERIAL_DEV_FIFO *Fifo,
|
||||||
IN UINT8 Data
|
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
|
EFI_STATUS
|
||||||
IsaSerialFifoRemove (
|
IsaSerialFifoRemove (
|
||||||
IN SERIAL_DEV_FIFO *Fifo,
|
IN SERIAL_DEV_FIFO *Fifo,
|
||||||
OUT UINT8 *Data
|
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
|
EFI_STATUS
|
||||||
IsaSerialReceiveTransmit (
|
IsaSerialReceiveTransmit (
|
||||||
IN SERIAL_DEV *SerialDevice
|
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
|
UINT8
|
||||||
IsaSerialReadPort (
|
IsaSerialReadPort (
|
||||||
IN EFI_ISA_IO_PROTOCOL *IsaIo,
|
IN EFI_ISA_IO_PROTOCOL *IsaIo,
|
||||||
@ -551,6 +676,15 @@ IsaSerialReadPort (
|
|||||||
IN UINT32 Offset
|
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
|
VOID
|
||||||
IsaSerialWritePort (
|
IsaSerialWritePort (
|
||||||
IN EFI_ISA_IO_PROTOCOL *IsaIo,
|
IN EFI_ISA_IO_PROTOCOL *IsaIo,
|
||||||
@ -559,4 +693,148 @@ IsaSerialWritePort (
|
|||||||
IN UINT8 Data
|
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
|
#endif
|
||||||
|
@ -835,7 +835,7 @@ EFIAPI
|
|||||||
UefiDecompress (
|
UefiDecompress (
|
||||||
IN CONST VOID *Source,
|
IN CONST VOID *Source,
|
||||||
IN OUT VOID *Destination,
|
IN OUT VOID *Destination,
|
||||||
IN OUT VOID *Scratch
|
IN OUT VOID *Scratch OPTIONAL
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return UefiTianoDecompress (Source, Destination, Scratch, 1);
|
return UefiTianoDecompress (Source, Destination, Scratch, 1);
|
||||||
|
@ -808,7 +808,7 @@ CreateChildNode (
|
|||||||
// Make sure we initialize the new stream with the correct
|
// Make sure we initialize the new stream with the correct
|
||||||
// authentication status for both aggregate and local status fields.
|
// authentication status for both aggregate and local status fields.
|
||||||
//
|
//
|
||||||
if ((GuidedHeader->Attributes & EFI_GUIDED_SECTION_AUTH_STATUS_VALID) != 0) {
|
if ((GuidedHeader->Attributes & EFI_GUIDED_SECTION_AUTH_STATUS_VALID) == EFI_GUIDED_SECTION_AUTH_STATUS_VALID) {
|
||||||
//
|
//
|
||||||
// OR in the parent stream's aggregate status.
|
// OR in the parent stream's aggregate status.
|
||||||
//
|
//
|
||||||
@ -837,7 +837,7 @@ CreateChildNode (
|
|||||||
//
|
//
|
||||||
// There's no GUIDed section extraction protocol available.
|
// There's no GUIDed section extraction protocol available.
|
||||||
//
|
//
|
||||||
if ((GuidedHeader->Attributes & EFI_GUIDED_SECTION_PROCESSING_REQUIRED) != 0) {
|
if ((GuidedHeader->Attributes & EFI_GUIDED_SECTION_PROCESSING_REQUIRED) == EFI_GUIDED_SECTION_PROCESSING_REQUIRED) {
|
||||||
//
|
//
|
||||||
// If the section REQUIRES an extraction protocol, then we're toast
|
// If the section REQUIRES an extraction protocol, then we're toast
|
||||||
//
|
//
|
||||||
@ -849,7 +849,7 @@ CreateChildNode (
|
|||||||
// Figure out the proper authentication status
|
// Figure out the proper authentication status
|
||||||
//
|
//
|
||||||
AuthenticationStatus = Stream->AuthenticationStatus;
|
AuthenticationStatus = Stream->AuthenticationStatus;
|
||||||
if (GuidedHeader->Attributes & EFI_GUIDED_SECTION_AUTH_STATUS_VALID) {
|
if ((GuidedHeader->Attributes & EFI_GUIDED_SECTION_AUTH_STATUS_VALID) == EFI_GUIDED_SECTION_AUTH_STATUS_VALID) {
|
||||||
//
|
//
|
||||||
// The local status of the new stream is contained in
|
// The local status of the new stream is contained in
|
||||||
// AuthenticaionStatus. This value needs to be ORed into the
|
// AuthenticaionStatus. This value needs to be ORed into the
|
||||||
|
Reference in New Issue
Block a user