| /* |
| * linux/drivers/char/riscom8.h -- RISCom/8 multiport serial driver. |
| * |
| * Copyright (C) 1994-1996 Dmitry Gorodchanin (pgmdsg@ibi.com) |
| * |
| * This code is loosely based on the Linux serial driver, written by |
| * Linus Torvalds, Theodore T'so and others. The RISCom/8 card |
| * programming info was obtained from various drivers for other OSes |
| * (FreeBSD, ISC, etc), but no source code from those drivers were |
| * directly included in this driver. |
| * |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation; either version 2 of the License, or |
| * (at your option) any later version. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program; if not, write to the Free Software |
| * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
| */ |
| |
| #ifndef __LINUX_RISCOM8_H |
| #define __LINUX_RISCOM8_H |
| |
| #include <linux/serial.h> |
| |
| #ifdef __KERNEL__ |
| |
| #define RC_NBOARD 4 |
| /* NOTE: RISCom decoder recognizes 16 addresses... */ |
| #define RC_NPORT 8 |
| #define RC_BOARD(line) (((line) >> 3) & 0x07) |
| #define RC_PORT(line) ((line) & (RC_NPORT - 1)) |
| |
| /* Ticks per sec. Used for setting receiver timeout and break length */ |
| #define RISCOM_TPS 4000 |
| |
| /* Yeah, after heavy testing I decided it must be 6. |
| * Sure, You can change it if needed. |
| */ |
| #define RISCOM_RXFIFO 6 /* Max. receiver FIFO size (1-8) */ |
| |
| #define RISCOM8_MAGIC 0x0907 |
| |
| #define RC_IOBASE1 0x220 |
| #define RC_IOBASE2 0x240 |
| #define RC_IOBASE3 0x250 |
| #define RC_IOBASE4 0x260 |
| |
| struct riscom_board { |
| unsigned long flags; |
| unsigned short base; |
| unsigned char irq; |
| signed char count; |
| unsigned char DTR; |
| }; |
| |
| #define RC_BOARD_PRESENT 0x00000001 |
| #define RC_BOARD_ACTIVE 0x00000002 |
| |
| struct riscom_port { |
| int magic; |
| int baud_base; |
| int flags; |
| struct tty_struct * tty; |
| int count; |
| int blocked_open; |
| long event; /* long req'd for set_bit --RR */ |
| int timeout; |
| int close_delay; |
| unsigned char * xmit_buf; |
| int custom_divisor; |
| int xmit_head; |
| int xmit_tail; |
| int xmit_cnt; |
| wait_queue_head_t open_wait; |
| wait_queue_head_t close_wait; |
| struct work_struct tqueue; |
| struct work_struct tqueue_hangup; |
| short wakeup_chars; |
| short break_length; |
| unsigned short closing_wait; |
| unsigned char mark_mask; |
| unsigned char IER; |
| unsigned char MSVR; |
| unsigned char COR2; |
| #ifdef RC_REPORT_OVERRUN |
| unsigned long overrun; |
| #endif |
| #ifdef RC_REPORT_FIFO |
| unsigned long hits[10]; |
| #endif |
| }; |
| |
| #endif /* __KERNEL__ */ |
| #endif /* __LINUX_RISCOM8_H */ |