The support for multiple serial interfaces as implemented is mainly
intended to allow for modem dial-in / dial-out while still being able
to use a serial console on a (different) serial port.

At the moment, the ports must be split on a SMC and a SCC port  on  a
8xx processor; other configurations are not (yet) supported.

Support for hardware handshake has not been implemented yet (but is
in the works).

*) The default console depends on the keys pressed:
	- SMC if keys not pressed (modem not enabled)
	- SCC if keys pressed (modem enabled)

*) The console can be switched to SCC by any of the following commands:

	setenv stdout serial_scc
	setenv stdin serial_scc
	setenv stderr serial_scc

*) The console can be switched to SMC by any of the following commands:

	setenv stdout serial_smc
	setenv stdin serial_smc
	setenv stderr serial_smc

*) If a file descriptor is set to "serial" then the current serial device
will be used which, in turn, can be switched by above commands.

*) The baudrate is the same for all serial devices. But it can be switched
just after switching the console:

	setenv sout serial_scc; setenv baudrate 38400

After that press 'enter' at the SCC console. Note that baudrates <38400
are not allowed on LWMON with watchdog enabled (see CFG_BAUDRATE_TABLE in
include/configs/lwmon.h).
