1 From 91f8d0c8fbb9ea70bf78a291e312157177be8ee3 Mon Sep 17 00:00:00 2001
2 From: John Crispin <blogic@openwrt.org>
3 Date: Sat, 20 Aug 2011 18:55:13 +0200
4 Subject: [PATCH 01/24] MIPS: lantiq: fix early printk
6 The code was using a 32bit write operation in the early_printk code. This
7 resulted in 3 zero bytes also being written to the serial port. Change the
10 Signed-off-by: Thomas Langer <thomas.langer@lantiq.com>
11 Signed-off-by: John Crispin <blogic@openwrt.org>
12 Cc: linux-mips@linux-mips.org
14 .../mips/include/asm/mach-lantiq/xway/lantiq_soc.h | 4 ++++
15 arch/mips/lantiq/early_printk.c | 14 ++++++++------
16 2 files changed, 12 insertions(+), 6 deletions(-)
18 --- a/arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h
19 +++ b/arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h
21 #define LTQ_ASC1_BASE_ADDR 0x1E100C00
22 #define LTQ_ASC_SIZE 0x400
24 +/* during early_printk no ioremap is possible
25 + lets use KSEG1 instead */
26 +#define LTQ_EARLY_ASC KSEG1ADDR(LTQ_ASC1_BASE_ADDR)
28 /* RCU - reset control unit */
29 #define LTQ_RCU_BASE_ADDR 0x1F203000
30 #define LTQ_RCU_SIZE 0x1000
31 --- a/arch/mips/lantiq/early_printk.c
32 +++ b/arch/mips/lantiq/early_printk.c
35 #include <lantiq_soc.h>
37 -/* no ioremap possible at this early stage, lets use KSEG1 instead */
38 -#define LTQ_ASC_BASE KSEG1ADDR(LTQ_ASC1_BASE_ADDR)
40 -#define LTQ_ASC_FSTAT ((u32 *)(LTQ_ASC_BASE + 0x0048))
41 -#define LTQ_ASC_TBUF ((u32 *)(LTQ_ASC_BASE + 0x0020))
42 +#define LTQ_ASC_FSTAT ((u32 *)(LTQ_EARLY_ASC + 0x0048))
44 +#define LTQ_ASC_TBUF ((u32 *)(LTQ_EARLY_ASC + 0x0020 + 3))
46 +#define LTQ_ASC_TBUF ((u32 *)(LTQ_EARLY_ASC + 0x0020))
51 @@ -27,7 +29,7 @@ void prom_putchar(char c)
52 local_irq_save(flags);
53 do { } while ((ltq_r32(LTQ_ASC_FSTAT) & TXMASK) >> TXOFFSET);
55 - ltq_w32('\r', LTQ_ASC_TBUF);
56 - ltq_w32(c, LTQ_ASC_TBUF);
57 + ltq_w8('\r', LTQ_ASC_TBUF);
58 + ltq_w8(c, LTQ_ASC_TBUF);
59 local_irq_restore(flags);