How to configure modem support in U-Boot :

1. Define modem initialization strings:
---------------------------------------

The modem initialization strings have following format:

	mdm_init1=<AT-command>
	mdm_init2=<AT-command>
	...

Turning off modem verbose responses with ATV0 or ATQ1 is not allowed;
U-Boot analyzes only verbose (not numeric) result codes. Modem local
command echo can be turned off (ATE0).

2. RTS/CTS hardware flow control:
---------------------------------

You may wish to enable RTS/CTS hardware flow control, if the board's
UART driver supports it (see CONFIG_HWFLOW compile-time flag in
config/<board>.h). This is controlled by the 'mdm_flow_control'
environment variable:

	'mdm_flow_control=rts/cts'  - to enable RTS/CTS flow control.
	'mdm_flow_control=none '    - to disable.


The following are the examples using a Rockwell OEM modem
configuration:

SAMSUNG # setenv mdm_init1 ATZ			- reset the modem to
						  the factory defaults.
SAMSUNG # setenv mdm_init2 ATS0=1               - set modem into
						  answer mode.
SAMSUNG # setenv mdm_flow_control rts/cts       - enable serial port
						  flow control
SAMSUNG # saveenv

The example above initializes modem into answer mode to wait for the
incoming call. RTS/CTS flow control is enabled for the serial port.
(The RTS/CTS flow control is enabled by default on the modem).


SAMSUNG # setenv mdm_init1 ATZ
SAMSUNG # setenv mdm_init2 ATS39=0+IFC=0,0	- disable modem
						  RTS/CTS flow control
SAMSUNG # setenv mdm_init3 ATDT1643973         -  dial out the number
SAMSUNG # setenv mdm_flow_control none
SAMSUNG # saveenv

The example above initializes modem to dial-up connection on the
number 1643973. Flow control is disabled.

Note that flow control must be turned both off or both on for the
board serial port and for the modem.


If the connection was set up successfully, the U-Boot prompt appears
on the terminal console. If not (U-Boot modem was configured for
originating the call and connection was not established) - the board
should be reset for another dial-up try.


Note on the SMDK2400 board:
---------------------------

Since the board serial ports does not have DTR signal wired, modem
should be told to ignore port DTR setting prior to connection to the
SMDK board, and this setting should be stored in modem NVRAM. For the
Rockwell OEM modem this can to be done with the following command:

AT&D0&W
