Increase the number of possible eserial devices from 4 to 6.

Signed-off-by: Andrew Bradford <and...@bradfordembedded.com>
---
 common/serial.c         |    6 ++++++
 drivers/serial/serial.c |   39 +++++++++++++++++++++++++++++++++++----
 include/serial.h        |    2 ++
 3 files changed, 43 insertions(+), 4 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index 75cc1bb..c237aee 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -70,6 +70,12 @@ void serial_initialize(void)
 #if defined(CONFIG_SYS_NS16550_COM4)
        serial_register(&eserial4_device);
 #endif
+#if defined(CONFIG_SYS_NS16550_COM5)
+       serial_register(&eserial5_device);
+#endif
+#if defined(CONFIG_SYS_NS16550_COM6)
+       serial_register(&eserial6_device);
+#endif
 #endif /* CONFIG_SYS_NS16550_SERIAL */
 #if defined(CONFIG_FFUART)
        serial_register(&serial_ffuart_device);
diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c
index b10bab7..ba05f7f 100644
--- a/drivers/serial/serial.c
+++ b/drivers/serial/serial.c
@@ -43,7 +43,7 @@ DECLARE_GLOBAL_DATA_PTR;
 #else
 #error "No console index specified."
 #endif /* CONFIG_SERIAL_MULTI */
-#elif (CONFIG_CONS_INDEX < 1) || (CONFIG_CONS_INDEX > 4)
+#elif (CONFIG_CONS_INDEX < 1) || (CONFIG_CONS_INDEX > 6)
 #error "Invalid console index value."
 #endif
 
@@ -55,12 +55,16 @@ DECLARE_GLOBAL_DATA_PTR;
 #error "Console port 3 defined but not configured."
 #elif CONFIG_CONS_INDEX == 4 && !defined(CONFIG_SYS_NS16550_COM4)
 #error "Console port 4 defined but not configured."
+#elif CONFIG_CONS_INDEX == 5 && !defined(CONFIG_SYS_NS16550_COM5)
+#error "Console port 5 defined but not configured."
+#elif CONFIG_CONS_INDEX == 6 && !defined(CONFIG_SYS_NS16550_COM6)
+#error "Console port 6 defined but not configured."
 #endif
 
 /* Note: The port number specified in the functions is 1 based.
  *      the array is 0 based.
  */
-static NS16550_t serial_ports[4] = {
+static NS16550_t serial_ports[6] = {
 #ifdef CONFIG_SYS_NS16550_COM1
        (NS16550_t)CONFIG_SYS_NS16550_COM1,
 #else
@@ -77,7 +81,17 @@ static NS16550_t serial_ports[4] = {
        NULL,
 #endif
 #ifdef CONFIG_SYS_NS16550_COM4
-       (NS16550_t)CONFIG_SYS_NS16550_COM4
+       (NS16550_t)CONFIG_SYS_NS16550_COM4,
+#else
+       NULL,
+#endif
+#ifdef CONFIG_SYS_NS16550_COM5
+       (NS16550_t)CONFIG_SYS_NS16550_COM5,
+#else
+       NULL,
+#endif
+#ifdef CONFIG_SYS_NS16550_COM6
+       (NS16550_t)CONFIG_SYS_NS16550_COM6
 #else
        NULL
 #endif
@@ -175,7 +189,14 @@ int serial_init (void)
        clock_divisor = calc_divisor(serial_ports[3]);
        NS16550_init(serial_ports[3], clock_divisor);
 #endif
-
+#ifdef CONFIG_SYS_NS16550_COM5
+       clock_divisor = calc_divisor(serial_ports[4]);
+       NS16550_init(serial_ports[4], clock_divisor);
+#endif
+#ifdef CONFIG_SYS_NS16550_COM6
+       clock_divisor = calc_divisor(serial_ports[5]);
+       NS16550_init(serial_ports[5], clock_divisor);
+#endif
        return (0);
 }
 #endif
@@ -323,6 +344,12 @@ struct serial_device eserial3_device =
 DECLARE_ESERIAL_FUNCTIONS(4);
 struct serial_device eserial4_device =
        INIT_ESERIAL_STRUCTURE(4, "eserial3");
+DECLARE_ESERIAL_FUNCTIONS(5);
+struct serial_device eserial5_device =
+       INIT_ESERIAL_STRUCTURE(5, "eserial4");
+DECLARE_ESERIAL_FUNCTIONS(6);
+struct serial_device eserial6_device =
+       INIT_ESERIAL_STRUCTURE(6, "eserial5");
 
 __weak struct serial_device *default_serial_console(void)
 {
@@ -334,6 +361,10 @@ __weak struct serial_device *default_serial_console(void)
        return &eserial3_device;
 #elif CONFIG_CONS_INDEX == 4
        return &eserial4_device;
+#elif CONFIG_CONS_INDEX == 5
+       return &eserial5_device;
+#elif CONFIG_CONS_INDEX == 6
+       return &eserial6_device;
 #else
 #error "Bad CONFIG_CONS_INDEX."
 #endif
diff --git a/include/serial.h b/include/serial.h
index d76d6df..dcb2d97 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -40,6 +40,8 @@ extern struct serial_device eserial1_device;
 extern struct serial_device eserial2_device;
 extern struct serial_device eserial3_device;
 extern struct serial_device eserial4_device;
+extern struct serial_device eserial5_device;
+extern struct serial_device eserial6_device;
 #endif /* CONFIG_SYS_NS16550_SERIAL */
 
 #endif
-- 
1.7.10

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to