OVFM Maintainers please review: This library adds a SerialPort library instance that outputs to QEMU IO Port. It does not support input. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Andrew Fish <[email protected]> Does the QEMU Debug IO Port support input or is it just output? Thanks, Andrew Fish |
BaseSerialPortLibIoPort.patch
Description: Binary data
~/work/src/edk2(master)>git diff --cache error: invalid option: --cache ~/work/src/edk2(master)>git diff --cached diff --git a/OvmfPkg/Library/BaseSerialPortLibIoPort/BaseSerialPortLibIoPort.c b/OvmfPkg/Library/BaseSerialPortLibIoPort/BaseSerialPortLibIoPort.c new file mode 100644 index 0000000..5cf6742 --- /dev/null +++ b/OvmfPkg/Library/BaseSerialPortLibIoPort/BaseSerialPortLibIoPort.c @@ -0,0 +1,129 @@ +/** @file + Serial Port library instance that outputs to the QEMU debug port. + + This lib does not supoprt input, only output. + + Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR> + Copyright (c) 2012, Red Hat, Inc.<BR> + Portions Copyright (c) 2014, Apple Inc.<BR> + 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 + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + + +#include <Base.h> +#include <Library/SerialPortLib.h> +#include <Library/IoLib.h> +#include <Library/PcdLib.h> + +/** + Initialize the serial device hardware. + + If no initialization is required, then return RETURN_SUCCESS. + If the serial device was successfully initialized, then return RETURN_SUCCESS. + If the serial device could not be initialized, then return RETURN_DEVICE_ERROR. + + @retval RETURN_SUCCESS The serial device was initialized. + @retval RETURN_DEVICE_ERROR The serial device could not be initialized. + +**/ +RETURN_STATUS +EFIAPI +SerialPortInitialize ( + VOID + ) +{ + return RETURN_SUCCESS; +} + +/** + Write data from buffer to serial device. + + Writes NumberOfBytes data bytes from Buffer to the serial device. + The number of bytes actually written to the serial device is returned. + If the return value is less than NumberOfBytes, then the write operation failed. + If Buffer is NULL, then ASSERT(). + If NumberOfBytes is zero, then return 0. + + @param Buffer The pointer to the data buffer to be written. + @param NumberOfBytes The number of bytes to written to the serial device. + + @retval 0 NumberOfBytes is 0. + @retval >0 The number of bytes written to the serial device. + If this value is less than NumberOfBytes, then the read operation failed. + +**/ +UINTN +EFIAPI +SerialPortWrite ( + IN UINT8 *Buffer, + IN UINTN NumberOfBytes + ) +{ + UINTN Result; + + if (Buffer == NULL) { + return 0; + } + + Result = NumberOfBytes; + while ((NumberOfBytes--) != 0) { + IoWrite8 (PcdGet16(PcdDebugIoPort), *Buffer++); + } + + return Result; +} + + +/** + Read data from serial device and save the datas in buffer. + + Reads NumberOfBytes data bytes from a serial device into the buffer + specified by Buffer. The number of bytes actually read is returned. + If the return value is less than NumberOfBytes, then the rest operation failed. + If Buffer is NULL, then ASSERT(). + If NumberOfBytes is zero, then return 0. + + @param Buffer The pointer to the data buffer to store the data read from the serial device. + @param NumberOfBytes The number of bytes which will be read. + + @retval 0 Read data failed; No data is to be read. + @retval >0 The actual number of bytes read from serial device. + +**/ +UINTN +EFIAPI +SerialPortRead ( + OUT UINT8 *Buffer, + IN UINTN NumberOfBytes +) +{ + return 0; +} + +/** + Polls a serial device to see if there is any data waiting to be read. + + Polls a serial device to see if there is any data waiting to be read. + If there is data waiting to be read from the serial device, then TRUE is returned. + If there is no data waiting to be read from the serial device, then FALSE is returned. + + @retval TRUE Data is waiting to be read from the serial device. + @retval FALSE There is no data waiting to be read from the serial device. + +**/ +BOOLEAN +EFIAPI +SerialPortPoll ( + VOID + ) +{ + return FALSE; +} + diff --git a/OvmfPkg/Library/BaseSerialPortLibIoPort/BaseSerialPortLibIoPort.inf b/OvmfPkg/Library/BaseSerialPortLibIoPort/BaseSerialPortLibIoPort.inf new file mode 100644 index 0000000..7a66e09 --- /dev/null +++ b/OvmfPkg/Library/BaseSerialPortLibIoPort/BaseSerialPortLibIoPort.inf @@ -0,0 +1,46 @@ +## @file +# Serial Port library instance that outputs to the QEMU debug port. +# +# This lib does not supoprt input, only output. +# +# Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR> +# Copyright (c) 2012, Red Hat, Inc.<BR> +# Portions Copyright (c) 2014, Apple Inc.<BR> +# +# 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 +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = BaseSerialPortLibIoPort + FILE_GUID = 0AD804E3-1E30-11E4-8915-C82A145113CC + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = SerialPortLib + + +# +# VALID_ARCHITECTURES = IA32 X64 IPF EBC +# + +[Sources] + BaseSerialPortLibIoPort.c + + +[Packages] + MdePkg/MdePkg.dec + OvmfPkg/OvmfPkg.dec + +[LibraryClasses] + IoLib + PcdLib + +[Pcd] + gUefiOvmfPkgTokenSpaceGuid.PcdDebugIoPort ## CONSUMES ~/work/src/edk2(master)> |
------------------------------------------------------------------------------ Infragistics Professional Build stunning WinForms apps today! Reboot your WinForms applications with our WinForms controls. Build a bridge from your legacy apps to the future. http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
_______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
