diff options
author | Jiri Slaby <jirislaby@gmail.com> | 2006-12-08 02:39:04 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-08 08:28:58 -0800 |
commit | 15b611f63f0fb8709a5fae498c2d688b5d05edc9 (patch) | |
tree | 18622ece3ecda7d3c8e19f312af36a28cf2b4c88 /drivers/char/sx.c | |
parent | 55e7071a3c6cdb65fb5ce3ea9c692a8d78ed0844 (diff) |
[PATCH] Char: sx, whitespace cleanup
Use Lindent to cleanup whitespace. Wrap long lines by hand.
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/char/sx.c')
-rw-r--r-- | drivers/char/sx.c | 1822 |
1 files changed, 976 insertions, 846 deletions
diff --git a/drivers/char/sx.c b/drivers/char/sx.c index ca6d5189501..401ebab2601 100644 --- a/drivers/char/sx.c +++ b/drivers/char/sx.c @@ -238,7 +238,6 @@ #include <linux/generic_serial.h> #include "sx.h" - /* I don't think that this driver can handle more than 256 ports on one machine. You'll have to increase the number of boards in sx.h if you want more than 4 boards. */ @@ -253,7 +252,6 @@ /* Am I paranoid or not ? ;-) */ #undef SX_PARANOIA_CHECK - /* 20 -> 2000 per second. The card should rate-limit interrupts at 100 Hz, but it is user configurable. I don't recommend going above 1000 Hz. The interrupt ratelimit might trigger if the interrupt is @@ -267,7 +265,6 @@ interrupt. Use polling. */ #undef IRQ_RATE_LIMIT - #if 0 /* Not implemented */ /* @@ -276,26 +273,24 @@ */ #define SX_REPORT_FIFO #define SX_REPORT_OVERRUN -#endif - +#endif /* Function prototypes */ -static void sx_disable_tx_interrupts (void * ptr); -static void sx_enable_tx_interrupts (void * ptr); -static void sx_disable_rx_interrupts (void * ptr); -static void sx_enable_rx_interrupts (void * ptr); -static int sx_get_CD (void * ptr); -static void sx_shutdown_port (void * ptr); -static int sx_set_real_termios (void *ptr); -static void sx_close (void *ptr); -static int sx_chars_in_buffer (void * ptr); -static int sx_init_board (struct sx_board *board); -static int sx_init_portstructs (int nboards, int nports); -static int sx_fw_ioctl (struct inode *inode, struct file *filp, - unsigned int cmd, unsigned long arg); +static void sx_disable_tx_interrupts(void *ptr); +static void sx_enable_tx_interrupts(void *ptr); +static void sx_disable_rx_interrupts(void *ptr); +static void sx_enable_rx_interrupts(void *ptr); +static int sx_get_CD(void *ptr); +static void sx_shutdown_port(void *ptr); +static int sx_set_real_termios(void *ptr); +static void sx_close(void *ptr); +static int sx_chars_in_buffer(void *ptr); +static int sx_init_board(struct sx_board *board); +static int sx_init_portstructs(int nboards, int nports); +static int sx_fw_ioctl(struct inode *inode, struct file *filp, + unsigned int cmd, unsigned long arg); static int sx_init_drivers(void); - static struct tty_driver *sx_driver; static DEFINE_MUTEX(sx_boards_lock); @@ -305,7 +300,6 @@ static int sx_initialized; static int sx_nports; static int sx_debug; - /* You can have the driver poll your card. - Set sx_poll to 1 to poll every timer tick (10ms on Intel). This is used when the card cannot use an interrupt for some reason. @@ -330,11 +324,17 @@ static int sx_maxints = 100; or less.... -- REW duh: Card at 0xa0000 is possible on HP Netserver?? -- pvdl */ -static int sx_probe_addrs[]= {0xc0000, 0xd0000, 0xe0000, - 0xc8000, 0xd8000, 0xe8000}; -static int si_probe_addrs[]= {0xc0000, 0xd0000, 0xe0000, - 0xc8000, 0xd8000, 0xe8000, 0xa0000}; -static int si1_probe_addrs[]= { 0xd0000}; +static int sx_probe_addrs[] = { + 0xc0000, 0xd0000, 0xe0000, + 0xc8000, 0xd8000, 0xe8000 +}; +static int si_probe_addrs[] = { + 0xc0000, 0xd0000, 0xe0000, + 0xc8000, 0xd8000, 0xe8000, 0xa0000 +}; +static int si1_probe_addrs[] = { + 0xd0000 +}; #define NR_SX_ADDRS ARRAY_SIZE(sx_probe_addrs) #define NR_SI_ADDRS ARRAY_SIZE(si_probe_addrs) @@ -362,13 +362,12 @@ static struct real_driver sx_real_driver = { sx_disable_rx_interrupts, sx_enable_rx_interrupts, sx_get_CD, - sx_shutdown_port, - sx_set_real_termios, + sx_shutdown_port, + sx_set_real_termios, sx_chars_in_buffer, sx_close, }; - /* This driver can spew a whole lot of debugging output at you. If you need maximum performance, you should disable the DEBUG define. To @@ -379,23 +378,17 @@ static struct real_driver sx_real_driver = { */ #define DEBUG - #ifdef DEBUG -#define sx_dprintk(f, str...) if (sx_debug & f) printk (str) +#define sx_dprintk(f, str...) if (sx_debug & f) printk (str) #else -#define sx_dprintk(f, str...) /* nothing */ +#define sx_dprintk(f, str...) /* nothing */ #endif +#define func_enter() sx_dprintk(SX_DEBUG_FLOW, "sx: enter %s\n",__FUNCTION__) +#define func_exit() sx_dprintk(SX_DEBUG_FLOW, "sx: exit %s\n",__FUNCTION__) - -#define func_enter() sx_dprintk (SX_DEBUG_FLOW, "sx: enter %s\n",__FUNCTION__) -#define func_exit() sx_dprintk (SX_DEBUG_FLOW, "sx: exit %s\n", __FUNCTION__) - -#define func_enter2() sx_dprintk (SX_DEBUG_FLOW, "sx: enter %s (port %d)\n", \ - __FUNCTION__, port->line) - - - +#define func_enter2() sx_dprintk(SX_DEBUG_FLOW, "sx: enter %s (port %d)\n", \ + __FUNCTION__, port->line) /* * Firmware loader driver specific routines @@ -403,31 +396,26 @@ static struct real_driver sx_real_driver = { */ static const struct file_operations sx_fw_fops = { - .owner = THIS_MODULE, - .ioctl = sx_fw_ioctl, + .owner = THIS_MODULE, + .ioctl = sx_fw_ioctl, }; static struct miscdevice sx_fw_device = { SXCTL_MISC_MINOR, "sxctl", &sx_fw_fops }; - - - - #ifdef SX_PARANOIA_CHECK /* This doesn't work. Who's paranoid around here? Not me! */ -static inline int sx_paranoia_check(struct sx_port const * port, +static inline int sx_paranoia_check(struct sx_port const *port, char *name, const char *routine) { + static const char *badmagic = KERN_ERR "sx: Warning: bad sx port magic " + "number for device %s in %s\n"; + static const char *badinfo = KERN_ERR "sx: Warning: null sx port for " + "device %s in %s\n"; - static const char *badmagic = - KERN_ERR "sx: Warning: bad sx port magic number for device %s in %s\n"; - static const char *badinfo = - KERN_ERR "sx: Warning: null sx port for device %s in %s\n"; - if (!port) { printk(badinfo, name, routine); return 1; @@ -450,23 +438,24 @@ static inline int sx_paranoia_check(struct sx_port const * port, #define TIMEOUT_1 30 #define TIMEOUT_2 1000000 - #ifdef DEBUG static void my_hd_io(void __iomem *p, int len) { int i, j, ch; unsigned char __iomem *addr = p; - for (i=0;i<len;i+=16) { - printk ("%p ", addr+i); - for (j=0;j<16;j++) { - printk ("%02x %s", readb(addr+j+i), (j==7)?" ":""); + for (i = 0; i < len; i += 16) { + printk("%p ", addr + i); + for (j = 0; j < 16; j++) { + printk("%02x %s", readb(addr + j + i), + (j == 7) ? " " : ""); } - for (j=0;j<16;j++) { - ch = readb(addr+j+i); - printk ("%c", (ch < 0x20)?'.':((ch > 0x7f)?'.':ch)); + for (j = 0; j < 16; j++) { + ch = readb(addr + j + i); + printk("%c", (ch < 0x20) ? '.' : + ((ch > 0x7f) ? '.' : ch)); } - printk ("\n"); + printk("\n"); } } static void my_hd(void *p, int len) @@ -474,419 +463,468 @@ static void my_hd(void *p, int len) int i, j, ch; unsigned char *addr = p; - for (i=0;i<len;i+=16) { - printk ("%p ", addr+i); - for (j=0;j<16;j++) { - printk ("%02x %s", addr[j+i], (j==7)?" ":""); + for (i = 0; i < len; i += 16) { + printk("%p ", addr + i); + for (j = 0; j < 16; j++) { + printk("%02x %s", addr[j + i], (j == 7) ? " " : ""); } - for (j=0;j<16;j++) { - ch = addr[j+i]; - printk ("%c", (ch < 0x20)?'.':((ch > 0x7f)?'.':ch)); + for (j = 0; j < 16; j++) { + ch = addr[j + i]; + printk("%c", (ch < 0x20) ? '.' : + ((ch > 0x7f) ? '.' : ch)); } - printk ("\n"); + printk("\n"); } } #endif - - /* This needs redoing for Alpha -- REW -- Done. */ -static inline void write_sx_byte (struct sx_board *board, int offset, u8 byte) +static inline void write_sx_byte(struct sx_board *board, int offset, u8 byte) { - writeb (byte, board->base+offset); + writeb(byte, board->base + offset); } -static inline u8 read_sx_byte (struct sx_board *board, int offset) +static inline u8 read_sx_byte(struct sx_board *board, int offset) { - return readb (board->base+offset); + return readb(board->base + offset); } - -static inline void write_sx_word (struct sx_board *board, int offset, u16 word) +static inline void write_sx_word(struct sx_board *board, int offset, u16 word) { - writew (word, board->base+offset); + writew(word, board->base + offset); } -static inline u16 read_sx_word (struct sx_board *board, int offset) +static inline u16 read_sx_word(struct sx_board *board, int offset) { - return readw (board->base + offset); + return readw(board->base + offset); } - -static int sx_busy_wait_eq (struct sx_board *board, - int offset, int mask, int correctval) +static int sx_busy_wait_eq(struct sx_board *board, + int offset, int mask, int correctval) { int i; - func_enter (); + func_enter(); - for (i=0; i < TIMEOUT_1 ;i++) - if ((read_sx_byte (board, offset) & mask) == correctval) { - func_exit (); + for (i = 0; i < TIMEOUT_1; i++) + if ((read_sx_byte(board, offset) & mask) == correctval) { + func_exit(); return 1; } - for (i=0; i < TIMEOUT_2 ;i++) { - if ((read_sx_byte (board, offset) & mask) == correctval) { - func_exit (); + for (i = 0; i < TIMEOUT_2; i++) { + if ((read_sx_byte(board, offset) & mask) == correctval) { + func_exit(); return 1; } - udelay (1); + udelay(1); } - func_exit (); + func_exit(); return 0; } - -static int sx_busy_wait_neq (struct sx_board *board, - int offset, int mask, int badval) +static int sx_busy_wait_neq(struct sx_board *board, + int offset, int mask, int badval) { int i; - func_enter (); + func_enter(); - for (i=0; i < TIMEOUT_1 ;i++) - if ((read_sx_byte (board, offset) & mask) != badval) { - func_exit (); + for (i = 0; i < TIMEOUT_1; i++) + if ((read_sx_byte(board, offset) & mask) != badval) { + func_exit(); return 1; } - for (i=0; i < TIMEOUT_2 ;i++) { - if ((read_sx_byte (board, offset) & mask) != badval) { - func_exit (); + for (i = 0; i < TIMEOUT_2; i++) { + if ((read_sx_byte(board, offset) & mask) != badval) { + func_exit(); return 1; } - udelay (1); + udelay(1); } - func_exit (); + func_exit(); return 0; } - - /* 5.6.4 of 6210028 r2.3 */ -static int sx_reset (struct sx_board *board) +static int sx_reset(struct sx_board *board) { - func_enter (); + func_enter(); - if (IS_SX_BOARD (board)) { + if (IS_SX_BOARD(board)) { - write_sx_byte (board, SX_CONFIG, 0); - write_sx_byte (board, SX_RESET, 1); /* Value doesn't matter */ + write_sx_byte(board, SX_CONFIG, 0); + write_sx_byte(board, SX_RESET, 1); /* Value doesn't matter */ - if (!sx_busy_wait_eq (board, SX_RESET_STATUS, 1, 0)) { - printk (KERN_INFO "sx: Card doesn't respond to reset....\n"); + if (!sx_busy_wait_eq(board, SX_RESET_STATUS, 1, 0)) { + printk(KERN_INFO "sx: Card doesn't respond to " + "reset...\n"); return 0; } } else if (IS_EISA_BOARD(board)) { - outb(board->irq<<4, board->eisa_base+0xc02); + outb(board->irq << 4, board->eisa_base + 0xc02); } else if (IS_SI1_BOARD(board)) { - write_sx_byte (board, SI1_ISA_RESET, 0); // value does not matter + write_sx_byte(board, SI1_ISA_RESET, 0); /*value doesn't matter*/ } else { /* Gory details of the SI/ISA board */ - write_sx_byte (board, SI2_ISA_RESET, SI2_ISA_RESET_SET); - write_sx_byte (board, SI2_ISA_IRQ11, SI2_ISA_IRQ11_CLEAR); - write_sx_byte (board, SI2_ISA_IRQ12, SI2_ISA_IRQ12_CLEAR); - write_sx_byte (board, SI2_ISA_IRQ15, SI2_ISA_IRQ15_CLEAR); - write_sx_byte (board, SI2_ISA_INTCLEAR, SI2_ISA_INTCLEAR_CLEAR); - write_sx_byte (board, SI2_ISA_IRQSET, SI2_ISA_IRQSET_CLEAR); + write_sx_byte(board, SI2_ISA_RESET, SI2_ISA_RESET_SET); + write_sx_byte(board, SI2_ISA_IRQ11, SI2_ISA_IRQ11_CLEAR); + write_sx_byte(board, SI2_ISA_IRQ12, SI2_ISA_IRQ12_CLEAR); + write_sx_byte(board, SI2_ISA_IRQ15, SI2_ISA_IRQ15_CLEAR); + write_sx_byte(board, SI2_ISA_INTCLEAR, SI2_ISA_INTCLEAR_CLEAR); + write_sx_byte(board, SI2_ISA_IRQSET, SI2_ISA_IRQSET_CLEAR); } - func_exit (); + func_exit(); return 1; } - /* This doesn't work on machines where "NULL" isn't 0 */ /* If you have one of those, someone will need to write the equivalent of this, which will amount to about 3 lines. I don't want to complicate this right now. -- REW (See, I do write comments every now and then :-) */ -#define OFFSETOF(strct, elem) ((long)&(((struct strct *)NULL)->elem)) - - -#define CHAN_OFFSET(port,elem) (port->ch_base + OFFSETOF (_SXCHANNEL, elem)) -#define MODU_OFFSET(board,addr,elem) (addr + OFFSETOF (_SXMODULE, elem)) -#define BRD_OFFSET(board,elem) (OFFSETOF (_SXCARD, elem)) +#define OFFSETOF(strct, elem) ((long)&(((struct strct *)NULL)->elem)) +#define CHAN_OFFSET(port,elem) (port->ch_base + OFFSETOF (_SXCHANNEL, elem)) +#define MODU_OFFSET(board,addr,elem) (addr + OFFSETOF (_SXMODULE, elem)) +#define BRD_OFFSET(board,elem) (OFFSETOF (_SXCARD, elem)) #define sx_write_channel_byte(port, elem, val) \ - write_sx_byte (port->board, CHAN_OFFSET (port, elem), val) + write_sx_byte (port->board, CHAN_OFFSET (port, elem), val) #define sx_read_channel_byte(port, elem) \ - read_sx_byte (port->board, CHAN_OFFSET (port, elem)) + read_sx_byte (port->board, CHAN_OFFSET (port, elem)) #define sx_write_channel_word(port, elem, val) \ - write_sx_word (port->board, CHAN_OFFSET (port, elem), val) + write_sx_word (port->board, CHAN_OFFSET (port, elem), val) #define sx_read_channel_word(port, elem) \ - read_sx_word (port->board, CHAN_OFFSET (port, elem)) - + read_sx_word (port->board, CHAN_OFFSET (port, elem)) #define sx_write_module_byte(board, addr, elem, val) \ - write_sx_byte (board, MODU_OFFSET (board, addr, elem), val) + write_sx_byte (board, MODU_OFFSET (board, addr, elem), val) #define sx_read_module_byte(board, addr, elem) \ - read_sx_byte (board, MODU_OFFSET (board, addr, elem)) + read_sx_byte (board, MODU_OFFSET (board, addr, elem)) #define sx_write_module_word(board, addr, elem, val) \ - write_sx_word (board, MODU_OFFSET (board, addr, elem), val) + write_sx_word (board, MODU_OFFSET (board, addr, elem), val) #define sx_read_module_word(board, addr, elem) \ - read_sx_word (board, MODU_OFFSET (board, addr, elem)) - + read_sx_word (board, MODU_OFFSET (board, addr, elem)) #define sx_write_board_byte(board, elem, val) \ - write_sx_byte (board, BRD_OFFSET (board, elem), val) + write_sx_byte (board, BRD_OFFSET (board, elem), val) #define sx_read_board_byte(board, elem) \ - read_sx_byte (board, BRD_OFFSET (board, elem)) + read_sx_byte (board, BRD_OFFSET (board, elem)) #define sx_write_board_word(board, elem, val) \ - write_sx_word (board, BRD_OFFSET (board, elem), val) + write_sx_word (board, BRD_OFFSET (board, elem), val) #define sx_read_board_word(board, elem) \ - read_sx_word (board, BRD_OFFSET (board, elem)) - + read_sx_word (board, BRD_OFFSET (board, elem)) -static int sx_start_board (struct sx_board *board) +static int sx_start_board(struct sx_board *board) { - if (IS_SX_BOARD (board)) { - write_sx_byte (board, SX_CONFIG, SX_CONF_BUSEN); + if (IS_SX_BOARD(board)) { + write_sx_byte(board, SX_CONFIG, SX_CONF_BUSEN); } else if (IS_EISA_BOARD(board)) { write_sx_byte(board, SI2_EISA_OFF, SI2_EISA_VAL); - outb((board->irq<<4)|4, board->eisa_base+0xc02); + outb((board->irq << 4) | 4, board->eisa_base + 0xc02); } else if (IS_SI1_BOARD(board)) { - write_sx_byte (board, SI1_ISA_RESET_CLEAR, 0); - write_sx_byte (board, SI1_ISA_INTCL, 0); + write_sx_byte(board, SI1_ISA_RESET_CLEAR, 0); + write_sx_byte(board, SI1_ISA_INTCL, 0); } else { /* Don't bug me about the clear_set. I haven't the foggiest idea what it's about -- REW */ - write_sx_byte (board, SI2_ISA_RESET, SI2_ISA_RESET_CLEAR); - write_sx_byte (board, SI2_ISA_INTCLEAR, SI2_ISA_INTCLEAR_SET); + write_sx_byte(board, SI2_ISA_RESET, SI2_ISA_RESET_CLEAR); + write_sx_byte(board, SI2_ISA_INTCLEAR, SI2_ISA_INTCLEAR_SET); } return 1; } #define SX_IRQ_REG_VAL(board) \ - ((board->flags & SX_ISA_BOARD)?(board->irq << 4):0) + ((board->flags & SX_ISA_BOARD) ? (board->irq << 4) : 0) /* Note. The SX register is write-only. Therefore, we have to enable the bus too. This is a no-op, if you don't mess with this driver... */ -static int sx_start_interrupts (struct sx_board *board) +static int sx_start_interrupts(struct sx_board *board) { /* Don't call this with board->irq == 0 */ if (IS_SX_BOARD(board)) { - write_sx_byte (board, SX_CONFIG, SX_IRQ_REG_VAL (board) | - SX_CONF_BUSEN | - SX_CONF_HOSTIRQ); + write_sx_byte(board, SX_CONFIG, SX_IRQ_REG_VAL(board) | + SX_CONF_BUSEN | SX_CONF_HOSTIRQ); } else if (IS_EISA_BOARD(board)) { - inb(board->eisa_base+0xc03); + inb(board->eisa_base + 0xc03); } else if (IS_SI1_BOARD(board)) { - write_sx_byte (board, SI1_ISA_INTCL,0); - write_sx_byte (board, SI1_ISA_INTCL_CLEAR,0); + write_sx_byte(board, SI1_ISA_INTCL, 0); + write_sx_byte(board, SI1_ISA_INTCL_CLEAR, 0); } else { switch (board->irq) { - case 11:write_sx_byte (board, SI2_ISA_IRQ11, SI2_ISA_IRQ11_SET);break; - case 12:write_sx_byte (board, SI2_ISA_IRQ12, SI2_ISA_IRQ12_SET);break; - case 15:write_sx_byte (board, SI2_ISA_IRQ15, SI2_ISA_IRQ15_SET);break; - default:printk (KERN_INFO "sx: SI/XIO card doesn't support interrupt %d.\n", - board->irq); - return 0; + case 11: + write_sx_byte(board, SI2_ISA_IRQ11, SI2_ISA_IRQ11_SET); + break; + case 12: + write_sx_byte(board, SI2_ISA_IRQ12, SI2_ISA_IRQ12_SET); + break; + case 15: + write_sx_byte(board, SI2_ISA_IRQ15, SI2_ISA_IRQ15_SET); + break; + default: + printk(KERN_INFO "sx: SI/XIO card doesn't support " + "interrupt %d.\n", board->irq); + return 0; } - write_sx_byte (board, SI2_ISA_INTCLEAR, SI2_ISA_INTCLEAR_SET); + write_sx_byte(board, SI2_ISA_INTCLEAR, SI2_ISA_INTCLEAR_SET); } return 1; } - -static int sx_send_command (struct sx_port *port, - int command, int mask, int newstat) +static int sx_send_command(struct sx_port *port, + int command, int mask, int newstat) { - func_enter2 (); - write_sx_byte (port->board, CHAN_OFFSET (port, hi_hstat), command); - func_exit (); - return sx_busy_wait_eq (port->board, CHAN_OFFSET (port, hi_hstat), mask, newstat); + func_enter2(); + write_sx_byte(port->board, CHAN_OFFSET(port, hi_hstat), command); + func_exit(); + return sx_busy_wait_eq(port->board, CHAN_OFFSET(port, hi_hstat), mask, + newstat); } - -static char *mod_type_s (int module_type) +static char *mod_type_s(int module_type) { switch (module_type) { - case TA4: return "TA4"; - case TA8: return "TA8"; - case TA4_ASIC: return "TA4_ASIC"; - case TA8_ASIC: return "TA8_ASIC"; - case MTA_CD1400:return "MTA_CD1400"; - case SXDC: return "SXDC"; - default:return "Unknown/invalid"; + case TA4: + return "TA4"; + case TA8: + return "TA8"; + case TA4_ASIC: + return "TA4_ASIC"; + case TA8_ASIC: + return "TA8_ASIC"; + case MTA_CD1400: + return "MTA_CD1400"; + case SXDC: + return "SXDC"; + default: + return "Unknown/invalid"; } } - -static char *pan_type_s (int pan_type) +static char *pan_type_s(int pan_type) { switch (pan_type) { - case MOD_RS232DB25: return "MOD_RS232DB25"; - case MOD_RS232RJ45: return "MOD_RS232RJ45"; - case MOD_RS422DB25: return "MOD_RS422DB25"; - case MOD_PARALLEL: return "MOD_PARALLEL"; - case MOD_2_RS232DB25: return "MOD_2_RS232DB25"; - case MOD_2_RS232RJ45: return "MOD_2_RS232RJ45"; - case MOD_2_RS422DB25: return "MOD_2_RS422DB25"; - case MOD_RS232DB25MALE: return "MOD_RS232DB25MALE"; - case MOD_2_PARALLEL: return "MOD_2_PARALLEL"; - case MOD_BLANK: return "empty"; - default:return "invalid"; + case MOD_RS232DB25: + return "MOD_RS232DB25"; + case MOD_RS232RJ45: + return "MOD_RS232RJ45"; + case MOD_RS422DB25: + return "MOD_RS422DB25"; + case MOD_PARALLEL: + return "MOD_PARALLEL"; + case MOD_2_RS232DB25: + return "MOD_2_RS232DB25"; + case MOD_2_RS232RJ45: + return "MOD_2_RS232RJ45"; + case MOD_2_RS422DB25: + return "MOD_2_RS422DB25"; + case MOD_RS232DB25MALE: + return "MOD_RS232DB25MALE"; + case MOD_2_PARALLEL: + return "MOD_2_PARALLEL"; + case MOD_BLANK: + return "empty"; + default: + return "invalid"; } } - -static int mod_compat_type (int module_type) +static int mod_compat_type(int module_type) { return module_type >> 4; } static void sx_reconfigure_port(struct sx_port *port) { - if (sx_read_channel_byte (port, hi_hstat) == HS_IDLE_OPEN) { - if (sx_send_command (port, HS_CONFIG, -1, HS_IDLE_OPEN) != 1) { - printk (KERN_WARNING "sx: Sent reconfigure command, but card didn't react.\n"); + if (sx_read_channel_byte(port, hi_hstat) == HS_IDLE_OPEN) { + if (sx_send_command(port, HS_CONFIG, -1, HS_IDLE_OPEN) != 1) { + printk(KERN_WARNING "sx: Sent reconfigure command, but " + "card didn't react.\n"); } } else { - sx_dprintk (SX_DEBUG_TERMIOS, - "sx: Not sending reconfigure: port isn't open (%02x).\n", - sx_read_channel_byte (port, hi_hstat)); - } + sx_dprintk(SX_DEBUG_TERMIOS, "sx: Not sending reconfigure: " + "port isn't open (%02x).\n", + sx_read_channel_byte(port, hi_hstat)); + } } -static void sx_setsignals (struct sx_port *port, int dtr, int rts) +static void sx_setsignals(struct sx_port *port, int dtr, int rts) { int t; - func_enter2 (); + func_enter2(); - t = sx_read_channel_byte (port, hi_op); - if (dtr >= 0) t = dtr? (t | OP_DTR): (t & ~OP_DTR); - if (rts >= 0) t = rts? (t | OP_RTS): (t & ~OP_RTS); - sx_write_channel_byte (port, hi_op, t); - sx_dprintk (SX_DEBUG_MODEMSIGNALS, "setsignals: %d/%d\n", dtr, rts); + t = sx_read_channel_byte(port, hi_op); + if (dtr >= 0) + t = dtr ? (t | OP_DTR) : (t & ~OP_DTR); + if (rts >= 0) + t = rts ? (t | OP_RTS) : (t & ~OP_RTS); + sx_write_channel_byte(port, hi_op, t); + sx_dprintk(SX_DEBUG_MODEMSIGNALS, "setsignals: %d/%d\n", dtr, rts); - func_exit (); + func_exit(); } - - -static int sx_getsignals (struct sx_port *port) +static int sx_getsignals(struct sx_port *port) { - int i_stat,o_stat; - - o_stat = sx_read_channel_byte (port, hi_op); - i_stat = sx_read_channel_byte (port, hi_ip); - - sx_dprintk (SX_DEBUG_MODEMSIGNALS, "getsignals: %d/%d (%d/%d) %02x/%02x\n", - (o_stat & OP_DTR) != 0, (o_stat & OP_RTS) != 0, - port->c_dcd, sx_get_CD (port), - sx_read_channel_byte (port, hi_ip), - sx_read_channel_byte (port, hi_state)); - - return (((o_stat & OP_DTR)?TIOCM_DTR:0) | - ((o_stat & OP_RTS)?TIOCM_RTS:0) | - ((i_stat & IP_CTS)?TIOCM_CTS:0) | - ((i_stat & IP_DCD)?TIOCM_CAR:0) | - ((i_stat & IP_DSR)?TIOCM_DSR:0) | - ((i_stat & IP_RI)?TIOCM_RNG:0) - ); + int i_stat, o_stat; + + o_stat = sx_read_channel_byte(port, hi_op); + i_stat = sx_read_channel_byte(port, hi_ip); + + sx_dprintk(SX_DEBUG_MODEMSIGNALS, "getsignals: %d/%d (%d/%d) " + "%02x/%02x\n", + (o_stat & OP_DTR) != 0, (o_stat & OP_RTS) != 0, + port->c_dcd, sx_get_CD(port), + sx_read_channel_byte(port, hi_ip), + sx_read_channel_byte(port, hi_state)); + + return (((o_stat & OP_DTR) ? TIOCM_DTR : 0) | + ((o_stat & OP_RTS) ? TIOCM_RTS : 0) | + ((i_stat & IP_CTS) ? TIOCM_CTS : 0) | + ((i_stat & IP_DCD) ? TIOCM_CAR : 0) | + ((i_stat & IP_DSR) ? TIOCM_DSR : 0) | + ((i_stat & IP_RI) ? TIOCM_RNG : 0)); } - -static void sx_set_baud (struct sx_port *port) +static void sx_set_baud(struct sx_port *port) { int t; if (port->board->ta_type == MOD_SXDC) { switch (port->gs.baud) { - /* Save some typing work... */ -#define e(x) case x:t= BAUD_ ## x ; break - e(50);e(75);e(110);e(150);e(200);e(300);e(600); - e(1200);e(1800);e(2000);e(2400);e(4800);e(7200); - e(9600);e(14400);e(19200);e(28800);e(38400); - e(56000);e(57600);e(64000);e(76800);e(115200); - e(128000);e(150000);e(230400);e(256000);e(460800); - e(921600); - case 134 :t = BAUD_134_5; break; - case 0 :t = -1; - break; + /* Save some typing work... */ +#define e(x) case x: t = BAUD_ ## x; break + e(50); + e(75); + e(110); + e(150); + e(200); + e(300); + e(600); + e(1200); + e(1800); + e(2000); + e(2400); + e(4800); + e(7200); + e(9600); + e(14400); + e(19200); + e(28800); + e(38400); + e(56000); + e(57600); + e(64000); + e(76800); + e(115200); + e(128000); + e(150000); + e(230400); + e(256000); + e(460800); + e(921600); + case 134: + t = BAUD_134_5; + break; + case 0: + t = -1; + break; default: /* Can I return "invalid"? */ t = BAUD_9600; - printk (KERN_INFO "sx: unsupported baud rate: %d.\n", port->gs.baud); + printk(KERN_INFO "sx: unsupported baud rate: %d.\n", + port->gs.baud); break; } #undef e if (t > 0) { - /* The baud rate is not set to 0, so we're enabeling DTR... -- REW */ - sx_setsignals (port, 1, -1); +/* The baud rate is not set to 0, so we're enabeling DTR... -- REW */ + sx_setsignals(port, 1, -1); /* XXX This is not TA & MTA compatible */ - sx_write_channel_byte (port, hi_csr, 0xff); + sx_write_channel_byte(port, hi_csr, 0xff); - sx_write_channel_byte (port, hi_txbaud, t); - sx_write_channel_byte (port, hi_rxbaud, t); + sx_write_channel_byte(port, hi_txbaud, t); + sx_write_channel_byte(port, hi_rxbaud, t); } else { - sx_setsignals (port, 0, -1); + sx_setsignals(port, 0, -1); } } else { switch (port->gs.baud) { -#define e(x) case x:t= CSR_ ## x ; break - e(75);e(150);e(300);e(600);e(1200);e(2400);e(4800); - e(1800);e(9600); - e(19200);e(57600);e(38400); - /* TA supports 110, but not 115200, MTA supports 115200, but not 110 */ - case 110: +#define e(x) case x: t = CSR_ ## x; break + e(75); + e(150); + e(300); + e(600); + e(1200); + e(2400); + e(4800); + e(1800); + e(9600); + e(19200); + e(57600); + e(38400); +/* TA supports 110, but not 115200, MTA supports 115200, but not 110 */ + case 110: if (port->board->ta_type == MOD_TA) { t = CSR_110; break; } else { t = CSR_9600; - printk (KERN_INFO "sx: Unsupported baud rate: %d.\n", port->gs.baud); + printk(KERN_INFO "sx: Unsupported baud rate: " + "%d.\n", port->gs.baud); break; } - case 115200: + case 115200: if (port->board->ta_type == MOD_TA) { t = CSR_9600; - printk (KERN_INFO "sx: Unsupported baud rate: %d.\n", port->gs.baud); + printk(KERN_INFO "sx: Unsupported baud rate: " + "%d.\n", port->gs.baud); break; } else { t = CSR_110; break; } - case 0 :t = -1; - break; + case 0: + t = -1; + break; default: t = CSR_9600; - printk (KERN_INFO "sx: Unsupported baud rate: %d.\n", port->gs.baud); + printk(KERN_INFO "sx: Unsupported baud rate: %d.\n", + port->gs.baud); break; } #undef e if (t >= 0) { - sx_setsignals (port, 1, -1); - sx_write_channel_byte (port, hi_csr, t * 0x11); + sx_setsignals(port, 1, -1); + sx_write_channel_byte(port, hi_csr, t * 0x11); } else { - sx_setsignals (port, 0, -1); + sx_setsignals(port, 0, -1); } } } - /* Simon Allen's version of this routine was 225 lines long. 85 is a lot better. -- REW */ -static int sx_set_real_termios (void *ptr) +static int sx_set_real_termios(void *ptr) { struct sx_port *port = ptr; @@ -901,80 +939,83 @@ static int sx_set_real_termios (void *ptr) belongs (next to the drop dtr if baud == 0) -- REW */ /* sx_setsignals (port, 1, -1); */ - sx_set_baud (port); + sx_set_baud(port); #define CFLAG port->gs.tty->termios->c_cflag - sx_write_channel_byte (port, hi_mr1, - (C_PARENB (port->gs.tty)? MR1_WITH:MR1_NONE) | - (C_PARODD (port->gs.tty)? MR1_ODD:MR1_EVEN) | - (C_CRTSCTS(port->gs.tty)? MR1_RTS_RXFLOW:0) | - (((CFLAG & CSIZE)==CS8) ? MR1_8_BITS:0) | - (((CFLAG & CSIZE)==CS7) ? MR1_7_BITS:0) | - (((CFLAG & CSIZE)==CS6) ? MR1_6_BITS:0) | - (((CFLAG & CSIZE)==CS5) ? MR1_5_BITS:0) ); - - sx_write_channel_byte (port, hi_mr2, - (C_CRTSCTS(port->gs.tty)?MR2_CTS_TXFLOW:0) | - (C_CSTOPB (port->gs.tty)?MR2_2_STOP:MR2_1_STOP)); + sx_write_channel_byte(port, hi_mr1, + (C_PARENB(port->gs.tty) ? MR1_WITH : MR1_NONE) | + (C_PARODD(port->gs.tty) ? MR1_ODD : MR1_EVEN) | + (C_CRTSCTS(port->gs.tty) ? MR1_RTS_RXFLOW : 0) | + (((CFLAG & CSIZE) == CS8) ? MR1_8_BITS : 0) | + (((CFLAG & CSIZE) == CS7) ? MR1_7_BITS : 0) | + (((CFLAG & CSIZE) == CS6) ? MR1_6_BITS : 0) | + (((CFLAG & CSIZE) == CS5) ? MR1_5_BITS : 0)); + + sx_write_channel_byte(port, hi_mr2, + (C_CRTSCTS(port->gs.tty) ? MR2_CTS_TXFLOW : 0) | + (C_CSTOPB(port->gs.tty) ? MR2_2_STOP : + MR2_1_STOP)); switch (CFLAG & CSIZE) { - case CS8:sx_write_channel_byte (port, hi_mask, 0xff);break; - case CS7:sx_write_channel_byte (port, hi_mask, 0x7f);break; - case CS6:sx_write_channel_byte (port, hi_mask, 0x3f);break; - case CS5:sx_write_channel_byte (port, hi_mask, 0x1f);break; + case CS8: + sx_write_channel_byte(port, hi_mask, 0xff); + break; + case CS7: + sx_write_channel_byte(port, hi_mask, 0x7f); + break; + case CS6: + sx_write_channel_byte(port, hi_mask, 0x3f); + break; + case CS5: + sx_write_channel_byte(port, hi_mask, 0x1f); + break; default: - printk (KERN_INFO "sx: Invalid wordsize: %u\n", CFLAG & CSIZE); + printk(KERN_INFO "sx: Invalid wordsize: %u\n", CFLAG & CSIZE); break; } - sx_write_channel_byte (port, hi_prtcl, - (I_IXON (port->gs.tty)?SP_TXEN:0) | - (I_IXOFF (port->gs.tty)?SP_RXEN:0) | - (I_IXANY (port->gs.tty)?SP_TANY:0) | - SP_DCEN); + sx_write_channel_byte(port, hi_prtcl, + (I_IXON(port->gs.tty) ? SP_TXEN : 0) | + (I_IXOFF(port->gs.tty) ? SP_RXEN : 0) | + (I_IXANY(port->gs.tty) ? SP_TANY : 0) | SP_DCEN); - sx_write_channel_byte (port, hi_break, - (I_IGNBRK(port->gs.tty)?BR_IGN:0 | - I_BRKINT(port->gs.tty)?BR_INT:0)); + sx_write_channel_byte(port, hi_break, + (I_IGNBRK(port->gs.tty) ? BR_IGN : 0 | + I_BRKINT(port->gs.tty) ? BR_INT : 0)); - sx_write_channel_byte (port, hi_txon, START_CHAR (port->gs.tty)); - sx_write_channel_byte (port, hi_rxon, START_CHAR (port->gs.tty)); - sx_write_channel_byte (port, hi_txoff, STOP_CHAR (port->gs.tty)); - sx_write_channel_byte (port, hi_rxoff, STOP_CHAR (port->gs.tty)); + sx_write_channel_byte(port, hi_txon, START_CHAR(port->gs.tty)); + sx_write_channel_byte(port, hi_rxon, START_CHAR(port->gs.tty)); + sx_write_channel_byte(port, hi_txoff, STOP_CHAR(port->gs.tty)); + sx_write_channel_byte(port, hi_rxoff, STOP_CHAR(port->gs.tty)); sx_reconfigure_port(port); /* Tell line discipline whether we will do input cooking */ - if(I_OTHER(port->gs.tty)) { + if (I_OTHER(port->gs.tty)) { clear_bit(TTY_HW_COOK_IN, &port->gs.tty->flags); } else { set_bit(TTY_HW_COOK_IN, &port->gs.tty->flags); } - sx_dprintk (SX_DEBUG_TERMIOS, "iflags: %x(%d) ", - port->gs.tty->termios->c_iflag, - I_OTHER(port->gs.tty)); - + sx_dprintk(SX_DEBUG_TERMIOS, "iflags: %x(%d) ", + port->gs.tty->termios->c_iflag, I_OTHER(port->gs.tty)); /* Tell line discipline whether we will do output cooking. * If OPOST is set and no other output flags are set then we can do output * processing. Even if only *one* other flag in the O_OTHER group is set * we do cooking in software. */ - if(O_OPOST(port->gs.tty) && !O_OTHER(port->gs.tty)) { + if (O_OPOST(port->gs.tty) && !O_OTHER(port->gs.tty)) { set_bit(TTY_HW_COOK_OUT, &port->gs.tty->flags); } else { clear_bit(TTY_HW_COOK_OUT, &port->gs.tty->flags); } - sx_dprintk (SX_DEBUG_TERMIOS, "oflags: %x(%d)\n", - port->gs.tty->termios->c_oflag, - O_OTHER(port->gs.tty)); + sx_dprintk(SX_DEBUG_TERMIOS, "oflags: %x(%d)\n", + port->gs.tty->termios->c_oflag, O_OTHER(port->gs.tty)); /* port->c_dcd = sx_get_CD (port); */ - func_exit (); + func_exit(); return 0; } - - /* ********************************************************************** * * the interrupt related routines * * ********************************************************************** */ @@ -990,245 +1031,260 @@ static int sx_set_real_termios (void *ptr) know I'm dead against that, but I think it is required in this case. */ - -static void sx_transmit_chars (struct sx_port *port) +static void sx_transmit_chars(struct sx_port *port) { int c; int tx_ip; int txroom; - func_enter2 (); - sx_dprintk (SX_DEBUG_TRANSMIT, "Port %p: transmit %d chars\n", - port, port->gs.xmit_cnt); + func_enter2(); + sx_dprintk(SX_DEBUG_TRANSMIT, "Port %p: transmit %d chars\n", + port, port->gs.xmit_cnt); - if (test_and_set_bit (SX_PORT_TRANSMIT_LOCK, &port->locks)) { + if (test_and_set_bit(SX_PORT_TRANSMIT_LOCK, &port->locks)) { return; } while (1) { c = port->gs.xmit_cnt; - sx_dprintk (SX_DEBUG_TRANSMIT, "Copying %d ", c); - tx_ip = sx_read_channel_byte (port, hi_txipos); + sx_dprintk(SX_DEBUG_TRANSMIT, "Copying %d ", c); + tx_ip = sx_read_channel_byte(port, hi_txipos); /* Took me 5 minutes to deduce this formula. Luckily it is literally in the manual in section 6.5.4.3.5 */ - txroom = (sx_read_channel_byte (port, hi_txopos) - tx_ip - 1) & 0xff; + txroom = (sx_read_channel_byte(port, hi_txopos) - tx_ip - 1) & + 0xff; /* Don't copy more bytes than there is room for in the buffer */ if (c > txroom) c = txroom; - sx_dprintk (SX_DEBUG_TRANSMIT, " %d(%d) ", c, txroom ); + sx_dprintk(SX_DEBUG_TRANSMIT, " %d(%d) ", c, txroom); /* Don't copy past the end of the hardware transmit buffer */ - if (c > 0x100 - tx_ip) + if (c > 0x100 - tx_ip) c = 0x100 - tx_ip; - sx_dprintk (SX_DEBUG_TRANSMIT, " %d(%d) ", c, 0x100-tx_ip ); + sx_dprintk(SX_DEBUG_TR |