 0be2abbcee
			
		
	
	
	0be2abbcee
	
	
	
		
			
			Remove old YAMON prom code and use common firmware library code. Signed-off-by: Steven J. Hill <Steven.Hill@imgtec.com>
		
			
				
	
	
		
			46 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * 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;
 | |
| }
 |