tty: n_gsm: add RING/CD control support
authorDaniel Starke <daniel.starke@siemens.com>
Mon, 6 Feb 2023 11:46:05 +0000 (12:46 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 8 Feb 2023 12:19:48 +0000 (13:19 +0100)
The status lines ring and carrier detect are used by the modem to signal
incoming calls (RING) or an established connection (CD). This is
implemented as physical lines on a standard RS232 connection. However,
the muxer protocol encodes these status lines as modem bits IC and DV.
These incoming lines are masked by tty driver (see tty_io.c) and cannot be
set by a user application.

Allow setting RING via TIOCM_OUT1 and CD via TIOCM_OUT2 to allow
implementation of a modem or modem emulator.

Signed-off-by: Daniel Starke <daniel.starke@siemens.com>
Link: https://lore.kernel.org/r/20230206114606.2133-3-daniel.starke@siemens.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/n_gsm.c

index 5783801d652475e832a4b95a3bb46bf6c8ea1971..c6c8ee9cbdc3131f39a4a5b8474c09e8f11990b3 100644 (file)
@@ -540,6 +540,11 @@ static u8 gsm_encode_modem(const struct gsm_dlci *dlci)
                modembits |= MDM_IC;
        if (dlci->modem_tx & TIOCM_CD || dlci->gsm->initiator)
                modembits |= MDM_DV;
+       /* special mappings for passive side to operate as UE */
+       if (dlci->modem_tx & TIOCM_OUT1)
+               modembits |= MDM_IC;
+       if (dlci->modem_tx & TIOCM_OUT2)
+               modembits |= MDM_DV;
        return modembits;
 }