2005-04-17 02:20:36 +04:00
# 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 ;
2008-07-17 00:55:02 +04:00
struct tty_port port ;
2005-09-07 02:16:44 +04:00
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 ;
2005-04-17 02:20:36 +04:00
int close_delay ;
2005-09-07 02:16:44 +04:00
unsigned long event ;
2005-04-17 02:20:36 +04:00
uint dev ;
2005-09-07 02:16:44 +04:00
unsigned long statusflags ;
unsigned long c_iflag ;
unsigned long c_cflag ;
unsigned long c_lflag ;
unsigned long c_oflag ;
2005-09-16 01:53:28 +04:00
unsigned char __iomem * txptr ;
unsigned char __iomem * rxptr ;
2005-04-17 02:20:36 +04:00
struct board_info * board ;
2005-09-16 01:53:28 +04:00
struct board_chan __iomem * brdchan ;
2005-04-17 02:20:36 +04:00
struct digi_struct digiext ;
2005-09-07 02:16:44 +04:00
struct work_struct tqueue ;
2005-09-16 01:53:28 +04:00
struct global_data __iomem * mailbox ;
2005-04-17 02:20:36 +04:00
} ;
struct board_info
{
2005-09-07 02:16:44 +04:00
unsigned char status ;
unsigned char type ;
unsigned char altpin ;
unsigned short numports ;
unsigned long port ;
unsigned long membase ;
2005-09-16 01:53:28 +04:00
void __iomem * re_map_port ;
void __iomem * re_map_membase ;
2005-09-07 02:16:44 +04:00
unsigned long memory_seg ;
2005-04-17 02:20:36 +04:00
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 * ) ;
2005-09-07 02:16:44 +04:00
unsigned char poller_inhibited ;
2005-04-17 02:20:36 +04:00
} ;