From 1fde2f618c76ea2a79b5b16e121cead5dbaf02bc Mon Sep 17 00:00:00 2001 From: andrewfish Date: Thu, 25 Feb 2010 20:31:00 +0000 Subject: Started working on an ArmEb package. GIC is ported. SEC is a start. Still missing memory map and DRAM init stuff. Hey but it compiles. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10090 6f19259b-4bc3-4df7-8a09-765794883524 --- ArmEbPkg/Include/ArmEbUart.h | 75 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 ArmEbPkg/Include/ArmEbUart.h (limited to 'ArmEbPkg/Include') diff --git a/ArmEbPkg/Include/ArmEbUart.h b/ArmEbPkg/Include/ArmEbUart.h new file mode 100644 index 0000000000..7c8fd11ed6 --- /dev/null +++ b/ArmEbPkg/Include/ArmEbUart.h @@ -0,0 +1,75 @@ +/*++ + +Copyright (c) 2006 - 2009, Intel Corporation +Portions copyright (c) 2009, Hewlett-Packard Company +Portions copyright (c) 2010, Apple, Inc. All rights reserved. +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 __ARM_EB_UART_H__ +#define __ARM_EB_UART_H__ + + +#define SERIAL_PORT_MAX_TIMEOUT 100000000 // 100 seconds + + +// EB constants +#define EB_UART1_BASE 0x10009000 + +// PL011 Registers +#define UARTDR 0x000 +#define UARTRSR 0x004 +#define UARTECR 0x004 +#define UARTFR 0x018 +#define UARTILPR 0x020 +#define UARTIBRD 0x024 +#define UARTFBRD 0x028 +#define UARTLCR_H 0x02C +#define UARTCR 0x030 +#define UARTIFLS 0x034 +#define UARTIMSC 0x038 +#define UARTRIS 0x03C +#define UARTMIS 0x040 +#define UARTICR 0x044 +#define UARTDMACR 0x048 + +// If the required baud rate is 115200 and UARTCLK = 24MHz then: +// Baud Rate Divisor = (24×10^6)/(16×115200) = 13.020833 +// This means BRDI = 13 and BRDF = 0.020833 +// Therefore, fractional part, m = integer(0.020833×64) = integer(1.33331) = 1 +// Generated baud rate divider = 13+1/64 = 13.015625 +// Generated baud rate = (24×10^6)/(16×13.015625) = 115246.098 +// Error = (115246.098-115200)/115200 × 100 = 0.04% +#define UART_115200_IDIV 13 +#define UART_115200_FDIV 1 + +// add more baud rates here as needed + +// data status bits +#define UART_DATA_ERROR_MASK 0x0F00 + +// status reg bits +#define UART_STATUS_ERROR_MASK 0x0F + +// flag reg bits +#define UART_TX_EMPTY_FLAG_MASK 0x80 +#define UART_RX_FULL_FLAG_MASK 0x40 +#define UART_TX_FULL_FLAG_MASK 0x20 +#define UART_RX_EMPTY_FLAG_MASK 0x10 +#define UART_BUSY_FLAG_MASK 0x08 + +// control reg bits +#define UART_CTSEN_CONTROL_MASK 0x8000 +#define UART_RTSEN_CONTROL_MASK 0x4000 +#define UART_RTS_CONTROL_MASK 0x0800 +#define UART_DTR_CONTROL_MASK 0x0400 + + +#endif -- cgit v1.2.3