RE: modifying line state manually on ttyS

From: Ed Vance (EdV@macrolink.com)
Date: Mon Apr 07 2003 - 11:22:26 EST


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/



This archive was generated by hypermail 2b29 : Mon Apr 07 2003 - 22:00:31 EST