summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorAnatolij Gustschin <agust@denx.de>2010-04-24 19:27:05 +0200
committerWolfgang Denk <wd@denx.de>2010-04-24 22:56:30 +0200
commite3b28e67329de99a315d509920760dcbc565f8c6 (patch)
treeba5e030b1b654974ae4ed4ecc870b66cfd95b96b /common
parentfbb0030e3894119c089256f16626edd166c7629c (diff)
downloadu-boot-imx-e3b28e67329de99a315d509920760dcbc565f8c6.zip
u-boot-imx-e3b28e67329de99a315d509920760dcbc565f8c6.tar.gz
u-boot-imx-e3b28e67329de99a315d509920760dcbc565f8c6.tar.bz2
mpc512x: add multi serial PSC support
Extend mpc512x serial driver to support multiple PSC ports. Subsequent patches for PDM360NG board support make use of this functionality by defining CONFIG_SERIAL_MULTI in the board config file. Additionally the used PSC devices are specified by defining e.g. CONFIG_SYS_PSC1, CONFIG_SYS_PSC4 and CONFIG_SYS_PSC6. Support for PSC devices other than 1, 3, 4 and 6 is not added by this patch because these aren't used currently. In the future it can be easily added using DECLARE_PSC_SERIAL_FUNCTIONS(N) and INIT_PSC_SERIAL_STRUCTURE(N) macros in cpu/mpc512x/serial.c. Additionally you have to add code for registering added devices in serial_initialize() in common/serial.c. Signed-off-by: Anatolij Gustschin <agust@denx.de>
Diffstat (limited to 'common')
-rw-r--r--common/serial.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/common/serial.c b/common/serial.c
index 5f9ffd7..754e329 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -59,6 +59,14 @@ struct serial_device *__default_serial_console (void)
#else
return &serial0_device;
#endif
+#elif defined(CONFIG_MPC512X)
+#if (CONFIG_PSC_CONSOLE == 3)
+ return &serial3_device;
+#elif (CONFIG_PSC_CONSOLE == 6)
+ return &serial6_device;
+#else
+#error "Bad CONFIG_PSC_CONSOLE."
+#endif
#elif defined(CONFIG_S3C2410)
#if defined(CONFIG_SERIAL1)
return &s3c24xx_serial0_device;
@@ -159,6 +167,20 @@ void serial_initialize (void)
serial_register(&s5pc1xx_serial2_device);
serial_register(&s5pc1xx_serial3_device);
#endif
+#if defined(CONFIG_MPC512X)
+#if defined(CONFIG_SYS_PSC1)
+ serial_register(&serial1_device);
+#endif
+#if defined(CONFIG_SYS_PSC3)
+ serial_register(&serial3_device);
+#endif
+#if defined(CONFIG_SYS_PSC4)
+ serial_register(&serial4_device);
+#endif
+#if defined(CONFIG_SYS_PSC6)
+ serial_register(&serial6_device);
+#endif
+#endif
serial_assign (default_serial_console ()->name);
}
@@ -174,6 +196,7 @@ void serial_stdio_init (void)
dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_INPUT;
dev.start = s->init;
+ dev.stop = s->uninit;
dev.putc = s->putc;
dev.puts = s->puts;
dev.getc = s->getc;