serial: add VR41xx SIU setup for serial console
authorYoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
Mon, 28 Apr 2008 09:14:08 +0000 (02:14 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 28 Apr 2008 15:58:30 +0000 (08:58 -0700)
Add VR41xx SIU setup for serial console.

Signed-off-by: Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
Cc: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/mips/vr41xx/common/init.c
arch/mips/vr41xx/common/siu.c
include/asm-mips/vr41xx/siu.h
include/asm-mips/vr41xx/vr41xx.h

index 76d4b5ed3fc0127d9814af755769df7dc86fce9f..c64995342ba82f12922267674f46936fbf2b9571 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *  init.c, Common initialization routines for NEC VR4100 series.
  *
- *  Copyright (C) 2003-2005  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
+ *  Copyright (C) 2003-2008  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
  *
  *  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
@@ -53,6 +53,8 @@ void __init plat_time_init(void)
 void __init plat_mem_setup(void)
 {
        iomem_resource_init();
+
+       vr41xx_siu_setup();
 }
 
 void __init prom_init(void)
index b735f45b25f0f1144aaf64d1b96be60476c4c543..654dee6208be2258ce85ef608c0cc7a639696ad4 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *  NEC VR4100 series SIU platform device.
  *
- *  Copyright (C) 2007  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
+ *  Copyright (C) 2007-2008  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
  *
  *  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
@@ -118,3 +118,37 @@ err_free_device:
        return retval;
 }
 device_initcall(vr41xx_siu_add);
+
+void __init vr41xx_siu_setup(void)
+{
+       struct uart_port port;
+       struct resource *res;
+       unsigned int *type;
+       int i;
+
+       switch (current_cpu_type()) {
+       case CPU_VR4111:
+       case CPU_VR4121:
+               type = siu_type1_ports;
+               res = siu_type1_resource;
+               break;
+       case CPU_VR4122:
+       case CPU_VR4131:
+       case CPU_VR4133:
+               type = siu_type2_ports;
+               res = siu_type2_resource;
+               break;
+       default:
+               return;
+       }
+
+       for (i = 0; i < SIU_PORTS_MAX; i++) {
+               port.line = i;
+               port.type = type[i];
+               if (port.type == PORT_UNKNOWN)
+                       break;
+               port.mapbase = res[i].start;
+               port.membase = (unsigned char __iomem *)KSEG1ADDR(res[i].start);
+               vr41xx_siu_early_setup(&port);
+       }
+}
index 98cdb409648513dddaa702ef168bba48513e9c91..da9f6e3734099b31198cf31dd77b6070e158fdbb 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *  Include file for NEC VR4100 series Serial Interface Unit.
  *
- *  Copyright (C) 2005  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
+ *  Copyright (C) 2005-2008  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
  *
  *  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
@@ -49,4 +49,10 @@ typedef enum {
 
 extern void vr41xx_select_irda_module(irda_module_t module, irda_speed_t speed);
 
+#ifdef CONFIG_SERIAL_VR41XX_CONSOLE
+extern void vr41xx_siu_early_setup(struct uart_port *port);
+#else
+static inline void vr41xx_siu_early_setup(struct uart_port *port) {}
+#endif
+
 #endif /* __NEC_VR41XX_SIU_H */
index 88b492f6ea9c4481e791bcf2c03f6f163d936e6d..22be64971cc69202823ddb79ff83f32500f1a7da 100644 (file)
@@ -7,7 +7,7 @@
  * Copyright (C) 2001, 2002 Paul Mundt
  * Copyright (C) 2002 MontaVista Software, Inc.
  * Copyright (C) 2002 TimeSys Corp.
- * Copyright (C) 2003-2005 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
+ * Copyright (C) 2003-2008 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
  *
  * 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
@@ -143,4 +143,10 @@ extern void vr41xx_disable_csiint(uint16_t mask);
 extern void vr41xx_enable_bcuint(void);
 extern void vr41xx_disable_bcuint(void);
 
+#ifdef CONFIG_SERIAL_VR41XX_CONSOLE
+extern void vr41xx_siu_setup(void);
+#else
+static inline void vr41xx_siu_setup(void) {}
+#endif
+
 #endif /* __NEC_VR41XX_H */