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 Original line Diff line number Diff line
@@ -276,11 +276,18 @@ config N_HDLC
	  Allows synchronous HDLC communications with tty device drivers that
	  Allows synchronous HDLC communications with tty device drivers that
	  support synchronous HDLC such as the Microgate SyncLink adapter.
	  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).
	  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
	  The module will be called n_hdlc. If you want to do that, say M
	  here.
	  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
config RISCOM8
	tristate "SDL RISCom/8 card support"
	tristate "SDL RISCom/8 card support"
	depends on SERIAL_NONSTANDARD
	depends on SERIAL_NONSTANDARD
+1 −0
Original line number Original line Diff line number Diff line
@@ -40,6 +40,7 @@ obj-$(CONFIG_SYNCLINK) += synclink.o
obj-$(CONFIG_SYNCLINKMP)	+= synclinkmp.o
obj-$(CONFIG_SYNCLINKMP)	+= synclinkmp.o
obj-$(CONFIG_SYNCLINK_GT)	+= synclink_gt.o
obj-$(CONFIG_SYNCLINK_GT)	+= synclink_gt.o
obj-$(CONFIG_N_HDLC)		+= n_hdlc.o
obj-$(CONFIG_N_HDLC)		+= n_hdlc.o
obj-$(CONFIG_N_GSM)		+= n_gsm.o
obj-$(CONFIG_AMIGA_BUILTIN_SERIAL) += amiserial.o
obj-$(CONFIG_AMIGA_BUILTIN_SERIAL) += amiserial.o
obj-$(CONFIG_SX)		+= sx.o generic_serial.o
obj-$(CONFIG_SX)		+= sx.o generic_serial.o
obj-$(CONFIG_RIO)		+= rio/ 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 Original line 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 Original line Diff line number Diff line
@@ -48,6 +48,7 @@
#define N_PPS		18	/* Pulse per Second */
#define N_PPS		18	/* Pulse per Second */
#define N_V253		19	/* Codec control over voice modem */
#define N_V253		19	/* Codec control over voice modem */
#define N_CAIF		20      /* CAIF protocol for talking to modems */
#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
 * This character is the same as _POSIX_VDISABLE: it cannot be used as