Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e1eaea46 authored by Alan Cox's avatar Alan Cox Committed by Greg Kroah-Hartman
Browse files

tty: n_gsm line discipline



Add an implementation of GSM 0710 MUX. The implementation currently supports

- Basic and advanced framing (as either end of the link)
- UI or UIH data frames
- Adaption layer 1-4 (1 and 2 via tty, 3 and 4 as skbuff lists)
- Modem and control messages including the correct retry process
- Flow control

and exposes the MUX channels as a set of virtual tty devices including modem
signals. This is an experimental driver.

Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 1ff454ef
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -276,11 +276,18 @@ config N_HDLC
	  Allows synchronous HDLC communications with tty device drivers that
	  support synchronous HDLC such as the Microgate SyncLink adapter.

	  This driver can only be built as a module ( = code which can be
	  This driver can be built as a module ( = code which can be
	  inserted in and removed from the running kernel whenever you want).
	  The module will be called n_hdlc. If you want to do that, say M
	  here.

config N_GSM
	tristate "GSM MUX line discipline support (EXPERIMENTAL)"
	depends on EXPERIMENTAL
	help
	  This line discipline provides support for the GSM MUX protocol and
	  presents the mux as a set of 61 individual tty devices.

config RISCOM8
	tristate "SDL RISCom/8 card support"
	depends on SERIAL_NONSTANDARD
+1 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ obj-$(CONFIG_SYNCLINK) += synclink.o
obj-$(CONFIG_SYNCLINKMP)	+= synclinkmp.o
obj-$(CONFIG_SYNCLINK_GT)	+= synclink_gt.o
obj-$(CONFIG_N_HDLC)		+= n_hdlc.o
obj-$(CONFIG_N_GSM)		+= n_gsm.o
obj-$(CONFIG_AMIGA_BUILTIN_SERIAL) += amiserial.o
obj-$(CONFIG_SX)		+= sx.o generic_serial.o
obj-$(CONFIG_RIO)		+= rio/ generic_serial.o

drivers/char/n_gsm.c

0 → 100644
+2763 −0

File added.

Preview size limit exceeded, changes collapsed.

include/linux/gsmmux.h

0 → 100644
+25 −0
Original line number Diff line number Diff line
#ifndef _LINUX_GSMMUX_H
#define _LINUX_GSMMUX_H

struct gsm_config
{
	unsigned int adaption;
	unsigned int encapsulation;
	unsigned int initiator;
	unsigned int t1;
	unsigned int t2;
	unsigned int t3;
	unsigned int n2;
	unsigned int mru;
	unsigned int mtu;
	unsigned int k;
	unsigned int i;
	unsigned int unused[8];		/* Padding for expansion without
					   breaking stuff */
};

#define GSMIOC_GETCONF		_IOR('G', 0, struct gsm_config)
#define GSMIOC_SETCONF		_IOW('G', 1, struct gsm_config)


#endif
+1 −0
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@
#define N_PPS		18	/* Pulse per Second */
#define N_V253		19	/* Codec control over voice modem */
#define N_CAIF		20      /* CAIF protocol for talking to modems */
#define N_GSM0710	21	/* GSM 0710 Mux */

/*
 * This character is the same as _POSIX_VDISABLE: it cannot be used as