12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- /*
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved.
- */
- #include <linux/init.h>
- #include <linux/console.h>
- #include <linux/serial_reg.h>
- #include <linux/io.h>
- #define SEAD_UART1_REGS_BASE 0xbf000800 /* ttyS1 = DB9 port */
- #define SEAD_UART0_REGS_BASE 0xbf000900 /* ttyS0 = USB port */
- #define PORT(base_addr, offset) ((unsigned int __iomem *)(base_addr+(offset)*4))
- static char console_port = 1;
- static inline unsigned int serial_in(int offset, unsigned int base_addr)
- {
- return __raw_readl(PORT(base_addr, offset)) & 0xff;
- }
- static inline void serial_out(int offset, int value, unsigned int base_addr)
- {
- __raw_writel(value, PORT(base_addr, offset));
- }
- void __init fw_init_early_console(char port)
- {
- console_port = port;
- }
- int prom_putchar(char c)
- {
- unsigned int base_addr;
- base_addr = console_port ? SEAD_UART1_REGS_BASE : SEAD_UART0_REGS_BASE;
- while ((serial_in(UART_LSR, base_addr) & UART_LSR_THRE) == 0)
- ;
- serial_out(UART_TX, c, base_addr);
- return 1;
- }
|