mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 18:53:24 +00:00 
			
		
		
		
	 52d417388d
			
		
	
	
		52d417388d
		
	
	
	
	
		
			
			Switch the EPCA driver to include and begin using a tty_port structure Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
			
				
	
	
		
			159 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #define XEMPORTS    0xC02
 | |
| #define XEPORTS     0xC22
 | |
| 
 | |
| #define MAX_ALLOC   0x100
 | |
| 
 | |
| #define MAXBOARDS   12
 | |
| #define FEPCODESEG  0x0200L
 | |
| #define FEPCODE     0x2000L
 | |
| #define BIOSCODE    0xf800L
 | |
| 
 | |
| #define MISCGLOBAL  0x0C00L
 | |
| #define NPORT       0x0C22L
 | |
| #define MBOX        0x0C40L
 | |
| #define PORTBASE    0x0C90L
 | |
| 
 | |
| /* Begin code defines used for epca_setup */
 | |
| 
 | |
| #define INVALID_BOARD_TYPE   0x1
 | |
| #define INVALID_NUM_PORTS    0x2
 | |
| #define INVALID_MEM_BASE     0x4
 | |
| #define INVALID_PORT_BASE    0x8
 | |
| #define INVALID_BOARD_STATUS 0x10
 | |
| #define INVALID_ALTPIN       0x20
 | |
| 
 | |
| /* End code defines used for epca_setup */
 | |
| 
 | |
| 
 | |
| #define FEPCLR      0x00
 | |
| #define FEPMEM      0x02
 | |
| #define FEPRST      0x04
 | |
| #define FEPINT      0x08
 | |
| #define	FEPMASK     0x0e
 | |
| #define	FEPWIN      0x80
 | |
| 
 | |
| #define PCXE    0
 | |
| #define PCXEVE  1
 | |
| #define PCXEM   2   
 | |
| #define EISAXEM 3
 | |
| #define PC64XE  4
 | |
| #define PCXI    5
 | |
| #define PCIXEM  7
 | |
| #define PCICX   8
 | |
| #define PCIXR   9
 | |
| #define PCIXRJ  10
 | |
| #define EPCA_NUM_TYPES 6
 | |
| 
 | |
| 
 | |
| static char *board_desc[] = 
 | |
| {
 | |
| 	"PC/Xe",
 | |
| 	"PC/Xeve",
 | |
| 	"PC/Xem",
 | |
| 	"EISA/Xem",
 | |
| 	"PC/64Xe",
 | |
| 	"PC/Xi",
 | |
| 	"unknown",
 | |
| 	"PCI/Xem",
 | |
| 	"PCI/CX",
 | |
| 	"PCI/Xr",
 | |
| 	"PCI/Xrj",
 | |
| };
 | |
| 
 | |
| #define STARTC      021
 | |
| #define STOPC       023
 | |
| #define IAIXON      0x2000
 | |
| 
 | |
| 
 | |
| #define TXSTOPPED  0x1
 | |
| #define LOWWAIT    0x2
 | |
| #define EMPTYWAIT  0x4
 | |
| #define RXSTOPPED  0x8
 | |
| #define TXBUSY     0x10
 | |
| 
 | |
| #define DISABLED   0
 | |
| #define ENABLED    1
 | |
| #define OFF        0
 | |
| #define ON         1
 | |
| 
 | |
| #define FEPTIMEOUT 200000  
 | |
| #define SERIAL_TYPE_INFO    3
 | |
| #define EPCA_EVENT_HANGUP   1
 | |
| #define EPCA_MAGIC          0x5c6df104L
 | |
| 
 | |
| struct channel 
 | |
| {
 | |
| 	long   magic;
 | |
| 	struct tty_port port;
 | |
| 	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;
 | |
| 	unsigned long  event;
 | |
| 	uint   dev;
 | |
| 	unsigned long  statusflags;
 | |
| 	unsigned long  c_iflag;
 | |
| 	unsigned long  c_cflag;
 | |
| 	unsigned long  c_lflag;
 | |
| 	unsigned long  c_oflag;
 | |
| 	unsigned char __iomem *txptr;
 | |
| 	unsigned char __iomem *rxptr;
 | |
| 	struct board_info           *board;
 | |
| 	struct board_chan	    __iomem *brdchan;
 | |
| 	struct digi_struct          digiext;
 | |
| 	struct work_struct          tqueue;
 | |
| 	struct global_data 	    __iomem *mailbox;
 | |
| };
 | |
| 
 | |
| struct board_info	
 | |
| {
 | |
| 	unsigned char status;
 | |
| 	unsigned char type;
 | |
| 	unsigned char altpin;
 | |
| 	unsigned short numports;
 | |
| 	unsigned long port;
 | |
| 	unsigned long membase;
 | |
| 	void __iomem *re_map_port;
 | |
| 	void __iomem *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 *) ;
 | |
| 	void ( * txwinon ) 	(struct channel *) ;
 | |
| 	void ( * rxwinon )	(struct channel *) ;
 | |
| 	void ( * memoff )	(struct channel *) ;
 | |
| 	void ( * assertgwinon )	(struct channel *) ;
 | |
| 	void ( * assertmemoff )	(struct channel *) ;
 | |
| 	unsigned char poller_inhibited ;
 | |
| };
 | |
| 
 |