mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-30 21:44:27 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			69 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| --- /dev/null
 | |
| +++ b/arch/mips/ar231x/early_printk.c
 | |
| @@ -0,0 +1,44 @@
 | |
| +/*
 | |
| + * 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) 2010 Gabor Juhos <juhosg@openwrt.org>
 | |
| + */
 | |
| +
 | |
| +#include <linux/mm.h>
 | |
| +#include <linux/io.h>
 | |
| +#include <linux/serial_reg.h>
 | |
| +#include <asm/addrspace.h>
 | |
| +
 | |
| +#include <asm/mach-ar231x/ar2315_regs.h>
 | |
| +#include <asm/mach-ar231x/ar5312_regs.h>
 | |
| +#include "devices.h"
 | |
| +
 | |
| +static inline void prom_uart_wr(void __iomem *base, unsigned reg,
 | |
| +				unsigned char ch)
 | |
| +{
 | |
| +	__raw_writeb(ch, base + 4 * reg);
 | |
| +}
 | |
| +
 | |
| +static inline unsigned char prom_uart_rr(void __iomem *base, unsigned reg)
 | |
| +{
 | |
| +	return __raw_readb(base + 4 * reg);
 | |
| +}
 | |
| +
 | |
| +void prom_putchar(unsigned char ch)
 | |
| +{
 | |
| +	static void __iomem *base;
 | |
| +
 | |
| +	if (unlikely(base == NULL)) {
 | |
| +		if (is_2315())
 | |
| +			base = (void __iomem *)(KSEG1ADDR(AR2315_UART0));
 | |
| +		else
 | |
| +			base = (void __iomem *)(KSEG1ADDR(AR531X_UART0));
 | |
| +	}
 | |
| +
 | |
| +	while ((prom_uart_rr(base, UART_LSR) & UART_LSR_THRE) == 0);
 | |
| +	prom_uart_wr(base, UART_TX, ch);
 | |
| +	while ((prom_uart_rr(base, UART_LSR) & UART_LSR_THRE) == 0);
 | |
| +}
 | |
| +
 | |
| --- a/arch/mips/ar231x/Makefile
 | |
| +++ b/arch/mips/ar231x/Makefile
 | |
| @@ -9,5 +9,8 @@
 | |
|  #
 | |
|  
 | |
|  obj-y += board.o prom.o devices.o
 | |
| +
 | |
| +obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
 | |
| +
 | |
|  obj-$(CONFIG_ATHEROS_AR5312) += ar5312.o
 | |
|  obj-$(CONFIG_ATHEROS_AR2315) += ar2315.o
 | |
| --- a/arch/mips/Kconfig
 | |
| +++ b/arch/mips/Kconfig
 | |
| @@ -130,6 +130,7 @@ config ATHEROS_AR231X
 | |
|  	select SYS_SUPPORTS_BIG_ENDIAN
 | |
|  	select SYS_SUPPORTS_32BIT_KERNEL
 | |
|  	select GENERIC_GPIO
 | |
| +	select SYS_HAS_EARLY_PRINTK
 | |
|  	help
 | |
|  	  Support for AR231x and AR531x based boards
 | |
|  
 |