RE: modifying line state manually on ttyS

Ed Vance (EdV@macrolink.com)
Mon, 7 Apr 2003 09:22:26 -0700


On Mon, Apr 07, 2003 at 8:42 AM, Michael Buesch wrote:
> On Monday 07 April 2003 16:16, Alan Cox wrote:
> > TxD is a bad choice. A lot of the hardware cannot control TXD this
> > way. DTR is the usual one because it is easy to handle but there
> > are other control lines you can drive directly (see TIOCGMODEM)
>
> Oh great, you have just discovered the reason, why my driver
> is working
> on my Pentium1-PC but not on my Pentium4-PC. It's simply not supported
> by hardware. I've spent hours and hours about this. :)
>
> My device is actually using DTR and RTS. What line could I
> use instead of
> TxD? Is it possible to use CTS for this, although it is normally a
> "input-signal", but not a "output-signal" like RTS?
>
No, CTS cannot operate as an output.

The following ioctl calls are implemented in the generic serial driver,
/usr/src/linux*/drivers/char/serial.c:

Modem Lines
On special files representing serial ports, the modem con-
trol lines supported by the hardware can be read, and the
modem status lines supported by the hardware can be changed.
The following modem control and status lines may be sup-
ported by a device; they are defined by <asm/termios.h>:

TIOCM_DTR data terminal ready (DTE output)
TIOCM_RTS request to send (DTE output)
TIOCM_CTS clear to send (DTE input)
TIOCM_CAR carrier detect (DTE input)
TIOCM_RNG ring (DTE input)
TIOCM_DSR data set ready (DTE input)
TIOCM_OUT1 UART OUT1 signal (misc output)
TIOCM_OUT2 UART OUT2 signal (misc output)

TIOCM_CD is a synonym for TIOCM_CAR, and TIOCM_RI is a
synonym for TIOCM_RNG. Not all of these are necessarily sup-
ported by any particular device; check the manual page for
the device in question. Output signals OUT1 and OUT2 are not
always connected to port interface pins. Often they are
dedicated to control of UART special functions or loopback.

TIOCMBIS The argument is a pointer to an int whose
value is a mask containing modem control
lines to be turned on. The control lines
whose bits are set in the argument are turned
on; no other control lines are affected.

TIOCMBIC The argument is a pointer to an int whose
value is a mask containing modem control
lines to be turned off. The control lines
whose bits are set in the argument are turned
off; no other control lines are affected.

TIOCMGET The argument is a pointer to an int. The
current state of the modem status lines is
fetched and stored in the int pointed to by
the argument.

TIOCMSET The argument is a pointer to an int contain-
ing a new set of modem control lines. The
modem control lines are turned on or off,
depending on whether the bit for that mode is
set or clear.

Cheers,
Ed

----------------------------------------------------------------
Ed Vance edv (at) macrolink (dot) com
Macrolink, Inc. 1500 N. Kellogg Dr Anaheim, CA 92807
----------------------------------------------------------------
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/