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

Commit f2cf8e25 authored by Alan Cox's avatar Alan Cox Committed by Linus Torvalds
Browse files

[PATCH] Clean up the old digi support and rescue it



Signed-off-by: default avatarAlan Cox <alan@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 5dd42c26
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -138,7 +138,7 @@ config CYZ_INTR

config DIGIEPCA
	tristate "Digiboard Intelligent Async Support"
	depends on SERIAL_NONSTANDARD && BROKEN_ON_SMP && (!64BIT || BROKEN)
	depends on SERIAL_NONSTANDARD
	---help---
	  This is a driver for Digi International's Xx, Xeve, and Xem series
	  of cards which provide multiple serial ports. You would need
+19 −19
Original line number Diff line number Diff line
/*          Definitions for DigiBoard ditty(1) command.                 */

#if !defined(TIOCMODG)
#define	TIOCMODG	('d'<<8) | 250		/* get modem ctrl state	*/
#define	TIOCMODS	('d'<<8) | 251		/* set modem ctrl state	*/
#define	TIOCMODG	(('d'<<8) | 250)	/* get modem ctrl state	*/
#define	TIOCMODS	(('d'<<8) | 251)	/* set modem ctrl state	*/
#endif

#if !defined(TIOCMSET)
#define	TIOCMSET	('d'<<8) | 252		/* set modem ctrl state	*/
#define	TIOCMGET	('d'<<8) | 253		/* set modem ctrl state	*/
#define	TIOCMSET	(('d'<<8) | 252)	/* set modem ctrl state	*/
#define	TIOCMGET	(('d'<<8) | 253)	/* set modem ctrl state	*/
#endif

#if !defined(TIOCMBIC)
#define	TIOCMBIC	('d'<<8) | 254		/* set modem ctrl state */
#define	TIOCMBIS	('d'<<8) | 255		/* set modem ctrl state */
#define	TIOCMBIC	(('d'<<8) | 254)	/* set modem ctrl state */
#define	TIOCMBIS	(('d'<<8) | 255)	/* set modem ctrl state */
#endif

#if !defined(TIOCSDTR)
#define	TIOCSDTR	('e'<<8) | 0		/* set DTR		*/
#define	TIOCCDTR	('e'<<8) | 1		/* clear DTR		*/
#define	TIOCSDTR	(('e'<<8) | 0)		/* set DTR		*/
#define	TIOCCDTR	(('e'<<8) | 1)		/* clear DTR		*/
#endif

/************************************************************************
 * Ioctl command arguments for DIGI parameters.
 ************************************************************************/
#define DIGI_GETA	('e'<<8) | 94		/* Read params		*/
#define DIGI_GETA	(('e'<<8) | 94)		/* Read params		*/

#define DIGI_SETA	('e'<<8) | 95		/* Set params		*/
#define DIGI_SETAW	('e'<<8) | 96		/* Drain & set params	*/
#define DIGI_SETAF	('e'<<8) | 97		/* Drain, flush & set params */
#define DIGI_SETA	(('e'<<8) | 95)		/* Set params		*/
#define DIGI_SETAW	(('e'<<8) | 96)		/* Drain & set params	*/
#define DIGI_SETAF	(('e'<<8) | 97)		/* Drain, flush & set params */

#define	DIGI_GETFLOW	('e'<<8) | 99		/* Get startc/stopc flow */
#define	DIGI_GETFLOW	(('e'<<8) | 99)		/* Get startc/stopc flow */
						/* control characters 	 */
#define	DIGI_SETFLOW	('e'<<8) | 100		/* Set startc/stopc flow */
#define	DIGI_SETFLOW	(('e'<<8) | 100)	/* Set startc/stopc flow */
						/* control characters	 */
#define	DIGI_GETAFLOW	('e'<<8) | 101		/* Get Aux. startc/stopc */
#define	DIGI_GETAFLOW	(('e'<<8) | 101)	/* Get Aux. startc/stopc */
						/* flow control chars 	 */
#define	DIGI_SETAFLOW	('e'<<8) | 102		/* Set Aux. startc/stopc */
#define	DIGI_SETAFLOW	(('e'<<8) | 102)	/* Set Aux. startc/stopc */
						/* flow control chars	 */

