r2884 - trunk/src/target/u-boot/patches
laforge at sita.openmoko.org
laforge at sita.openmoko.org
Sat Sep 1 17:40:21 CEST 2007
Author: laforge
Date: 2007-09-01 17:40:12 +0200 (Sat, 01 Sep 2007)
New Revision: 2884
Added:
trunk/src/target/u-boot/patches/uboot-s3c24xx_multi_serial.patch
Modified:
trunk/src/target/u-boot/patches/series
trunk/src/target/u-boot/patches/uboot-20061030-neo1973.patch
trunk/src/target/u-boot/patches/uboot-gta02.patch
trunk/src/target/u-boot/patches/uboot-mokoversion.patch
trunk/src/target/u-boot/patches/uboot-s3c2440.patch
trunk/src/target/u-boot/patches/uboot-s3c2442.patch
trunk/src/target/u-boot/patches/uboot-serial_terminal.patch
Log:
split serial_terminal patch into
* independent multi-serial support (s3c24xx_multi_serial.patch)
* s3c2440 / s3c2442 related bits
* enable multi-serial for gta01 and gta02 config
Modified: trunk/src/target/u-boot/patches/series
===================================================================
--- trunk/src/target/u-boot/patches/series 2007-09-01 11:35:46 UTC (rev 2883)
+++ trunk/src/target/u-boot/patches/series 2007-09-01 15:40:12 UTC (rev 2884)
@@ -12,6 +12,7 @@
uboot-s3c2410-nand.patch
uboot-cmd_s3c2410.patch
uboot-s3c2410-mmc.patch
+uboot-s3c24xx_multi_serial.patch
env_nand_oob.patch
dynenv-harden.patch
uboot-s3c2410_fb.patch
Modified: trunk/src/target/u-boot/patches/uboot-20061030-neo1973.patch
===================================================================
--- trunk/src/target/u-boot/patches/uboot-20061030-neo1973.patch 2007-09-01 11:35:46 UTC (rev 2883)
+++ trunk/src/target/u-boot/patches/uboot-20061030-neo1973.patch 2007-09-01 15:40:12 UTC (rev 2884)
@@ -2017,7 +2017,7 @@
===================================================================
--- /dev/null
+++ u-boot/include/configs/neo1973_gta01.h
-@@ -0,0 +1,253 @@
+@@ -0,0 +1,254 @@
+/*
+ * (C) Copyright 2006 OpenMoko, Inc.
+ * Author: Harald Welte <laforge at openmoko.org>
@@ -2087,6 +2087,7 @@
+ * select serial console configuration
+ */
+#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on GTA01 */
++#define CONFIG_SERIAL_MULTI
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
Modified: trunk/src/target/u-boot/patches/uboot-gta02.patch
===================================================================
--- trunk/src/target/u-boot/patches/uboot-gta02.patch 2007-09-01 11:35:46 UTC (rev 2883)
+++ trunk/src/target/u-boot/patches/uboot-gta02.patch 2007-09-01 15:40:12 UTC (rev 2884)
@@ -560,7 +560,7 @@
===================================================================
--- /dev/null
+++ u-boot/include/configs/neo1973_gta02.h
-@@ -0,0 +1,276 @@
+@@ -0,0 +1,277 @@
+/*
+ * (C) Copyright 2007 OpenMoko, Inc.
+ * Author: Harald Welte <laforge at openmoko.org>
@@ -625,6 +625,7 @@
+ * select serial console configuration
+ */
+#define CONFIG_SERIAL3 1 /* we use SERIAL 1 on GTA01 */
++#define CONFIG_SERIAL_MULTI
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
Modified: trunk/src/target/u-boot/patches/uboot-mokoversion.patch
===================================================================
--- trunk/src/target/u-boot/patches/uboot-mokoversion.patch 2007-09-01 11:35:46 UTC (rev 2883)
+++ trunk/src/target/u-boot/patches/uboot-mokoversion.patch 2007-09-01 15:40:12 UTC (rev 2884)
@@ -1,7 +1,7 @@
Index: u-boot/tools/setlocalversion
===================================================================
---- u-boot.orig/tools/setlocalversion 2007-03-26 14:42:58.000000000 +0200
-+++ u-boot/tools/setlocalversion 2007-03-26 14:46:47.000000000 +0200
+--- u-boot.orig/tools/setlocalversion
++++ u-boot/tools/setlocalversion
@@ -20,3 +20,5 @@
printf '%s' -dirty
fi
Modified: trunk/src/target/u-boot/patches/uboot-s3c2440.patch
===================================================================
--- trunk/src/target/u-boot/patches/uboot-s3c2440.patch 2007-09-01 11:35:46 UTC (rev 2883)
+++ trunk/src/target/u-boot/patches/uboot-s3c2440.patch 2007-09-01 15:40:12 UTC (rev 2884)
@@ -652,10 +652,10 @@
#endif
DECLARE_GLOBAL_DATA_PTR;
-@@ -180,4 +183,5 @@
- }
- }
+@@ -302,4 +305,5 @@
+ #endif /* CONFIG_SERIAL_MULTI */
+
-#endif /* defined(CONFIG_S3C2400) || defined (CONFIG_S3C2410) || defined (CONFIG_TRAB) */
+#endif /* defined(CONFIG_S3C2400) || defined (CONFIG_S3C2410) ||
+ defined(CONFIG_S3C2440) || defined (CONFIG_TRAB) */
@@ -1454,3 +1454,38 @@
/* to reduce PLL lock time, adjust the LOCKTIME register */
clk_power->LOCKTIME = 0xFFFFFF;
+Index: u-boot/common/serial.c
+===================================================================
+--- u-boot.orig/common/serial.c
++++ u-boot/common/serial.c
+@@ -59,7 +59,7 @@
+ #else
+ return &serial0_device;
+ #endif
+-#elif defined(CONFIG_S3C2410)
++#elif defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
+ #if defined(CONFIG_SERIAL1)
+ return &s3c24xx_serial0_device;
+ #elif defined(CONFIG_SERIAL2)
+@@ -121,7 +121,7 @@
+ #endif
+ #endif /* CFG_NS16550_SERIAL */
+
+-#if defined(CONFIG_S3C2410)
++#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
+ serial_register(&s3c24xx_serial0_device);
+ serial_register(&s3c24xx_serial1_device);
+ serial_register(&s3c24xx_serial2_device);
+Index: u-boot/include/serial.h
+===================================================================
+--- u-boot.orig/include/serial.h
++++ u-boot/include/serial.h
+@@ -35,7 +35,7 @@
+
+ #endif
+
+-#if defined(CONFIG_S3C2410)
++#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
+ extern struct serial_device s3c24xx_serial0_device;
+ extern struct serial_device s3c24xx_serial1_device;
+ extern struct serial_device s3c24xx_serial2_device;
Modified: trunk/src/target/u-boot/patches/uboot-s3c2442.patch
===================================================================
--- trunk/src/target/u-boot/patches/uboot-s3c2442.patch 2007-09-01 11:35:46 UTC (rev 2883)
+++ trunk/src/target/u-boot/patches/uboot-s3c2442.patch 2007-09-01 15:40:12 UTC (rev 2884)
@@ -285,8 +285,8 @@
#include <s3c2440.h>
#endif
-@@ -184,4 +185,5 @@
- }
+@@ -306,4 +307,5 @@
+ #endif /* CONFIG_SERIAL_MULTI */
#endif /* defined(CONFIG_S3C2400) || defined (CONFIG_S3C2410) ||
- defined(CONFIG_S3C2440) || defined (CONFIG_TRAB) */
@@ -628,3 +628,41 @@
#include <s3c2440.h>
#endif
+Index: u-boot/common/serial.c
+===================================================================
+--- u-boot.orig/common/serial.c
++++ u-boot/common/serial.c
+@@ -59,7 +59,8 @@
+ #else
+ return &serial0_device;
+ #endif
+-#elif defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
++#elif defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) || \
++ defined(CONFIG_S3C2442)
+ #if defined(CONFIG_SERIAL1)
+ return &s3c24xx_serial0_device;
+ #elif defined(CONFIG_SERIAL2)
+@@ -121,7 +122,8 @@
+ #endif
+ #endif /* CFG_NS16550_SERIAL */
+
+-#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
++#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) || \
++ defined(CONFIG_S3C2442)
+ serial_register(&s3c24xx_serial0_device);
+ serial_register(&s3c24xx_serial1_device);
+ serial_register(&s3c24xx_serial2_device);
+Index: u-boot/include/serial.h
+===================================================================
+--- u-boot.orig/include/serial.h
++++ u-boot/include/serial.h
+@@ -35,7 +35,8 @@
+
+ #endif
+
+-#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
++#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) || \
++ defined(CONFIG_S3C2442)
+ extern struct serial_device s3c24xx_serial0_device;
+ extern struct serial_device s3c24xx_serial1_device;
+ extern struct serial_device s3c24xx_serial2_device;
Added: trunk/src/target/u-boot/patches/uboot-s3c24xx_multi_serial.patch
===================================================================
--- trunk/src/target/u-boot/patches/uboot-s3c24xx_multi_serial.patch 2007-09-01 11:35:46 UTC (rev 2883)
+++ trunk/src/target/u-boot/patches/uboot-s3c24xx_multi_serial.patch 2007-09-01 15:40:12 UTC (rev 2884)
@@ -0,0 +1,307 @@
+Index: u-boot/common/serial.c
+===================================================================
+--- u-boot.orig/common/serial.c
++++ u-boot/common/serial.c
+@@ -59,6 +59,16 @@
+ #else
+ return &serial0_device;
+ #endif
++#elif defined(CONFIG_S3C2410)
++#if defined(CONFIG_SERIAL1)
++ return &s3c24xx_serial0_device;
++#elif defined(CONFIG_SERIAL2)
++ return &s3c24xx_serial1_device;
++#elif defined(CONFIG_SERIAL3)
++ return &s3c24xx_serial2_device;
++#else
++#error "CONFIG_SERIAL? missing."
++#endif
+ #else
+ #error No default console
+ #endif
+@@ -110,6 +120,13 @@
+ serial_register(&eserial4_device);
+ #endif
+ #endif /* CFG_NS16550_SERIAL */
++
++#if defined(CONFIG_S3C2410)
++ serial_register(&s3c24xx_serial0_device);
++ serial_register(&s3c24xx_serial1_device);
++ serial_register(&s3c24xx_serial2_device);
++#endif
++
+ serial_assign (default_serial_console ()->name);
+ }
+
+Index: u-boot/cpu/arm920t/s3c24x0/serial.c
+===================================================================
+--- u-boot.orig/cpu/arm920t/s3c24x0/serial.c
++++ u-boot/cpu/arm920t/s3c24x0/serial.c
+@@ -48,18 +48,74 @@
+ #error "Bad: you didn't configure serial ..."
+ #endif
+
+-void serial_setbrg (void)
++#if defined(CONFIG_SERIAL_MULTI)
++#include <serial.h>
++
++/* Multi serial device functions */
++#define DECLARE_S3C_SERIAL_FUNCTIONS(port) \
++ int s3serial##port##_init (void) {\
++ return serial_init_dev(port);}\
++ void s3serial##port##_setbrg (void) {\
++ serial_setbrg_dev(port);}\
++ int s3serial##port##_getc (void) {\
++ return serial_getc_dev(port);}\
++ int s3serial##port##_tstc (void) {\
++ return serial_tstc_dev(port);}\
++ void s3serial##port##_putc (const char c) {\
++ serial_putc_dev(port, c);}\
++ void s3serial##port##_puts (const char *s) {\
++ serial_puts_dev(port, s);}
++
++#define INIT_S3C_SERIAL_STRUCTURE(port,name,bus) {\
++ name,\
++ bus,\
++ s3serial##port##_init,\
++ s3serial##port##_setbrg,\
++ s3serial##port##_getc,\
++ s3serial##port##_tstc,\
++ s3serial##port##_putc,\
++ s3serial##port##_puts, }
++
++#endif /* CONFIG_SERIAL_MULTI */
++
++void _serial_setbrg(const int dev_index)
+ {
+- S3C24X0_UART * const uart = S3C24X0_GetBase_UART(UART_NR);
+- int i;
++ S3C24X0_UART * const uart = S3C24X0_GetBase_UART(dev_index);
+ unsigned int reg = 0;
++ int i;
+
+ /* value is calculated so : (int)(PCLK/16./baudrate) -1 */
+ reg = get_PCLK() / (16 * gd->baudrate) - 1;
+
++ uart->UBRDIV = reg;
++ for (i = 0; i < 100; i++);
++}
++#if defined(CONFIG_SERIAL_MULTI)
++static inline void
++serial_setbrg_dev(unsigned int dev_index)
++{
++ _serial_setbrg(dev_index);
++}
++#else
++void serial_setbrg(void)
++{
++ _serial_setbrg(UART_NR);
++}
++#endif
++
++
++/* Initialise the serial port. The settings are always 8 data bits, no parity,
++ * 1 stop bit, no start bits.
++ */
++static int serial_init_dev(const int dev_index)
++{
++ S3C24X0_UART * const uart = S3C24X0_GetBase_UART(dev_index);
++ int i;
++
+ /* FIFO enable, Tx/Rx FIFO clear */
+ uart->UFCON = 0x07;
+ uart->UMCON = 0x0;
++
+ /* Normal,No parity,1 stop,8 bit */
+ uart->ULCON = 0x3;
+ /*
+@@ -67,40 +123,57 @@
+ * normal,interrupt or polling
+ */
+ uart->UCON = 0x245;
+- uart->UBRDIV = reg;
+
+ #ifdef CONFIG_HWFLOW
+ uart->UMCON = 0x1; /* RTS up */
+ #endif
+- for (i = 0; i < 100; i++);
++
++ /* FIXME: This is sooooooooooooooooooo ugly */
++#if defined(CONFIG_ARCH_GTA02_v1) || defined(CONFIG_ARCH_GTA02_v2)
++ /* we need auto hw flow control on the gsm and gps port */
++ if (dev_index == 0 || dev_index == 1)
++ uart->UMCON = 0x10;
++#endif
++ serial_setbrg_dev(dev_index);
++
++ return (0);
+ }
+
+-/*
+- * Initialise the serial port with the given baudrate. The settings
+- * are always 8 data bits, no parity, 1 stop bit, no start bits.
+- *
++#if !defined(CONFIG_SERIAL_MULTI)
++/* Initialise the serial port. The settings are always 8 data bits, no parity,
++ * 1 stop bit, no start bits.
+ */
+ int serial_init (void)
+ {
+- serial_setbrg ();
+-
+- return (0);
++ return _serial_init_dev(UART_NR);
+ }
++#endif
+
+ /*
+ * Read a single byte from the serial port. Returns 1 on success, 0
+ * otherwise. When the function is succesfull, the character read is
+ * written into its argument c.
+ */
+-int serial_getc (void)
++int _serial_getc (const int dev_index)
+ {
+- S3C24X0_UART * const uart = S3C24X0_GetBase_UART(UART_NR);
++ S3C24X0_UART * const uart = S3C24X0_GetBase_UART(dev_index);
+
+ /* wait for character to arrive */
+ while (!(uart->UTRSTAT & 0x1));
+
+ return uart->URXH & 0xff;
+ }
++#if defined(CONFIG_SERIAL_MULTI)
++static inline int serial_getc_dev(unsigned int dev_index)
++{
++ return _serial_getc(dev_index);
++}
++#else
++int serial_getc (void)
++{
++ return _serial_getc(UART_NR);
++}
++#endif
+
+ #ifdef CONFIG_HWFLOW
+ static int hwflow = 0; /* turned off by default */
+@@ -138,9 +211,9 @@
+ /*
+ * Output a single byte to the serial port.
+ */
+-void serial_putc (const char c)
++void _serial_putc (const char c, const int dev_index)
+ {
+- S3C24X0_UART * const uart = S3C24X0_GetBase_UART(UART_NR);
++ S3C24X0_UART * const uart = S3C24X0_GetBase_UART(dev_index);
+ #ifdef CONFIG_MODEM_SUPPORT
+ if (be_quiet)
+ return;
+@@ -161,23 +234,72 @@
+ if (c == '\n')
+ serial_putc ('\r');
+ }
++#if defined(CONFIG_SERIAL_MULTI)
++static inline void serial_putc_dev(unsigned int dev_index, const char c)
++{
++ _serial_putc(c, dev_index);
++}
++#else
++void serial_putc(const char c)
++{
++ _serial_putc(c, UART_NR);
++}
++#endif
++
+
+ /*
+ * Test whether a character is in the RX buffer
+ */
+-int serial_tstc (void)
++int _serial_tstc(const int dev_index)
+ {
+- S3C24X0_UART * const uart = S3C24X0_GetBase_UART(UART_NR);
++ S3C24X0_UART * const uart = S3C24X0_GetBase_UART(dev_index);
+
+ return uart->UTRSTAT & 0x1;
+ }
++#if defined(CONFIG_SERIAL_MULTI)
++static inline int
++serial_tstc_dev(unsigned int dev_index)
++{
++ return _serial_tstc(dev_index);
++}
++#else
++int serial_tstc(void)
++{
++ return _serial_tstc(UART_NR);
++}
++#endif
+
+-void
+-serial_puts (const char *s)
++void _serial_puts(const char *s, const int dev_index)
+ {
+ while (*s) {
+- serial_putc (*s++);
++ _serial_putc (*s++, dev_index);
+ }
+ }
++#if defined(CONFIG_SERIAL_MULTI)
++static inline void
++serial_puts_dev(int dev_index, const char *s)
++{
++ _serial_puts(s, dev_index);
++}
++#else
++void
++serial_puts (const char *s)
++{
++ _serial_puts(s, UART_NR);
++}
++#endif
++
++#if defined(CONFIG_SERIAL_MULTI)
++DECLARE_S3C_SERIAL_FUNCTIONS(0);
++struct serial_device s3c24xx_serial0_device =
++ INIT_S3C_SERIAL_STRUCTURE(0, "s3ser0", "S3UART1");
++DECLARE_S3C_SERIAL_FUNCTIONS(1);
++struct serial_device s3c24xx_serial1_device =
++ INIT_S3C_SERIAL_STRUCTURE(1, "s3ser1", "S3UART2");
++DECLARE_S3C_SERIAL_FUNCTIONS(2);
++struct serial_device s3c24xx_serial2_device =
++ INIT_S3C_SERIAL_STRUCTURE(2, "s3ser2", "S3UART3");
++
++#endif /* CONFIG_SERIAL_MULTI */
+
+ #endif /* defined(CONFIG_S3C2400) || defined (CONFIG_S3C2410) || defined (CONFIG_TRAB) */
+Index: u-boot/include/serial.h
+===================================================================
+--- u-boot.orig/include/serial.h
++++ u-boot/include/serial.h
+@@ -35,6 +35,11 @@
+
+ #endif
+
++#if defined(CONFIG_S3C2410)
++extern struct serial_device s3c24xx_serial0_device;
++extern struct serial_device s3c24xx_serial1_device;
++extern struct serial_device s3c24xx_serial2_device;
++#endif
+
+ extern void serial_initialize(void);
+ extern void serial_devices_init(void);
+Index: u-boot/lib_arm/board.c
+===================================================================
+--- u-boot.orig/lib_arm/board.c
++++ u-boot/lib_arm/board.c
+@@ -345,6 +345,10 @@
+ #endif
+ }
+
++#ifdef CONFIG_SERIAL_MULTI
++ serial_initialize();
++#endif
++
+ devices_init (); /* get the devices list going. */
+
+ #ifdef CONFIG_CMC_PU2
Modified: trunk/src/target/u-boot/patches/uboot-serial_terminal.patch
===================================================================
--- trunk/src/target/u-boot/patches/uboot-serial_terminal.patch 2007-09-01 11:35:46 UTC (rev 2883)
+++ trunk/src/target/u-boot/patches/uboot-serial_terminal.patch 2007-09-01 15:40:12 UTC (rev 2884)
@@ -1,251 +1,11 @@
This patch adds a 'cu' like serial terminal command to u-boot
using which you can access other serial ports from the system console.
-Index: u-boot/common/serial.c
-===================================================================
---- u-boot.orig/common/serial.c
-+++ u-boot/common/serial.c
-@@ -59,6 +59,16 @@
- #else
- return &serial0_device;
- #endif
-+#elif defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) || defined(CONFIG_S3C2442)
-+#if defined(CONFIG_SERIAL1)
-+ return &s3c24xx_serial0_device;
-+#elif defined(CONFIG_SERIAL2)
-+ return &s3c24xx_serial1_device;
-+#elif defined(CONFIG_SERIAL3)
-+ return &s3c24xx_serial2_device;
-+#else
-+#error "CONFIG_SERIAL? missing."
-+#endif
- #else
- #error No default console
- #endif
-@@ -110,6 +120,13 @@
- serial_register(&eserial4_device);
- #endif
- #endif /* CFG_NS16550_SERIAL */
-+
-+#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) || defined(CONFIG_S3C2442)
-+ serial_register(&s3c24xx_serial0_device);
-+ serial_register(&s3c24xx_serial1_device);
-+ serial_register(&s3c24xx_serial2_device);
-+#endif
-+
- serial_assign (default_serial_console ()->name);
- }
-
-Index: u-boot/cpu/arm920t/s3c24x0/serial.c
-===================================================================
---- u-boot.orig/cpu/arm920t/s3c24x0/serial.c
-+++ u-boot/cpu/arm920t/s3c24x0/serial.c
-@@ -52,9 +52,40 @@
- #error "Bad: you didn't configure serial ..."
- #endif
-
--void serial_setbrg (void)
-+#if defined(CONFIG_SERIAL_MULTI)
-+#include <serial.h>
-+
-+/* Multi serial device functions */
-+#define DECLARE_S3C_SERIAL_FUNCTIONS(port) \
-+ int s3serial##port##_init (void) {\
-+ serial_setbrg_dev(port);\
-+ return(0);}\
-+ void s3serial##port##_setbrg (void) {\
-+ serial_setbrg_dev(port);}\
-+ int s3serial##port##_getc (void) {\
-+ return serial_getc_dev(port);}\
-+ int s3serial##port##_tstc (void) {\
-+ return serial_tstc_dev(port);}\
-+ void s3serial##port##_putc (const char c) {\
-+ serial_putc_dev(port, c);}\
-+ void s3serial##port##_puts (const char *s) {\
-+ serial_puts_dev(port, s);}
-+
-+#define INIT_S3C_SERIAL_STRUCTURE(port,name,bus) {\
-+ name,\
-+ bus,\
-+ s3serial##port##_init,\
-+ s3serial##port##_setbrg,\
-+ s3serial##port##_getc,\
-+ s3serial##port##_tstc,\
-+ s3serial##port##_putc,\
-+ s3serial##port##_puts, }
-+
-+#endif /* CONFIG_SERIAL_MULTI */
-+
-+void _serial_setbrg(const int dev_index)
- {
-- S3C24X0_UART * const uart = S3C24X0_GetBase_UART(UART_NR);
-+ S3C24X0_UART * const uart = S3C24X0_GetBase_UART(dev_index);
- int i;
- unsigned int reg = 0;
-
-@@ -78,7 +109,20 @@
- #endif
- for (i = 0; i < 100; i++);
- }
-+#if defined(CONFIG_SERIAL_MULTI)
-+static inline void
-+serial_setbrg_dev(unsigned int dev_index)
-+{
-+ _serial_setbrg(dev_index);
-+}
-+#else
-+void serial_setbrg(void)
-+{
-+ _serial_setbrg(UART_NR);
-+}
-+#endif
-
-+#if !defined(CONFIG_SERIAL_MULTI)
- /*
- * Initialise the serial port with the given baudrate. The settings
- * are always 8 data bits, no parity, 1 stop bit, no start bits.
-@@ -90,21 +134,33 @@
-
- return (0);
- }
-+#endif
-
- /*
- * Read a single byte from the serial port. Returns 1 on success, 0
- * otherwise. When the function is succesfull, the character read is
- * written into its argument c.
- */
--int serial_getc (void)
-+int _serial_getc (const int dev_index)
- {
-- S3C24X0_UART * const uart = S3C24X0_GetBase_UART(UART_NR);
-+ S3C24X0_UART * const uart = S3C24X0_GetBase_UART(dev_index);
-
- /* wait for character to arrive */
- while (!(uart->UTRSTAT & 0x1));
-
- return uart->URXH & 0xff;
- }
-+#if defined(CONFIG_SERIAL_MULTI)
-+static inline int serial_getc_dev(unsigned int dev_index)
-+{
-+ return _serial_getc(dev_index);
-+}
-+#else
-+int serial_getc (void)
-+{
-+ return _serial_getc(UART_NR);
-+}
-+#endif
-
- #ifdef CONFIG_HWFLOW
- static int hwflow = 0; /* turned off by default */
-@@ -142,9 +198,9 @@
- /*
- * Output a single byte to the serial port.
- */
--void serial_putc (const char c)
-+void _serial_putc (const char c, const int dev_index)
- {
-- S3C24X0_UART * const uart = S3C24X0_GetBase_UART(UART_NR);
-+ S3C24X0_UART * const uart = S3C24X0_GetBase_UART(dev_index);
- #ifdef CONFIG_MODEM_SUPPORT
- if (be_quiet)
- return;
-@@ -165,24 +221,73 @@
- if (c == '\n')
- serial_putc ('\r');
- }
-+#if defined(CONFIG_SERIAL_MULTI)
-+static inline void serial_putc_dev(unsigned int dev_index, const char c)
-+{
-+ _serial_putc(c, dev_index);
-+}
-+#else
-+void serial_putc(const char c)
-+{
-+ _serial_putc(c, UART_NR);
-+}
-+#endif
-+
-
- /*
- * Test whether a character is in the RX buffer
- */
--int serial_tstc (void)
-+int _serial_tstc(const int dev_index)
- {
-- S3C24X0_UART * const uart = S3C24X0_GetBase_UART(UART_NR);
-+ S3C24X0_UART * const uart = S3C24X0_GetBase_UART(dev_index);
-
- return uart->UTRSTAT & 0x1;
- }
-+#if defined(CONFIG_SERIAL_MULTI)
-+static inline int
-+serial_tstc_dev(unsigned int dev_index)
-+{
-+ return _serial_tstc(dev_index);
-+}
-+#else
-+int serial_tstc(void)
-+{
-+ return _serial_tstc(UART_NR);
-+}
-+#endif
-
--void
--serial_puts (const char *s)
-+void _serial_puts(const char *s, const int dev_index)
- {
- while (*s) {
-- serial_putc (*s++);
-+ _serial_putc (*s++, dev_index);
- }
- }
-+#if defined(CONFIG_SERIAL_MULTI)
-+static inline void
-+serial_puts_dev(int dev_index, const char *s)
-+{
-+ _serial_puts(s, dev_index);
-+}
-+#else
-+void
-+serial_puts (const char *s)
-+{
-+ _serial_puts(s, UART_NR);
-+}
-+#endif
-+
-+#if defined(CONFIG_SERIAL_MULTI)
-+DECLARE_S3C_SERIAL_FUNCTIONS(0);
-+struct serial_device s3c24xx_serial0_device =
-+ INIT_S3C_SERIAL_STRUCTURE(0, "s3ser0", "S3UART1");
-+DECLARE_S3C_SERIAL_FUNCTIONS(1);
-+struct serial_device s3c24xx_serial1_device =
-+ INIT_S3C_SERIAL_STRUCTURE(1, "s3ser1", "S3UART2");
-+DECLARE_S3C_SERIAL_FUNCTIONS(2);
-+struct serial_device s3c24xx_serial2_device =
-+ INIT_S3C_SERIAL_STRUCTURE(2, "s3ser2", "S3UART3");
-+
-+#endif /* CONFIG_SERIAL_MULTI */
-
- #endif /* defined(CONFIG_S3C2400) || defined (CONFIG_S3C2410) ||
- defined(CONFIG_S3C2440) || defined (CONFIG_S3C2442) ||
Index: u-boot/include/configs/neo1973_gta02.h
===================================================================
--- u-boot.orig/include/configs/neo1973_gta02.h
+++ u-boot/include/configs/neo1973_gta02.h
-@@ -61,7 +61,8 @@
- /*
- * select serial console configuration
- */
--#define CONFIG_SERIAL3 1 /* we use SERIAL 1 on GTA01 */
-+#define CONFIG_SERIAL3 1 /* we use SERIAL 3 on GTA02 */
-+#define CONFIG_SERIAL_MULTI 1
-
- /* allow to overwrite serial and ethaddr */
- #define CONFIG_ENV_OVERWRITE
-@@ -104,6 +105,7 @@
+@@ -105,6 +105,7 @@
#define CONFIG_CMD_FAT
#define CONFIG_CMD_EXT2
#define CONFIG_CMD_LICENSE
@@ -253,37 +13,6 @@
#define CONFIG_BOOTDELAY 3
#define CONFIG_BOOTARGS ""
-Index: u-boot/include/serial.h
-===================================================================
---- u-boot.orig/include/serial.h
-+++ u-boot/include/serial.h
-@@ -35,6 +35,11 @@
-
- #endif
-
-+#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) || defined(CONFIG_S3C2442)
-+extern struct serial_device s3c24xx_serial0_device;
-+extern struct serial_device s3c24xx_serial1_device;
-+extern struct serial_device s3c24xx_serial2_device;
-+#endif
-
- extern void serial_initialize(void);
- extern void serial_devices_init(void);
-Index: u-boot/lib_arm/board.c
-===================================================================
---- u-boot.orig/lib_arm/board.c
-+++ u-boot/lib_arm/board.c
-@@ -345,6 +345,10 @@
- #endif
- }
-
-+#ifdef CONFIG_SERIAL_MULTI
-+ serial_initialize();
-+#endif
-+
- devices_init (); /* get the devices list going. */
-
- #ifdef CONFIG_CMC_PU2
Index: u-boot/common/Makefile
===================================================================
--- u-boot.orig/common/Makefile
@@ -301,7 +30,7 @@
===================================================================
--- /dev/null
+++ u-boot/common/cmd_terminal.c
-@@ -0,0 +1,101 @@
+@@ -0,0 +1,102 @@
+/*
+ * (C) Copyright 2007 OpenMoko, Inc.
+ * Written by Harald Welte <laforge at openmoko.org>
@@ -367,6 +96,7 @@
+ if (last_tilde == 1) {
+ if (c == '.') {
+ putc(c);
++ putc('\n');
+ break;
+ } else {
+ last_tilde = 0;
@@ -403,3 +133,15 @@
+);
+
+#endif /* CONFIG_CMD_TERMINAL */
+Index: u-boot/include/configs/neo1973_gta01.h
+===================================================================
+--- u-boot.orig/include/configs/neo1973_gta01.h
++++ u-boot/include/configs/neo1973_gta01.h
+@@ -103,6 +103,7 @@
+ #define CONFIG_CMD_FAT
+ #define CONFIG_CMD_EXT2
+ #define CONFIG_CMD_LICENSE
++#define CONFIG_CMD_TERMINAL
+
+ #define CONFIG_BOOTDELAY 3
+ #define CONFIG_BOOTARGS ""
More information about the commitlog
mailing list