diff --git a/src/include/console/uart.h b/src/include/console/uart.h
new file mode 100644
index 0000000..9b52a78
--- /dev/null
+++ b/src/include/console/uart.h
@@ -0,0 +1,49 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2012 The ChromiumOS Authors.  All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef CONSOLE_UART_H
+#define CONSOLE_UART_H
+
+/* Return the clock frequency UART uses as reference clock for
+ * baudrate generator. */
+unsigned int uart_platform_refclk(void);
+
+/* Return the baudrate determined from option_table, or when that is
+ * not used, CONFIG_TTYS0_BAUD.
+ */
+unsigned int default_baudrate(void);
+
+/* Returns the divisor value for a given baudrate.
+ * The formula to satisfy is:
+ *    refclk / divisor = baudrate * oversample
+ */
+unsigned int uart_baudrate_divisor(unsigned int baudrate,
+	unsigned int refclk, unsigned int oversample);
+
+
+unsigned char uart_rx_byte(void);
+void uart_tx_byte(unsigned char data);
+void uart_tx_flush(void);
+void uart_init(void);
+
+uint32_t uartmem_getbaseaddr(void);
+
+void oxford_init(void);
+
+#endif /* CONSOLE_UART_H */