#define	DIGI_GETINFO	('e'<<8) | 103		/* Fill in digi_info */
#define	DIGI_POLLER	('e'<<8) | 104		/* Turn on/off poller */
#define	DIGI_INIT	('e'<<8) | 105		/* Allow things to run. */
#define	DIGI_GETINFO	(('e'<<8) | 103)	/* Fill in digi_info */
#define	DIGI_POLLER	(('e'<<8) | 104)	/* Turn on/off poller */
#define	DIGI_INIT	(('e'<<8) | 105)	/* Allow things to run. */

struct	digiflow_struct 
{
+77 −77
Original line number Diff line number Diff line
@@ -13,88 +13,88 @@

struct global_data 
{
	volatile ushort cin;
	volatile ushort cout;
	volatile ushort cstart;
	volatile ushort cmax;
	volatile ushort ein;
	volatile ushort eout;
	volatile ushort istart;
	volatile ushort imax;
	u16 cin;
	u16 cout;
	u16 cstart;
	u16 cmax;
	u16 ein;
	u16 eout;
	u16 istart;
	u16 imax;
};


struct board_chan 
{
	int filler1; 
	int filler2;
	volatile ushort tseg;
	volatile ushort tin;
	volatile ushort tout;
	volatile ushort tmax;
	
	volatile ushort rseg;
	volatile ushort rin;
	volatile ushort rout;
	volatile ushort rmax;
	
	volatile ushort tlow;
	volatile ushort rlow;
	volatile ushort rhigh;
	volatile ushort incr;
	
	volatile ushort etime;
	volatile ushort edelay;
	volatile unchar *dev;
	
	volatile ushort iflag;
	volatile ushort oflag;
	volatile ushort cflag;
	volatile ushort gmask;
	
	volatile ushort col;
	volatile ushort delay;
	volatile ushort imask;
	volatile ushort tflush;

	int filler3;
	int filler4;
	int filler5;
	int filler6;
	
	volatile unchar num;
	volatile unchar ract;
	volatile unchar bstat;
	volatile unchar tbusy;
	volatile unchar iempty;
	volatile unchar ilow;
	volatile unchar idata;
	volatile unchar eflag;
	
	volatile unchar tflag;
	volatile unchar rflag;
	volatile unchar xmask;
	volatile unchar xval;
	volatile unchar mstat;
	volatile unchar mchange;
	volatile unchar mint;
	volatile unchar lstat;

	volatile unchar mtran;
	volatile unchar orun;
	volatile unchar startca;
	volatile unchar stopca;
	volatile unchar startc;
	volatile unchar stopc;
	volatile unchar vnext;
	volatile unchar hflow;

	volatile unchar fillc;
	volatile unchar ochar;
	volatile unchar omask;

	unchar filler7;
	unchar filler8[28];
	u32 filler1;
	u32 filler2;
	u16 tseg;
	u16 tin;
	u16 tout;
	u16 tmax;

	u16 rseg;
	u16 rin;
	u16 rout;
	u16 rmax;

	u16 tlow;
	u16 rlow;
	u16 rhigh;
	u16 incr;

	u16 etime;
	u16 edelay;
	unchar *dev;

	u16 iflag;
	u16 oflag;
	u16 cflag;
	u16 gmask;

	u16 col;
	u16 delay;
	u16 imask;
	u16 tflush;

	u32 filler3;
	u32 filler4;
	u32 filler5;
	u32 filler6;

	u8 num;
	u8 ract;
	u8 bstat;
	u8 tbusy;
	u8 iempty;
	u8 ilow;
	u8 idata;
	u8 eflag;

	u8 tflag;
	u8 rflag;
	u8 xmask;
	u8 xval;
	u8 mstat;
	u8 mchange;
	u8 mint;
	u8 lstat;

	u8 mtran;
	u8 orun;
	u8 startca;
	u8 stopca;
	u8 startc;
	u8 stopc;
	u8 vnext;
	u8 hflow;

	u8 fillc;
	u8 ochar;
	u8 omask;

