forked from Minki/linux
bc9a5154a2
[originally sent to Alan, he had no problems with it] - iomem pointers marked as such - several direct dereferencings of such pointers replaced with read[bw](). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
166 lines
3.9 KiB
C
166 lines
3.9 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_NORMAL 1
|
|
#define SERIAL_TYPE_INFO 3
|
|
#define EPCA_EVENT_HANGUP 1
|
|
#define EPCA_MAGIC 0x5c6df104L
|
|
|
|
struct channel
|
|
{
|
|
long magic;
|
|
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;
|
|
unsigned long event;
|
|
int asyncflags;
|
|
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;
|
|
unsigned char *tmp_buf;
|
|
struct board_info *board;
|
|
struct board_chan __iomem *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;
|
|
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 ;
|
|
};
|
|
|