Import IsaSerialDxe in IntelFrameworkModulePkg.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3170 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
99bda0fd20
commit
637ff81988
|
@ -0,0 +1,226 @@
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved. <BR>
|
||||||
|
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:
|
||||||
|
|
||||||
|
ComponentName.c
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
|
||||||
|
--*/
|
||||||
|
|
||||||
|
#include "Serial.h"
|
||||||
|
|
||||||
|
//
|
||||||
|
// EFI Component Name Protocol
|
||||||
|
//
|
||||||
|
EFI_COMPONENT_NAME_PROTOCOL gIsaSerialComponentName = {
|
||||||
|
IsaSerialComponentNameGetDriverName,
|
||||||
|
IsaSerialComponentNameGetControllerName,
|
||||||
|
"eng"
|
||||||
|
};
|
||||||
|
|
||||||
|
STATIC EFI_UNICODE_STRING_TABLE mIsaSerialDriverNameTable[] = {
|
||||||
|
{
|
||||||
|
"eng",
|
||||||
|
L"ISA Serial Driver"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaSerialComponentNameGetDriverName (
|
||||||
|
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||||
|
IN CHAR8 *Language,
|
||||||
|
OUT CHAR16 **DriverName
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Retrieves a Unicode string that is the user readable name of the EFI Driver.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||||
|
Language - A pointer to a three character ISO 639-2 language identifier.
|
||||||
|
This is the language of the driver name that 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.
|
||||||
|
DriverName - 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.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_SUCCESS - The Unicode string for the Driver specified by This
|
||||||
|
and the language specified by Language was returned
|
||||||
|
in DriverName.
|
||||||
|
EFI_INVALID_PARAMETER - Language is NULL.
|
||||||
|
EFI_INVALID_PARAMETER - DriverName is NULL.
|
||||||
|
EFI_UNSUPPORTED - The driver specified by This does not support the
|
||||||
|
language specified by Language.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
{
|
||||||
|
return LookupUnicodeString (
|
||||||
|
Language,
|
||||||
|
gIsaSerialComponentName.SupportedLanguages,
|
||||||
|
mIsaSerialDriverNameTable,
|
||||||
|
DriverName
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Retrieves a Unicode string that is the user readable name of the controller
|
||||||
|
that is being managed by an EFI Driver.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||||
|
ControllerHandle - The handle of a controller that the driver specified by
|
||||||
|
This is managing. This handle specifies the controller
|
||||||
|
whose name is to be returned.
|
||||||
|
ChildHandle - 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.
|
||||||
|
Language - A pointer to a three character ISO 639-2 language
|
||||||
|
identifier. This is the language of the controller name
|
||||||
|
that 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.
|
||||||
|
ControllerName - 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.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
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.
|
||||||
|
EFI_INVALID_PARAMETER - ControllerHandle is not a valid EFI_HANDLE.
|
||||||
|
EFI_INVALID_PARAMETER - ChildHandle is not NULL and it is not a valid
|
||||||
|
EFI_HANDLE.
|
||||||
|
EFI_INVALID_PARAMETER - Language is NULL.
|
||||||
|
EFI_INVALID_PARAMETER - ControllerName is NULL.
|
||||||
|
EFI_UNSUPPORTED - The driver specified by This is not currently
|
||||||
|
managing the controller specified by
|
||||||
|
ControllerHandle and ChildHandle.
|
||||||
|
EFI_UNSUPPORTED - The driver specified by This does not support the
|
||||||
|
language specified by Language.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
EFI_SERIAL_IO_PROTOCOL *SerialIo;
|
||||||
|
SERIAL_DEV *SerialDevice;
|
||||||
|
|
||||||
|
//
|
||||||
|
// This is a device driver, so ChildHandle must be NULL.
|
||||||
|
//
|
||||||
|
if (ChildHandle != NULL) {
|
||||||
|
return EFI_UNSUPPORTED;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Make sure this driver is currently managing ControllerHandle
|
||||||
|
//
|
||||||
|
Status = EfiTestManagedDevice (
|
||||||
|
ControllerHandle,
|
||||||
|
gSerialControllerDriver.DriverBindingHandle,
|
||||||
|
&gEfiIsaIoProtocolGuid
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Get the Block I/O Protocol on Controller
|
||||||
|
//
|
||||||
|
Status = gBS->OpenProtocol (
|
||||||
|
ControllerHandle,
|
||||||
|
&gEfiSerialIoProtocolGuid,
|
||||||
|
(VOID **) &SerialIo,
|
||||||
|
gSerialControllerDriver.DriverBindingHandle,
|
||||||
|
ControllerHandle,
|
||||||
|
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Get the Serial Controller's Device structure
|
||||||
|
//
|
||||||
|
SerialDevice = SERIAL_DEV_FROM_THIS (SerialIo);
|
||||||
|
|
||||||
|
return LookupUnicodeString (
|
||||||
|
Language,
|
||||||
|
gIsaSerialComponentName.SupportedLanguages,
|
||||||
|
SerialDevice->ControllerNameTable,
|
||||||
|
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 or EFI_LIGHT_ISA_IO_PROTOCOL instance.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
--*/
|
||||||
|
{
|
||||||
|
CHAR16 SerialPortName[sizeof (SERIAL_PORT_NAME)];
|
||||||
|
|
||||||
|
StrCpy (SerialPortName, L"ISA Serial Port # ");
|
||||||
|
SerialPortName[sizeof (SERIAL_PORT_NAME) - 2] = (CHAR16) (L'0' + (UINT8) IsaIo->ResourceList->Device.UID);
|
||||||
|
AddUnicodeString (
|
||||||
|
"eng",
|
||||||
|
gIsaSerialComponentName.SupportedLanguages,
|
||||||
|
&SerialDevice->ControllerNameTable,
|
||||||
|
(CHAR16 *) SerialPortName
|
||||||
|
);
|
||||||
|
}
|
|
@ -0,0 +1,155 @@
|
||||||
|
/*++
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
ComponentName.h
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
|
||||||
|
|
||||||
|
Revision History:
|
||||||
|
|
||||||
|
--*/
|
||||||
|
|
||||||
|
#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;
|
||||||
|
|
||||||
|
//
|
||||||
|
// EFI Component Name Functions
|
||||||
|
//
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaSerialComponentNameGetDriverName (
|
||||||
|
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||||
|
IN CHAR8 *Language,
|
||||||
|
OUT CHAR16 **DriverName
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Retrieves a Unicode string that is the user readable name of the EFI Driver.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||||
|
Language - A pointer to a three character ISO 639-2 language identifier.
|
||||||
|
This is the language of the driver name that 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.
|
||||||
|
DriverName - 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.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_SUCCESS - The Unicode string for the Driver specified by This
|
||||||
|
and the language specified by Language was returned
|
||||||
|
in DriverName.
|
||||||
|
EFI_INVALID_PARAMETER - Language is NULL.
|
||||||
|
EFI_INVALID_PARAMETER - DriverName is NULL.
|
||||||
|
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
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Retrieves a Unicode string that is the user readable name of the controller
|
||||||
|
that is being managed by an EFI Driver.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||||
|
ControllerHandle - The handle of a controller that the driver specified by
|
||||||
|
This is managing. This handle specifies the controller
|
||||||
|
whose name is to be returned.
|
||||||
|
ChildHandle - 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.
|
||||||
|
Language - A pointer to a three character ISO 639-2 language
|
||||||
|
identifier. This is the language of the controller name
|
||||||
|
that 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.
|
||||||
|
ControllerName - 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.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
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.
|
||||||
|
EFI_INVALID_PARAMETER - ControllerHandle is not a valid EFI_HANDLE.
|
||||||
|
EFI_INVALID_PARAMETER - ChildHandle is not NULL and it is not a valid
|
||||||
|
EFI_HANDLE.
|
||||||
|
EFI_INVALID_PARAMETER - Language is NULL.
|
||||||
|
EFI_INVALID_PARAMETER - ControllerName is NULL.
|
||||||
|
EFI_UNSUPPORTED - The driver specified by This is not currently
|
||||||
|
managing the controller specified by
|
||||||
|
ControllerHandle and ChildHandle.
|
||||||
|
EFI_UNSUPPORTED - The driver specified by This does not support the
|
||||||
|
language specified by Language.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
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
|
|
@ -0,0 +1,111 @@
|
||||||
|
#/** @file
|
||||||
|
# Component description file for IsaSerial module.
|
||||||
|
#
|
||||||
|
# Serial driver for standard UARTS on an ISA bus.
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#**/
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Defines Section - statements that will be processed to create a Makefile.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
[Defines]
|
||||||
|
INF_VERSION = 0x00010005
|
||||||
|
BASE_NAME = IsaSerial
|
||||||
|
FILE_GUID = 93B80003-9FB3-11d4-9A3A-0090273FC14D
|
||||||
|
MODULE_TYPE = DXE_DRIVER
|
||||||
|
VERSION_STRING = 1.0
|
||||||
|
EDK_RELEASE_VERSION = 0x00020000
|
||||||
|
EFI_SPECIFICATION_VERSION = 0x00020000
|
||||||
|
|
||||||
|
ENTRY_POINT = InitializeIsaSerial
|
||||||
|
|
||||||
|
#
|
||||||
|
# The following information is for reference only and not required by the build tools.
|
||||||
|
#
|
||||||
|
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
|
||||||
|
#
|
||||||
|
# DRIVER_BINDING = gSerialControllerDriver
|
||||||
|
# COMPONENT_NAME = gIsaSerialComponentName
|
||||||
|
#
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Sources Section - list of files that are required for the build to succeed.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
[Sources.common]
|
||||||
|
ComponentName.c
|
||||||
|
ComponentName.h
|
||||||
|
serial.h
|
||||||
|
serial.c
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Package Dependency Section - list of Package files that are required for
|
||||||
|
# this module.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
[Packages]
|
||||||
|
MdePkg/MdePkg.dec
|
||||||
|
MdeModulePkg/MdeModulePkg.dec
|
||||||
|
IntelFrameworkPkg/IntelFrameworkPkg.dec
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Library Class Section - list of Library Classes that are required for
|
||||||
|
# this module.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
[LibraryClasses]
|
||||||
|
PcdLib
|
||||||
|
ReportStatusCodeLib
|
||||||
|
UefiBootServicesTableLib
|
||||||
|
MemoryAllocationLib
|
||||||
|
BaseMemoryLib
|
||||||
|
DevicePathLib
|
||||||
|
UefiLib
|
||||||
|
BaseLib
|
||||||
|
UefiDriverEntryPoint
|
||||||
|
DebugLib
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Protocol C Name Section - list of Protocol and Protocol Notify C Names
|
||||||
|
# that this module uses or produces.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
[Protocols]
|
||||||
|
gEfiIsaIoProtocolGuid # PROTOCOL TO_START
|
||||||
|
gEfiSerialIoProtocolGuid # PROTOCOL BY_START
|
||||||
|
gEfiDevicePathProtocolGuid # PROTOCOL TO_START
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Pcd FEATURE_FLAG - list of PCDs that this module is coded for.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
[PcdsFeatureFlag.common]
|
||||||
|
PcdNtEmulatorEnable|gEfiMdeModulePkgTokenSpaceGuid
|
||||||
|
|
|
@ -0,0 +1,97 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ModuleSurfaceArea xsi:schemaLocation="http://www.TianoCore.org/2006/Edk2.0 http://www.TianoCore.org/2006/Edk2.0/SurfaceArea.xsd" xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<MsaHeader>
|
||||||
|
<ModuleName>IsaSerial</ModuleName>
|
||||||
|
<ModuleType>DXE_DRIVER</ModuleType>
|
||||||
|
<GuidValue>93B80003-9FB3-11d4-9A3A-0090273FC14D</GuidValue>
|
||||||
|
<Version>1.0</Version>
|
||||||
|
<Abstract>Component description file for IsaSerial module.</Abstract>
|
||||||
|
<Description>Serial driver for standard UARTS on an ISA bus.</Description>
|
||||||
|
<Copyright>Copyright (c) 2006 - 2007, Intel Corporation.</Copyright>
|
||||||
|
<License>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.</License>
|
||||||
|
<Specification>FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052</Specification>
|
||||||
|
</MsaHeader>
|
||||||
|
<ModuleDefinitions>
|
||||||
|
<SupportedArchitectures>IA32 X64 IPF EBC</SupportedArchitectures>
|
||||||
|
<BinaryModule>false</BinaryModule>
|
||||||
|
<OutputFileBasename>IsaSerial</OutputFileBasename>
|
||||||
|
</ModuleDefinitions>
|
||||||
|
<LibraryClassDefinitions>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>DebugLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>UefiDriverModelLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>UefiDriverEntryPoint</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>BaseLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>UefiLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>DevicePathLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>BaseMemoryLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>MemoryAllocationLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>UefiBootServicesTableLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>ReportStatusCodeLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>PcdLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
</LibraryClassDefinitions>
|
||||||
|
<SourceFiles>
|
||||||
|
<Filename>serial.c</Filename>
|
||||||
|
<Filename>serial.h</Filename>
|
||||||
|
<Filename>ComponentName.h</Filename>
|
||||||
|
<Filename>ComponentName.c</Filename>
|
||||||
|
</SourceFiles>
|
||||||
|
<PackageDependencies>
|
||||||
|
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
||||||
|
<Package PackageGuid="68169ab0-d41b-4009-9060-292c253ac43d"/>
|
||||||
|
</PackageDependencies>
|
||||||
|
<Protocols>
|
||||||
|
<Protocol Usage="TO_START">
|
||||||
|
<ProtocolCName>gEfiDevicePathProtocolGuid</ProtocolCName>
|
||||||
|
</Protocol>
|
||||||
|
<Protocol Usage="BY_START">
|
||||||
|
<ProtocolCName>gEfiSerialIoProtocolGuid</ProtocolCName>
|
||||||
|
</Protocol>
|
||||||
|
<Protocol Usage="TO_START">
|
||||||
|
<ProtocolCName>gEfiIsaIoProtocolGuid</ProtocolCName>
|
||||||
|
</Protocol>
|
||||||
|
</Protocols>
|
||||||
|
<Externs>
|
||||||
|
<Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>
|
||||||
|
<Specification>EDK_RELEASE_VERSION 0x00020000</Specification>
|
||||||
|
<Extern>
|
||||||
|
<DriverBinding>gSerialControllerDriver</DriverBinding>
|
||||||
|
<ComponentName>gIsaSerialComponentName</ComponentName>
|
||||||
|
</Extern>
|
||||||
|
</Externs>
|
||||||
|
<PcdCoded>
|
||||||
|
<PcdEntry PcdItemType="FEATURE_FLAG" Usage="ALWAYS_CONSUMED">
|
||||||
|
<C_Name>PcdNtEmulatorEnable</C_Name>
|
||||||
|
<TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
|
||||||
|
<HelpText>If this PCD is set as TRUE, NT emulator will be endabled.</HelpText>
|
||||||
|
</PcdEntry>
|
||||||
|
</PcdCoded>
|
||||||
|
</ModuleSurfaceArea>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,577 @@
|
||||||
|
/*++
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
|
||||||
|
Include for Serial Driver
|
||||||
|
|
||||||
|
Revision History:
|
||||||
|
|
||||||
|
--*/
|
||||||
|
|
||||||
|
#ifndef _SERIAL_H
|
||||||
|
#define _SERIAL_H
|
||||||
|
|
||||||
|
//
|
||||||
|
// The package level header files this module uses
|
||||||
|
//
|
||||||
|
#include <PiDxe.h>
|
||||||
|
#include <FrameworkPei.h>
|
||||||
|
//
|
||||||
|
// The protocols, PPI and GUID defintions for this module
|
||||||
|
//
|
||||||
|
#include <Protocol/IsaIo.h>
|
||||||
|
#include <Protocol/SerialIo.h>
|
||||||
|
#include <Protocol/DevicePath.h>
|
||||||
|
//
|
||||||
|
// The Library classes this module consumes
|
||||||
|
//
|
||||||
|
#include <Library/DebugLib.h>
|
||||||
|
#include <Library/UefiDriverEntryPoint.h>
|
||||||
|
#include <Library/BaseLib.h>
|
||||||
|
#include <Library/UefiLib.h>
|
||||||
|
#include <Library/DevicePathLib.h>
|
||||||
|
#include <Library/BaseMemoryLib.h>
|
||||||
|
#include <Library/MemoryAllocationLib.h>
|
||||||
|
#include <Library/UefiBootServicesTableLib.h>
|
||||||
|
#include <Library/ReportStatusCodeLib.h>
|
||||||
|
#include <Library/PcdLib.h>
|
||||||
|
//
|
||||||
|
// Driver Binding Externs
|
||||||
|
//
|
||||||
|
extern EFI_DRIVER_BINDING_PROTOCOL gSerialControllerDriver;
|
||||||
|
extern EFI_COMPONENT_NAME_PROTOCOL gIsaSerialComponentName;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Internal Data Structures
|
||||||
|
//
|
||||||
|
#define SERIAL_DEV_SIGNATURE EFI_SIGNATURE_32 ('s', 'e', 'r', 'd')
|
||||||
|
#define SERIAL_MAX_BUFFER_SIZE 16
|
||||||
|
#define TIMEOUT_STALL_INTERVAL 10
|
||||||
|
|
||||||
|
//
|
||||||
|
// Name: SERIAL_DEV_FIFO
|
||||||
|
// Purpose: To define Receive FIFO and Transmit FIFO
|
||||||
|
// Context: Used by serial data transmit and receive
|
||||||
|
// Fields:
|
||||||
|
// First UINT32: The index of the first data in array Data[]
|
||||||
|
// Last UINT32: The index, which you can put a new data into array Data[]
|
||||||
|
// Surplus UINT32: Identify how many data you can put into array Data[]
|
||||||
|
// Data[] UINT8 : An array, which used to store data
|
||||||
|
//
|
||||||
|
typedef struct {
|
||||||
|
UINT32 First;
|
||||||
|
UINT32 Last;
|
||||||
|
UINT32 Surplus;
|
||||||
|
UINT8 Data[SERIAL_MAX_BUFFER_SIZE];
|
||||||
|
} SERIAL_DEV_FIFO;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
UART8250 = 0,
|
||||||
|
UART16450 = 1,
|
||||||
|
UART16550 = 2,
|
||||||
|
UART16550A= 3
|
||||||
|
} EFI_UART_TYPE;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Name: SERIAL_DEV
|
||||||
|
// Purpose: To provide device specific information
|
||||||
|
// Context:
|
||||||
|
// Fields:
|
||||||
|
// Signature UINTN: The identity of the serial device
|
||||||
|
// SerialIo SERIAL_IO_PROTOCOL: Serial I/O protocol interface
|
||||||
|
// SerialMode SERIAL_IO_MODE:
|
||||||
|
// DevicePath EFI_DEVICE_PATH_PROTOCOL *: Device path of the serial device
|
||||||
|
// Handle EFI_HANDLE: The handle instance attached to serial device
|
||||||
|
// BaseAddress UINT16: The base address of specific serial device
|
||||||
|
// Receive SERIAL_DEV_FIFO: The FIFO used to store data,
|
||||||
|
// which is received by UART
|
||||||
|
// Transmit SERIAL_DEV_FIFO: The FIFO used to store data,
|
||||||
|
// which you want to transmit by UART
|
||||||
|
// SoftwareLoopbackEnable BOOLEAN:
|
||||||
|
// Type EFI_UART_TYPE: Specify the UART type of certain serial device
|
||||||
|
//
|
||||||
|
typedef struct {
|
||||||
|
UINTN Signature;
|
||||||
|
|
||||||
|
EFI_HANDLE Handle;
|
||||||
|
EFI_SERIAL_IO_PROTOCOL SerialIo;
|
||||||
|
EFI_SERIAL_IO_MODE SerialMode;
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||||
|
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;
|
||||||
|
UART_DEVICE_PATH UartDevicePath;
|
||||||
|
EFI_ISA_IO_PROTOCOL *IsaIo;
|
||||||
|
|
||||||
|
UINT16 BaseAddress;
|
||||||
|
SERIAL_DEV_FIFO Receive;
|
||||||
|
SERIAL_DEV_FIFO Transmit;
|
||||||
|
BOOLEAN SoftwareLoopbackEnable;
|
||||||
|
BOOLEAN HardwareFlowControl;
|
||||||
|
EFI_UART_TYPE Type;
|
||||||
|
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
|
||||||
|
|
||||||
|
//
|
||||||
|
// (24000000/13)MHz input clock
|
||||||
|
//
|
||||||
|
#define SERIAL_PORT_INPUT_CLOCK 1843200
|
||||||
|
|
||||||
|
//
|
||||||
|
// 115200 baud with rounding errors
|
||||||
|
//
|
||||||
|
#define SERIAL_PORT_MAX_BAUD_RATE 115400
|
||||||
|
#define SERIAL_PORT_MIN_BAUD_RATE 50
|
||||||
|
|
||||||
|
#define SERIAL_PORT_MAX_RECEIVE_FIFO_DEPTH 16
|
||||||
|
#define SERIAL_PORT_MIN_TIMEOUT 1 // 1 uS
|
||||||
|
#define SERIAL_PORT_MAX_TIMEOUT 100000000 // 100 seconds
|
||||||
|
//
|
||||||
|
// UART Registers
|
||||||
|
//
|
||||||
|
#define SERIAL_REGISTER_THR 0 // WO Transmit Holding Register
|
||||||
|
#define SERIAL_REGISTER_RBR 0 // RO Receive Buffer Register
|
||||||
|
#define SERIAL_REGISTER_DLL 0 // R/W Divisor Latch LSB
|
||||||
|
#define SERIAL_REGISTER_DLM 1 // R/W Divisor Latch MSB
|
||||||
|
#define SERIAL_REGISTER_IER 1 // R/W Interrupt Enable Register
|
||||||
|
#define SERIAL_REGISTER_IIR 2 // RO Interrupt Identification Register
|
||||||
|
#define SERIAL_REGISTER_FCR 2 // WO FIFO Cotrol Register
|
||||||
|
#define SERIAL_REGISTER_LCR 3 // R/W Line Control Register
|
||||||
|
#define SERIAL_REGISTER_MCR 4 // R/W Modem Control Register
|
||||||
|
#define SERIAL_REGISTER_LSR 5 // R/W Line Status Register
|
||||||
|
#define SERIAL_REGISTER_MSR 6 // R/W Modem Status Register
|
||||||
|
#define SERIAL_REGISTER_SCR 7 // R/W Scratch Pad Register
|
||||||
|
#pragma pack(1)
|
||||||
|
//
|
||||||
|
// Name: SERIAL_PORT_IER_BITS
|
||||||
|
// 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
|
||||||
|
// Reserved Bit4-Bit7: Reserved
|
||||||
|
//
|
||||||
|
typedef struct {
|
||||||
|
UINT8 RAVIE : 1;
|
||||||
|
UINT8 THEIE : 1;
|
||||||
|
UINT8 RIE : 1;
|
||||||
|
UINT8 MIE : 1;
|
||||||
|
UINT8 Reserved : 4;
|
||||||
|
} SERIAL_PORT_IER_BITS;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Name: SERIAL_PORT_IER
|
||||||
|
// Purpose:
|
||||||
|
// Context:
|
||||||
|
// Fields:
|
||||||
|
// Bits SERIAL_PORT_IER_BITS: Bits of the IER
|
||||||
|
// Data UINT8: the value of the IER
|
||||||
|
//
|
||||||
|
typedef union {
|
||||||
|
SERIAL_PORT_IER_BITS Bits;
|
||||||
|
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
|
||||||
|
// Reserved Bit4-Bit5: Reserved
|
||||||
|
// RTB Bit6-Bit7: Receive Trigger Bits
|
||||||
|
//
|
||||||
|
typedef struct {
|
||||||
|
UINT8 TRFIFOE : 1;
|
||||||
|
UINT8 RESETRF : 1;
|
||||||
|
UINT8 RESETTF : 1;
|
||||||
|
UINT8 DMS : 1;
|
||||||
|
UINT8 Reserved : 2;
|
||||||
|
UINT8 RTB : 2;
|
||||||
|
} SERIAL_PORT_FCR_BITS;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Name: SERIAL_PORT_FCR
|
||||||
|
// Purpose:
|
||||||
|
// Context:
|
||||||
|
// Fields:
|
||||||
|
// Bits SERIAL_PORT_FCR_BITS: Bits of the FCR
|
||||||
|
// Data UINT8: the value of the FCR
|
||||||
|
//
|
||||||
|
typedef union {
|
||||||
|
SERIAL_PORT_FCR_BITS Bits;
|
||||||
|
UINT8 Data;
|
||||||
|
} SERIAL_PORT_FCR;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Name: SERIAL_PORT_LCR_BITS
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
typedef struct {
|
||||||
|
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;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Name: SERIAL_PORT_LCR
|
||||||
|
// Purpose:
|
||||||
|
// Context:
|
||||||
|
// Fields:
|
||||||
|
// Bits SERIAL_PORT_LCR_BITS: Bits of the LCR
|
||||||
|
// Data UINT8: the value of the LCR
|
||||||
|
//
|
||||||
|
typedef union {
|
||||||
|
SERIAL_PORT_LCR_BITS Bits;
|
||||||
|
UINT8 Data;
|
||||||
|
} SERIAL_PORT_LCR;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Name: SERIAL_PORT_MCR_BITS
|
||||||
|
// 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
|
||||||
|
// Reserved Bit5-Bit7: Reserved
|
||||||
|
//
|
||||||
|
typedef struct {
|
||||||
|
UINT8 DTRC : 1;
|
||||||
|
UINT8 RTS : 1;
|
||||||
|
UINT8 OUT1 : 1;
|
||||||
|
UINT8 OUT2 : 1;
|
||||||
|
UINT8 LME : 1;
|
||||||
|
UINT8 Reserved : 3;
|
||||||
|
} SERIAL_PORT_MCR_BITS;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Name: SERIAL_PORT_MCR
|
||||||
|
// Purpose:
|
||||||
|
// Context:
|
||||||
|
// Fields:
|
||||||
|
// Bits SERIAL_PORT_MCR_BITS: Bits of the MCR
|
||||||
|
// Data UINT8: the value of the MCR
|
||||||
|
//
|
||||||
|
typedef union {
|
||||||
|
SERIAL_PORT_MCR_BITS Bits;
|
||||||
|
UINT8 Data;
|
||||||
|
} SERIAL_PORT_MCR;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Name: SERIAL_PORT_LSR_BITS
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
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;
|
||||||
|
} SERIAL_PORT_LSR_BITS;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Name: SERIAL_PORT_LSR
|
||||||
|
// Purpose:
|
||||||
|
// Context:
|
||||||
|
// Fields:
|
||||||
|
// Bits SERIAL_PORT_LSR_BITS: Bits of the LSR
|
||||||
|
// Data UINT8: the value of the LSR
|
||||||
|
//
|
||||||
|
typedef union {
|
||||||
|
SERIAL_PORT_LSR_BITS Bits;
|
||||||
|
UINT8 Data;
|
||||||
|
} SERIAL_PORT_LSR;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Name: SERIAL_PORT_MSR_BITS
|
||||||
|
// Purpose: Define each bit in Modem Status Register
|
||||||
|
// Context:
|
||||||
|
// Fields:
|
||||||
|
// DeltaCTS Bit0: Delta Clear To Send Status
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
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;
|
||||||
|
} SERIAL_PORT_MSR_BITS;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Name: SERIAL_PORT_MSR
|
||||||
|
// Purpose:
|
||||||
|
// Context:
|
||||||
|
// Fields:
|
||||||
|
// Bits SERIAL_PORT_MSR_BITS: Bits of the MSR
|
||||||
|
// Data UINT8: the value of the MSR
|
||||||
|
//
|
||||||
|
typedef union {
|
||||||
|
SERIAL_PORT_MSR_BITS Bits;
|
||||||
|
UINT8 Data;
|
||||||
|
} SERIAL_PORT_MSR;
|
||||||
|
|
||||||
|
#pragma pack()
|
||||||
|
//
|
||||||
|
// Define serial register I/O macros
|
||||||
|
//
|
||||||
|
#define READ_RBR(IO, B) IsaSerialReadPort (IO, B, SERIAL_REGISTER_RBR)
|
||||||
|
#define READ_DLL(IO, B) IsaSerialReadPort (IO, B, SERIAL_REGISTER_DLL)
|
||||||
|
#define READ_DLM(IO, B) IsaSerialReadPort (IO, B, SERIAL_REGISTER_DLM)
|
||||||
|
#define READ_IER(IO, B) IsaSerialReadPort (IO, B, SERIAL_REGISTER_IER)
|
||||||
|
#define READ_IIR(IO, B) IsaSerialReadPort (IO, B, SERIAL_REGISTER_IIR)
|
||||||
|
#define READ_LCR(IO, B) IsaSerialReadPort (IO, B, SERIAL_REGISTER_LCR)
|
||||||
|
#define READ_MCR(IO, B) IsaSerialReadPort (IO, B, SERIAL_REGISTER_MCR)
|
||||||
|
#define READ_LSR(IO, B) IsaSerialReadPort (IO, B, SERIAL_REGISTER_LSR)
|
||||||
|
#define READ_MSR(IO, B) IsaSerialReadPort (IO, B, SERIAL_REGISTER_MSR)
|
||||||
|
#define READ_SCR(IO, B) IsaSerialReadPort (IO, B, SERIAL_REGISTER_SCR)
|
||||||
|
|
||||||
|
#define WRITE_THR(IO, B, D) IsaSerialWritePort (IO, B, SERIAL_REGISTER_THR, D)
|
||||||
|
#define WRITE_DLL(IO, B, D) IsaSerialWritePort (IO, B, SERIAL_REGISTER_DLL, D)
|
||||||
|
#define WRITE_DLM(IO, B, D) IsaSerialWritePort (IO, B, SERIAL_REGISTER_DLM, D)
|
||||||
|
#define WRITE_IER(IO, B, D) IsaSerialWritePort (IO, B, SERIAL_REGISTER_IER, D)
|
||||||
|
#define WRITE_FCR(IO, B, D) IsaSerialWritePort (IO, B, SERIAL_REGISTER_FCR, D)
|
||||||
|
#define WRITE_LCR(IO, B, D) IsaSerialWritePort (IO, B, SERIAL_REGISTER_LCR, D)
|
||||||
|
#define WRITE_MCR(IO, B, D) IsaSerialWritePort (IO, B, SERIAL_REGISTER_MCR, D)
|
||||||
|
#define WRITE_LSR(IO, B, D) IsaSerialWritePort (IO, B, SERIAL_REGISTER_LSR, D)
|
||||||
|
#define WRITE_MSR(IO, B, D) IsaSerialWritePort (IO, B, SERIAL_REGISTER_MSR, D)
|
||||||
|
#define WRITE_SCR(IO, B, D) IsaSerialWritePort (IO, B, SERIAL_REGISTER_SCR, D)
|
||||||
|
|
||||||
|
//
|
||||||
|
// Prototypes
|
||||||
|
// Driver model protocol interface
|
||||||
|
//
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
SerialControllerDriverSupported (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE Controller,
|
||||||
|
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
SerialControllerDriverStart (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE Controller,
|
||||||
|
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
SerialControllerDriverStop (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE Controller,
|
||||||
|
IN UINTN NumberOfChildren,
|
||||||
|
IN EFI_HANDLE *ChildHandleBuffer
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Serial I/O Protocol Interface
|
||||||
|
//
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaSerialReset (
|
||||||
|
IN EFI_SERIAL_IO_PROTOCOL *This
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaSerialSetAttributes (
|
||||||
|
IN EFI_SERIAL_IO_PROTOCOL *This,
|
||||||
|
IN UINT64 BaudRate,
|
||||||
|
IN UINT32 ReceiveFifoDepth,
|
||||||
|
IN UINT32 Timeout,
|
||||||
|
IN EFI_PARITY_TYPE Parity,
|
||||||
|
IN UINT8 DataBits,
|
||||||
|
IN EFI_STOP_BITS_TYPE StopBits
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaSerialSetControl (
|
||||||
|
IN EFI_SERIAL_IO_PROTOCOL *This,
|
||||||
|
IN UINT32 Control
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaSerialGetControl (
|
||||||
|
IN EFI_SERIAL_IO_PROTOCOL *This,
|
||||||
|
OUT UINT32 *Control
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaSerialWrite (
|
||||||
|
IN EFI_SERIAL_IO_PROTOCOL *This,
|
||||||
|
IN OUT UINTN *BufferSize,
|
||||||
|
IN VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaSerialRead (
|
||||||
|
IN EFI_SERIAL_IO_PROTOCOL *This,
|
||||||
|
IN OUT UINTN *BufferSize,
|
||||||
|
OUT VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Internal Functions
|
||||||
|
//
|
||||||
|
BOOLEAN
|
||||||
|
IsaSerialPortPresent (
|
||||||
|
IN SERIAL_DEV *SerialDevice
|
||||||
|
);
|
||||||
|
|
||||||
|
BOOLEAN
|
||||||
|
IsaSerialFifoFull (
|
||||||
|
IN SERIAL_DEV_FIFO *Fifo
|
||||||
|
);
|
||||||
|
|
||||||
|
BOOLEAN
|
||||||
|
IsaSerialFifoEmpty (
|
||||||
|
IN SERIAL_DEV_FIFO *Fifo
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
IsaSerialFifoAdd (
|
||||||
|
IN SERIAL_DEV_FIFO *Fifo,
|
||||||
|
IN UINT8 Data
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
IsaSerialFifoRemove (
|
||||||
|
IN SERIAL_DEV_FIFO *Fifo,
|
||||||
|
OUT UINT8 *Data
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
IsaSerialReceiveTransmit (
|
||||||
|
IN SERIAL_DEV *SerialDevice
|
||||||
|
);
|
||||||
|
|
||||||
|
UINT8
|
||||||
|
IsaSerialReadPort (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *IsaIo,
|
||||||
|
IN UINT16 BaseAddress,
|
||||||
|
IN UINT32 Offset
|
||||||
|
);
|
||||||
|
|
||||||
|
VOID
|
||||||
|
IsaSerialWritePort (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *IsaIo,
|
||||||
|
IN UINT16 BaseAddress,
|
||||||
|
IN UINT32 Offset,
|
||||||
|
IN UINT8 Data
|
||||||
|
);
|
||||||
|
|
||||||
|
#endif
|
|
@ -136,6 +136,7 @@
|
||||||
PcdIsaBusSupportDma|gEfiIntelFrameworkModulePkgTokenSpaceGuid|TRUE
|
PcdIsaBusSupportDma|gEfiIntelFrameworkModulePkgTokenSpaceGuid|TRUE
|
||||||
PcdIsaBusOnlySupportSlaveDma|gEfiIntelFrameworkModulePkgTokenSpaceGuid|FALSE
|
PcdIsaBusOnlySupportSlaveDma|gEfiIntelFrameworkModulePkgTokenSpaceGuid|FALSE
|
||||||
PcdIsaBusSupportIsaMemory|gEfiIntelFrameworkModulePkgTokenSpaceGuid|TRUE
|
PcdIsaBusSupportIsaMemory|gEfiIntelFrameworkModulePkgTokenSpaceGuid|TRUE
|
||||||
|
PcdNtEmulatorEnable|gEfiMdeModulePkgTokenSpaceGuid|FALSE
|
||||||
|
|
||||||
[PcdsFixedAtBuild.common]
|
[PcdsFixedAtBuild.common]
|
||||||
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
|
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
|
||||||
|
@ -178,6 +179,7 @@
|
||||||
$(WORKSPACE)/IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/IsaBus.inf
|
$(WORKSPACE)/IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/IsaBus.inf
|
||||||
$(WORKSPACE)/IntelFrameworkModulePkg/Bus/Isa/IsaFloppy/Dxe/IsaFloppy.inf
|
$(WORKSPACE)/IntelFrameworkModulePkg/Bus/Isa/IsaFloppy/Dxe/IsaFloppy.inf
|
||||||
$(WORKSPACE)/IntelFrameworkModulePkg/Bus/Isa/IsaFloppy/Pei/FloppyPeim.inf
|
$(WORKSPACE)/IntelFrameworkModulePkg/Bus/Isa/IsaFloppy/Pei/FloppyPeim.inf
|
||||||
|
$(WORKSPACE)/IntelFrameworkModulePkg/Bus/Isa/IsaSerialDxe/IsaSerial.inf
|
||||||
$(WORKSPACE)/IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2keyboard.inf
|
$(WORKSPACE)/IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2keyboard.inf
|
||||||
$(WORKSPACE)/IntelFrameworkModulePkg/Bus/Isa/Ps2MouseDxe/Ps2Mouse.inf
|
$(WORKSPACE)/IntelFrameworkModulePkg/Bus/Isa/Ps2MouseDxe/Ps2Mouse.inf
|
||||||
$(WORKSPACE)/IntelFrameworkModulePkg/Universal/DataHub/DataHub/Dxe/DataHub.inf
|
$(WORKSPACE)/IntelFrameworkModulePkg/Universal/DataHub/DataHub/Dxe/DataHub.inf
|
||||||
|
|
Loading…
Reference in New Issue