	u8 filler7;
	u8 filler8[28];
}; 


+459 −1129

File changed.

Preview size limit exceeded, changes collapsed.

+54 −54
Original line number Diff line number Diff line
@@ -85,73 +85,73 @@ static char *board_desc[] =
struct channel 
{
	long   magic;
	unchar boardnum;
	unchar channelnum;
	unchar omodem;         /* FEP output modem status     */
	unchar imodem;         /* FEP input modem status      */
	unchar modemfake;      /* Modem values to be forced   */
	unchar modem;          /* Force values                */
	unchar hflow;
	unchar dsr;
	unchar dcd;
	unchar m_rts ; 		/* The bits used in whatever FEP */
	unchar m_dcd ;		/* is indiginous to this board to */
	unchar m_dsr ;		/* represent each of the physical */
	unchar m_cts ;		/* handshake lines */
	unchar m_ri ;
	unchar m_dtr ;
	unchar stopc;
	unchar startc;
	unchar stopca;
	unchar startca;
	unchar fepstopc;
	unchar fepstartc;
	unchar fepstopca;
	unchar fepstartca;
	unchar txwin;
	unchar rxwin;
	ushort fepiflag;
	ushort fepcflag;
	ushort fepoflag;
	ushort txbufhead;
	ushort txbufsize;
	ushort rxbufhead;
	ushort rxbufsize;
	unsigned char boardnum;
	unsigned char channelnum;
	unsigned char omodem;         /* FEP output modem status     */
	unsigned char imodem;         /* FEP input modem status      */
	unsigned char modemfake;      /* Modem values to be forced   */
	unsigned char modem;          /* Force values                */
	unsigned char hflow;
	unsigned char dsr;
	unsigned char dcd;
	unsigned char m_rts ; 		/* The bits used in whatever FEP */
	unsigned char m_dcd ;		/* is indiginous to this board to */
	unsigned char m_dsr ;		/* represent each of the physical */
	unsigned char m_cts ;		/* handshake lines */
	unsigned char m_ri ;
	unsigned char m_dtr ;
	unsigned char stopc;
	unsigned char startc;
	unsigned char stopca;
	unsigned char startca;
	unsigned char fepstopc;
	unsigned char fepstartc;
	unsigned char fepstopca;
	unsigned char fepstartca;
	unsigned char txwin;
	unsigned char rxwin;
	unsigned short fepiflag;
	unsigned short fepcflag;
	unsigned short fepoflag;
	unsigned short txbufhead;
	unsigned short txbufsize;
	unsigned short rxbufhead;
	unsigned short rxbufsize;
	int    close_delay;
	int    count;
	int    blocked_open;
	ulong  event;
	unsigned long  event;
	int    asyncflags;
	uint   dev;
	ulong  statusflags;
	ulong  c_iflag;
	ulong  c_cflag;
	ulong  c_lflag;
	ulong  c_oflag;
	unchar *txptr;
	unchar *rxptr;
	unchar *tmp_buf;
	unsigned long  statusflags;
	unsigned long  c_iflag;
	unsigned long  c_cflag;
	unsigned long  c_lflag;
	unsigned long  c_oflag;
	unsigned char *txptr;
	unsigned char *rxptr;
	unsigned char *tmp_buf;
	struct board_info           *board;
	volatile struct board_chan  *brdchan;
	struct board_chan	    *brdchan;
	struct digi_struct          digiext;
	struct tty_struct           *tty;
	wait_queue_head_t           open_wait;
	wait_queue_head_t           close_wait;
	struct work_struct          tqueue;
	volatile struct global_data *mailbox;
	struct global_data 	    *mailbox;
};

struct board_info	
{
	unchar status;
	unchar type;
	unchar altpin;
	ushort numports;
	unchar *port;
	unchar *membase;
	unchar __iomem *re_map_port;
	unchar *re_map_membase;
	ulong  memory_seg;
	unsigned char status;
	unsigned char type;
	unsigned char altpin;
	unsigned short numports;
	unsigned long port;
	unsigned long membase;
	unsigned char __iomem *re_map_port;
	unsigned char *re_map_membase;
	unsigned long  memory_seg;
	void ( * memwinon )	(struct board_info *, unsigned int) ;
	void ( * memwinoff ) 	(struct board_info *, unsigned int) ;
	void ( * globalwinon )	(struct channel *) ;
@@ -160,6 +160,6 @@ struct board_info
	void ( * memoff )	(struct channel *) ;
	void ( * assertgwinon )	(struct channel *) ;
	void ( * assertmemoff )	(struct channel *) ;
	unchar poller_inhibited ;
	unsigned char poller_inhibited ;
};