diff options
Diffstat (limited to 'drivers/staging/dgnc')
| -rw-r--r-- | drivers/staging/dgnc/dgnc_cls.c | 291 | ||||
| -rw-r--r-- | drivers/staging/dgnc/dgnc_cls.h | 1 | ||||
| -rw-r--r-- | drivers/staging/dgnc/dgnc_driver.c | 192 | ||||
| -rw-r--r-- | drivers/staging/dgnc/dgnc_driver.h | 12 | ||||
| -rw-r--r-- | drivers/staging/dgnc/dgnc_kcompat.h | 29 | ||||
| -rw-r--r-- | drivers/staging/dgnc/dgnc_mgmt.c | 51 | ||||
| -rw-r--r-- | drivers/staging/dgnc/dgnc_neo.c | 148 | ||||
| -rw-r--r-- | drivers/staging/dgnc/dgnc_neo.h | 2 | ||||
| -rw-r--r-- | drivers/staging/dgnc/dgnc_sysfs.c | 190 | ||||
| -rw-r--r-- | drivers/staging/dgnc/dgnc_sysfs.h | 6 | ||||
| -rw-r--r-- | drivers/staging/dgnc/dgnc_trace.c | 19 | ||||
| -rw-r--r-- | drivers/staging/dgnc/dgnc_tty.c | 530 | ||||
| -rw-r--r-- | drivers/staging/dgnc/dgnc_tty.h | 6 | ||||
| -rw-r--r-- | drivers/staging/dgnc/digi.h | 4 | 
14 files changed, 661 insertions, 820 deletions
diff --git a/drivers/staging/dgnc/dgnc_cls.c b/drivers/staging/dgnc/dgnc_cls.c index 117e1580824..8e265c20db5 100644 --- a/drivers/staging/dgnc/dgnc_cls.c +++ b/drivers/staging/dgnc/dgnc_cls.c @@ -33,7 +33,7 @@  #include <linux/sched.h>	/* For jiffies, task states */  #include <linux/interrupt.h>	/* For tasklet and interrupt structs/defines */  #include <linux/delay.h>	/* For udelay */ -#include <asm/io.h>		/* For read[bwl]/write[bwl] */ +#include <linux/io.h>		/* For read[bwl]/write[bwl] */  #include <linux/serial.h>	/* For struct async_serial */  #include <linux/serial_reg.h>	/* For the various UART offsets */  #include <linux/pci.h> @@ -43,7 +43,7 @@  #include "dgnc_tty.h"  #include "dgnc_trace.h" -static inline void cls_parse_isr(struct board_t *brd, uint port); +static inline void cls_parse_isr(struct dgnc_board *brd, uint port);  static inline void cls_clear_break(struct channel_t *ch, int force);  static inline void cls_set_cts_flow_control(struct channel_t *ch);  static inline void cls_set_rts_flow_control(struct channel_t *ch); @@ -53,7 +53,7 @@ static inline void cls_set_no_output_flow_control(struct channel_t *ch);  static inline void cls_set_no_input_flow_control(struct channel_t *ch);  static void cls_parse_modem(struct channel_t *ch, uchar signals);  static void cls_tasklet(unsigned long data); -static void cls_vpd(struct board_t *brd); +static void cls_vpd(struct dgnc_board *brd);  static void cls_uart_init(struct channel_t *ch);  static void cls_uart_off(struct channel_t *ch);  static int cls_drain(struct tty_struct *tty, uint seconds); @@ -119,7 +119,10 @@ static inline void cls_set_cts_flow_control(struct channel_t *ch)  	/* Write old LCR value back out, which turns enhanced access off */  	writeb(lcrb, &ch->ch_cls_uart->lcr); -	/* Enable interrupts for CTS flow, turn off interrupts for received XOFF chars */ +	/* +	 * Enable interrupts for CTS flow, turn off interrupts for +	 * received XOFF chars +	 */  	ier |= (UART_EXAR654_IER_CTSDSR);  	ier &= ~(UART_EXAR654_IER_XOFF);  	writeb(ier, &ch->ch_cls_uart->ier); @@ -167,7 +170,10 @@ static inline void cls_set_ixon_flow_control(struct channel_t *ch)  	/* Write old LCR value back out, which turns enhanced access off */  	writeb(lcrb, &ch->ch_cls_uart->lcr); -	/* Disable interrupts for CTS flow, turn on interrupts for received XOFF chars */ +	/* +	 * Disable interrupts for CTS flow, turn on interrupts for +	 * received XOFF chars +	 */  	ier &= ~(UART_EXAR654_IER_CTSDSR);  	ier |= (UART_EXAR654_IER_XOFF);  	writeb(ier, &ch->ch_cls_uart->ier); @@ -207,7 +213,10 @@ static inline void cls_set_no_output_flow_control(struct channel_t *ch)  	/* Write old LCR value back out, which turns enhanced access off */  	writeb(lcrb, &ch->ch_cls_uart->lcr); -	/* Disable interrupts for CTS flow, turn off interrupts for received XOFF chars */ +	/* +	 * Disable interrupts for CTS flow, turn off interrupts for +	 * received XOFF chars +	 */  	ier &= ~(UART_EXAR654_IER_CTSDSR);  	ier &= ~(UART_EXAR654_IER_XOFF);  	writeb(ier, &ch->ch_cls_uart->ier); @@ -220,8 +229,8 @@ static inline void cls_set_no_output_flow_control(struct channel_t *ch)  		&ch->ch_cls_uart->isr_fcr);  	ch->ch_r_watermark = 0; -        ch->ch_t_tlevel = 16; -        ch->ch_r_tlevel = 16; +	ch->ch_t_tlevel = 16; +	ch->ch_r_tlevel = 16;  } @@ -350,8 +359,8 @@ static inline void cls_set_no_input_flow_control(struct channel_t *ch)  		UART_16654_FCR_TXTRIGGER_16 | UART_FCR_CLEAR_RCVR),  		&ch->ch_cls_uart->isr_fcr); -        ch->ch_t_tlevel = 16; -        ch->ch_r_tlevel = 16; +	ch->ch_t_tlevel = 16; +	ch->ch_r_tlevel = 16;  } @@ -380,12 +389,13 @@ static inline void cls_clear_break(struct channel_t *ch, int force)  	/* Turn break off, and unset some variables */  	if (ch->ch_flags & CH_BREAK_SENDING) { -		if ((jiffies >= ch->ch_stop_sending_break) || force) { +		if (time_after(jiffies, ch->ch_stop_sending_break) || force) {  			uchar temp = readb(&ch->ch_cls_uart->lcr); -        	        writeb((temp & ~UART_LCR_SBC), &ch->ch_cls_uart->lcr); +			writeb((temp & ~UART_LCR_SBC), &ch->ch_cls_uart->lcr);  			ch->ch_flags &= ~(CH_BREAK_SENDING);  			ch->ch_stop_sending_break = 0; -			DPR_IOCTL(("Finishing UART_LCR_SBC! finished: %lx\n", jiffies)); +			DPR_IOCTL(("Finishing UART_LCR_SBC! finished: %lx\n", +								jiffies));  		}  	}  	DGNC_UNLOCK(ch->ch_lock, lock_flags); @@ -393,7 +403,7 @@ static inline void cls_clear_break(struct channel_t *ch, int force)  /* Parse the ISR register for the specific port */ -static inline void cls_parse_isr(struct board_t *brd, uint port) +static inline void cls_parse_isr(struct dgnc_board *brd, uint port)  {  	struct channel_t *ch;  	uchar isr = 0; @@ -417,11 +427,11 @@ static inline void cls_parse_isr(struct board_t *brd, uint port)  		isr = readb(&ch->ch_cls_uart->isr_fcr);  		/* Bail if no pending interrupt on port */ -		if (isr & UART_IIR_NO_INT)  { +		if (isr & UART_IIR_NO_INT)  			break; -		} -		DPR_INTR(("%s:%d port: %x isr: %x\n", __FILE__, __LINE__, port, isr)); +		DPR_INTR(("%s:%d port: %x isr: %x\n", __FILE__, __LINE__, +								 port, isr));  		/* Receive Interrupt pending */  		if (isr & (UART_IIR_RDI | UART_IIR_RDI_TIMEOUT)) { @@ -443,11 +453,6 @@ static inline void cls_parse_isr(struct board_t *brd, uint port)  			cls_copy_data_from_queue_to_uart(ch);  		} -		/* Received Xoff signal/Special character */ -		if (isr & UART_IIR_XOFF) { -			/* Empty */ -		} -  		/* CTS/RTS change of state */  		if (isr & UART_IIR_CTSRTS) {  			brd->intr_modem++; @@ -475,33 +480,30 @@ static void cls_param(struct tty_struct *tty)  	uchar uart_lcr = 0;  	uchar ier = 0;  	uchar uart_ier = 0; -        uint baud = 9600; +	uint baud = 9600;  	int quot = 0; -        struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch; -        struct un_t   *un; +	struct un_t   *un; -	if (!tty || tty->magic != TTY_MAGIC) { +	if (!tty || tty->magic != TTY_MAGIC)  		return; -	}  	un = (struct un_t *) tty->driver_data; -	if (!un || un->magic != DGNC_UNIT_MAGIC) { +	if (!un || un->magic != DGNC_UNIT_MAGIC)  		return; -	}  	ch = un->un_ch; -	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) { +	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC)  		return; -	}  	bd = ch->ch_bd; -	if (!bd || bd->magic != DGNC_BOARD_MAGIC) { +	if (!bd || bd->magic != DGNC_BOARD_MAGIC)  		return; -	}  	DPR_PARAM(("param start: tdev: %x cflags: %x oflags: %x iflags: %x\n", -		ch->ch_tun.un_dev, ch->ch_c_cflag, ch->ch_c_oflag, ch->ch_c_iflag)); +		ch->ch_tun.un_dev, ch->ch_c_cflag, ch->ch_c_oflag, +							 ch->ch_c_iflag));  	/*  	 * If baud rate is zero, flush queues, and set mval to drop DTR. @@ -512,7 +514,7 @@ static void cls_param(struct tty_struct *tty)  		ch->ch_w_head = ch->ch_w_tail = 0;  		cls_flush_uart_write(ch); -                cls_flush_uart_read(ch); +		cls_flush_uart_read(ch);  		/* The baudrate is B0 so all modem lines are to be dropped. */  		ch->ch_flags |= (CH_BAUD0); @@ -564,8 +566,12 @@ static void cls_param(struct tty_struct *tty)  				4800,   9600,   19200,  38400 }  		}; -		/* Only use the TXPrint baud rate if the terminal unit is NOT open */ -		if (!(ch->ch_tun.un_flags & UN_ISOPEN) && (un->un_type == DGNC_PRINT)) +		/* +		 * Only use the TXPrint baud rate if the terminal +		 * unit is NOT open +		 */ +		if (!(ch->ch_tun.un_flags & UN_ISOPEN) && +					 (un->un_type == DGNC_PRINT))  			baud = C_BAUD(ch->ch_pun.un_tty) & 0xff;  		else  			baud = C_BAUD(ch->ch_tun.un_tty) & 0xff; @@ -578,7 +584,8 @@ static void cls_param(struct tty_struct *tty)  		jindex = baud; -		if ((iindex >= 0) && (iindex < 4) && (jindex >= 0) && (jindex < 16)) { +		if ((iindex >= 0) && (iindex < 4) && (jindex >= 0) && +								(jindex < 16)) {  			baud = bauds[iindex][jindex];  		} else {  			DPR_IOCTL(("baud indices were out of range (%d)(%d)", @@ -604,13 +611,11 @@ static void cls_param(struct tty_struct *tty)  		}  	} -	if (ch->ch_c_cflag & PARENB) { +	if (ch->ch_c_cflag & PARENB)  		lcr |= UART_LCR_PARITY; -	} -	if (!(ch->ch_c_cflag & PARODD)) { +	if (!(ch->ch_c_cflag & PARODD))  		lcr |= UART_LCR_EPAR; -	}  	/*  	 * Not all platforms support mark/space parity, @@ -654,31 +659,28 @@ static void cls_param(struct tty_struct *tty)  		writeb((quot & 0xff), &ch->ch_cls_uart->txrx);  		writeb((quot >> 8), &ch->ch_cls_uart->ier);  		writeb(lcr, &ch->ch_cls_uart->lcr); -        } +	}  	if (uart_lcr != lcr)  		writeb(lcr, &ch->ch_cls_uart->lcr); -	if (ch->ch_c_cflag & CREAD) { +	if (ch->ch_c_cflag & CREAD)  		ier |= (UART_IER_RDI | UART_IER_RLSI); -	} -	else { +	else  		ier &= ~(UART_IER_RDI | UART_IER_RLSI); -	}  	/*  	 * Have the UART interrupt on modem signal changes ONLY when  	 * we are in hardware flow control mode, or CLOCAL/FORCEDCD is not set.  	 */ -	if ((ch->ch_digi.digi_flags & CTSPACE) || (ch->ch_digi.digi_flags & RTSPACE) || -		(ch->ch_c_cflag & CRTSCTS) || !(ch->ch_digi.digi_flags & DIGI_FORCEDCD) || +	if ((ch->ch_digi.digi_flags & CTSPACE) || +		(ch->ch_digi.digi_flags & RTSPACE) || +		(ch->ch_c_cflag & CRTSCTS) || +		!(ch->ch_digi.digi_flags & DIGI_FORCEDCD) ||  		!(ch->ch_c_cflag & CLOCAL)) -	{ -		ier |= UART_IER_MSI; -	} -	else { -		ier &= ~UART_IER_MSI; -	} +			ier |= UART_IER_MSI; +	else +			ier &= ~UART_IER_MSI;  	ier |= UART_IER_THRI; @@ -687,29 +689,33 @@ static void cls_param(struct tty_struct *tty)  	if (ch->ch_digi.digi_flags & CTSPACE || ch->ch_c_cflag & CRTSCTS) {  		cls_set_cts_flow_control(ch); -	} -	else if (ch->ch_c_iflag & IXON) { -		/* If start/stop is set to disable, then we should disable flow control */ -		if ((ch->ch_startc == _POSIX_VDISABLE) || (ch->ch_stopc == _POSIX_VDISABLE)) +	} else if (ch->ch_c_iflag & IXON) { +		/* +		 * If start/stop is set to disable, then we should +		 * disable flow control +		 */ +		if ((ch->ch_startc == _POSIX_VDISABLE) || +					 (ch->ch_stopc == _POSIX_VDISABLE))  			cls_set_no_output_flow_control(ch);  		else  			cls_set_ixon_flow_control(ch); -	} -	else { +	} else {  		cls_set_no_output_flow_control(ch);  	}  	if (ch->ch_digi.digi_flags & RTSPACE || ch->ch_c_cflag & CRTSCTS) {  		cls_set_rts_flow_control(ch); -	} -	else if (ch->ch_c_iflag & IXOFF) { -		/* If start/stop is set to disable, then we should disable flow control */ -		if ((ch->ch_startc == _POSIX_VDISABLE) || (ch->ch_stopc == _POSIX_VDISABLE)) +	} else if (ch->ch_c_iflag & IXOFF) { +		/* +		 * If start/stop is set to disable, then we should disable +		 * flow control +		 */ +		if ((ch->ch_startc == _POSIX_VDISABLE) || +				(ch->ch_stopc == _POSIX_VDISABLE))  			cls_set_no_input_flow_control(ch);  		else  			cls_set_ixoff_flow_control(ch); -	} -	else { +	} else {  		cls_set_no_input_flow_control(ch);  	} @@ -725,7 +731,7 @@ static void cls_param(struct tty_struct *tty)   */  static void cls_tasklet(unsigned long data)  { -        struct board_t *bd = (struct board_t *) data; +	struct dgnc_board *bd = (struct dgnc_board *) data;  	struct channel_t *ch;  	ulong  lock_flags;  	int i; @@ -802,13 +808,14 @@ static void cls_tasklet(unsigned long data)   */  static irqreturn_t cls_intr(int irq, void *voidbrd)  { -	struct board_t *brd = (struct board_t *) voidbrd; +	struct dgnc_board *brd = (struct dgnc_board *) voidbrd;  	uint i = 0;  	uchar poll_reg;  	unsigned long lock_flags;  	if (!brd) { -		APR(("Received interrupt (%d) with null board associated\n", irq)); +		APR(("Received interrupt (%d) with null board associated\n", +									 irq));  		return IRQ_NONE;  	} @@ -816,7 +823,8 @@ static irqreturn_t cls_intr(int irq, void *voidbrd)  	 * Check to make sure its for us.  	 */  	if (brd->magic != DGNC_BOARD_MAGIC) { -		APR(("Received interrupt (%d) with a board pointer that wasn't ours!\n", irq)); +		APR(("Received interrupt (%d) with a board pointer that wasn't ours!\n", +			  irq));  		return IRQ_NONE;  	} @@ -832,7 +840,8 @@ static irqreturn_t cls_intr(int irq, void *voidbrd)  	/* If 0, no interrupts pending */  	if (!poll_reg) { -		DPR_INTR(("Kernel interrupted to me, but no pending interrupts...\n")); +		DPR_INTR(( +			 "Kernel interrupted to me, but no pending interrupts...\n"));  		DGNC_UNLOCK(brd->bd_intr_lock, lock_flags);  		return IRQ_NONE;  	} @@ -840,9 +849,8 @@ static irqreturn_t cls_intr(int irq, void *voidbrd)  	DPR_INTR(("%s:%d poll_reg: %x\n", __FILE__, __LINE__, poll_reg));  	/* Parse each port to find out what caused the interrupt */ -	for (i = 0; i < brd->nasync; i++) { +	for (i = 0; i < brd->nasync; i++)  		cls_parse_isr(brd, i); -	}  	/*  	 * Schedule tasklet to more in-depth servicing at a better time. @@ -874,8 +882,8 @@ static void cls_enable_receiver(struct channel_t *ch)  static void cls_copy_data_from_uart_to_queue(struct channel_t *ch)  { -        int qleft = 0; -        uchar linestatus = 0; +	int qleft = 0; +	uchar linestatus = 0;  	uchar error_mask = 0;  	ushort head;  	ushort tail; @@ -891,7 +899,8 @@ static void cls_copy_data_from_uart_to_queue(struct channel_t *ch)  	tail = ch->ch_r_tail;  	/* Store how much space we have left in the queue */ -	if ((qleft = tail - head - 1) < 0) +	qleft = (tail - head - 1); +	if (qleft < 0)  		qleft += RQUEUEMASK + 1;  	/* @@ -918,9 +927,9 @@ static void cls_copy_data_from_uart_to_queue(struct channel_t *ch)  		}  		/* -		 * If our queue is full, we have no choice but to drop some data. -		 * The assumption is that HWFLOW or SWFLOW should have stopped -		 * things way way before we got to this point. +		 * If our queue is full, we have no choice but to drop some +		 * data. The assumption is that HWFLOW or SWFLOW should have +		 * stopped things way way before we got to this point.  		 *  		 * I decided that I wanted to ditch the oldest data first,  		 * I hope thats okay with everyone? Yes? Good. @@ -934,13 +943,16 @@ static void cls_copy_data_from_uart_to_queue(struct channel_t *ch)  			qleft++;  		} -		ch->ch_equeue[head] = linestatus & (UART_LSR_BI | UART_LSR_PE | UART_LSR_FE); +		ch->ch_equeue[head] = linestatus & (UART_LSR_BI | UART_LSR_PE +								 | UART_LSR_FE);  		ch->ch_rqueue[head] = readb(&ch->ch_cls_uart->txrx); -		dgnc_sniff_nowait_nolock(ch, "UART READ", ch->ch_rqueue + head, 1); +		dgnc_sniff_nowait_nolock(ch, "UART READ", +						 ch->ch_rqueue + head, 1);  		qleft--; -		DPR_READ(("DATA/LSR pair: %x %x\n", ch->ch_rqueue[head], ch->ch_equeue[head])); +		DPR_READ(("DATA/LSR pair: %x %x\n", ch->ch_rqueue[head], +							 ch->ch_equeue[head]));  		if (ch->ch_equeue[head] & UART_LSR_PE)  			ch->ch_err_parity++; @@ -972,22 +984,19 @@ static int cls_drain(struct tty_struct *tty, uint seconds)  {  	ulong lock_flags;  	struct channel_t *ch; -        struct un_t *un; +	struct un_t *un;  	int rc = 0; -	if (!tty || tty->magic != TTY_MAGIC) { -		return (-ENXIO); -	} +	if (!tty || tty->magic != TTY_MAGIC) +		return -ENXIO;  	un = (struct un_t *) tty->driver_data; -	if (!un || un->magic != DGNC_UNIT_MAGIC) { -		return (-ENXIO); -	} +	if (!un || un->magic != DGNC_UNIT_MAGIC) +		return -ENXIO;  	ch = un->un_ch; -	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) { -		return (-ENXIO); -	} +	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) +		return -ENXIO;  	DGNC_LOCK(ch->ch_lock, lock_flags);  	un->un_flags |= UN_EMPTY; @@ -996,24 +1005,25 @@ static int cls_drain(struct tty_struct *tty, uint seconds)  	/*  	 * NOTE: Do something with time passed in.  	 */ -	rc = wait_event_interruptible(un->un_flags_wait, ((un->un_flags & UN_EMPTY) == 0)); +	rc = wait_event_interruptible(un->un_flags_wait, +					 ((un->un_flags & UN_EMPTY) == 0));  	/* If ret is non-zero, user ctrl-c'ed us */  	if (rc)  		DPR_IOCTL(("%d Drain - User ctrl c'ed\n", __LINE__)); -        return (rc); +	return rc;  }  /* Channel lock MUST be held before calling this function! */  static void cls_flush_uart_write(struct channel_t *ch)  { -	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) { +	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC)  		return; -	} -	writeb((UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_XMIT), &ch->ch_cls_uart->isr_fcr); +	writeb((UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_XMIT), +						&ch->ch_cls_uart->isr_fcr);  	udelay(10);  	ch->ch_flags |= (CH_TX_FIFO_EMPTY | CH_TX_FIFO_LWM); @@ -1023,9 +1033,8 @@ static void cls_flush_uart_write(struct channel_t *ch)  /* Channel lock MUST be held before calling this function! */  static void cls_flush_uart_read(struct channel_t *ch)  { -	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) { +	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC)  		return; -	}  	/*  	 * For complete POSIX compatibility, we should be purging the @@ -1038,7 +1047,8 @@ static void cls_flush_uart_read(struct channel_t *ch)  	 * So for now, we will leave the code #ifdef'ed out...  	 */  #if 0 -	writeb((UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR), &ch->ch_cls_uart->isr_fcr); +	writeb((UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR), +					 &ch->ch_cls_uart->isr_fcr);  #endif  	udelay(10);  } @@ -1065,7 +1075,8 @@ static void cls_copy_data_from_queue_to_uart(struct channel_t *ch)  	}  	/* If port is "stopped", don't send any data to the UART */ -	if ((ch->ch_flags & CH_FORCED_STOP) || (ch->ch_flags & CH_BREAK_SENDING)) { +	if ((ch->ch_flags & CH_FORCED_STOP) || +				 (ch->ch_flags & CH_BREAK_SENDING)) {  		DGNC_UNLOCK(ch->ch_lock, lock_flags);  		return;  	} @@ -1077,10 +1088,10 @@ static void cls_copy_data_from_queue_to_uart(struct channel_t *ch)  	n = 32; -        /* cache head and tail of queue */ -        head = ch->ch_w_head & WQUEUEMASK; -        tail = ch->ch_w_tail & WQUEUEMASK; -        qlen = (head - tail) & WQUEUEMASK; +	/* cache head and tail of queue */ +	head = ch->ch_w_head & WQUEUEMASK; +	tail = ch->ch_w_tail & WQUEUEMASK; +	qlen = (head - tail) & WQUEUEMASK;  	/* Find minimum of the FIFO space, versus queue length */  	n = min(n, qlen); @@ -1089,7 +1100,8 @@ static void cls_copy_data_from_queue_to_uart(struct channel_t *ch)  		/*  		 * If RTS Toggle mode is on, turn on RTS now if not already set, -		 * and make sure we get an event when the data transfer has completed. +		 * and make sure we get an event when the data transfer has +		 * completed.  		 */  		if (ch->ch_digi.digi_flags & DIGI_RTS_TOGGLE) {  			if (!(ch->ch_mostat & UART_MCR_RTS)) { @@ -1101,7 +1113,8 @@ static void cls_copy_data_from_queue_to_uart(struct channel_t *ch)  		/*  		 * If DTR Toggle mode is on, turn on DTR now if not already set, -		 * and make sure we get an event when the data transfer has completed. +		 * and make sure we get an event when the data transfer has +		 * completed.  		 */  		if (ch->ch_digi.digi_flags & DIGI_DTR_TOGGLE) {  			if (!(ch->ch_mostat & UART_MCR_DTR)) { @@ -1111,7 +1124,8 @@ static void cls_copy_data_from_queue_to_uart(struct channel_t *ch)  			ch->ch_tun.un_flags |= (UN_EMPTY);  		}  		writeb(ch->ch_wqueue[ch->ch_w_tail], &ch->ch_cls_uart->txrx); -		dgnc_sniff_nowait_nolock(ch, "UART WRITE", ch->ch_wqueue + ch->ch_w_tail, 1); +		dgnc_sniff_nowait_nolock(ch, "UART WRITE", +					    ch->ch_wqueue + ch->ch_w_tail, 1);  		DPR_WRITE(("Tx data: %x\n", ch->ch_wqueue[ch->ch_w_tail]));  		ch->ch_w_tail++;  		ch->ch_w_tail &= WQUEUEMASK; @@ -1131,17 +1145,20 @@ static void cls_copy_data_from_queue_to_uart(struct channel_t *ch)  static void cls_parse_modem(struct channel_t *ch, uchar signals)  { -	volatile uchar msignals = signals; +	uchar msignals = signals; +	ulong lock_flags;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC)  		return; -	DPR_MSIGS(("cls_parse_modem: port: %d signals: %d\n", ch->ch_portnum, msignals)); +	DPR_MSIGS(("cls_parse_modem: port: %d signals: %d\n", +					 ch->ch_portnum, msignals));  	/*  	 * Do altpin switching. Altpin switches DCD and DSR.  	 * This prolly breaks DSRPACE, so we should be more clever here.  	 */ +	DGNC_LOCK(ch->ch_lock, lock_flags);  	if (ch->ch_digi.digi_flags & DIGI_ALTPIN) {  		uchar mswap = signals;  		if (mswap & UART_MSR_DDCD) { @@ -1161,10 +1178,15 @@ static void cls_parse_modem(struct channel_t *ch, uchar signals)  			msignals |= UART_MSR_DCD;  		}  	} +	DGNC_UNLOCK(ch->ch_lock, lock_flags); -	/* Scrub off lower bits. They signify delta's, which I don't care about */ +	/* +	 * Scrub off lower bits. They signify delta's, which I don't +	 * care about +	 */  	signals &= 0xf0; +	DGNC_LOCK(ch->ch_lock, lock_flags);  	if (msignals & UART_MSR_DCD)  		ch->ch_mistat |= UART_MSR_DCD;  	else @@ -1184,9 +1206,11 @@ static void cls_parse_modem(struct channel_t *ch, uchar signals)  		ch->ch_mistat |= UART_MSR_CTS;  	else  		ch->ch_mistat &= ~UART_MSR_CTS; +	DGNC_UNLOCK(ch->ch_lock, lock_flags); -	DPR_MSIGS(("Port: %d DTR: %d RTS: %d CTS: %d DSR: %d " "RI: %d CD: %d\n", +	DPR_MSIGS(( +		"Port: %d DTR: %d RTS: %d CTS: %d DSR: %d " "RI: %d CD: %d\n",  		ch->ch_portnum,  		!!((ch->ch_mistat | ch->ch_mostat) & UART_MCR_DTR),  		!!((ch->ch_mistat | ch->ch_mostat) & UART_MCR_RTS), @@ -1210,7 +1234,7 @@ static void cls_assert_modem_signals(struct channel_t *ch)  	if (ch->ch_flags & CH_LOOPBACK)  		out |= UART_MCR_LOOP; -        writeb(out, &ch->ch_cls_uart->mcr); +	writeb(out, &ch->ch_cls_uart->mcr);  	/* Give time for the UART to actually drop the signals */  	udelay(10); @@ -1225,7 +1249,7 @@ static void cls_send_start_character(struct channel_t *ch)  	if (ch->ch_startc != _POSIX_VDISABLE) {  		ch->ch_xon_sends++;  		writeb(ch->ch_startc, &ch->ch_cls_uart->txrx); -        } +	}  } @@ -1237,7 +1261,7 @@ static void cls_send_stop_character(struct channel_t *ch)  	if (ch->ch_stopc != _POSIX_VDISABLE) {  		ch->ch_xoff_sends++;  		writeb(ch->ch_stopc, &ch->ch_cls_uart->txrx); -        } +	}  } @@ -1265,10 +1289,11 @@ static void cls_uart_init(struct channel_t *ch)  	/* Write old LCR value back out, which turns enhanced access off */  	writeb(lcrb, &ch->ch_cls_uart->lcr); -        /* Clear out UART and FIFO */ +	/* Clear out UART and FIFO */  	readb(&ch->ch_cls_uart->txrx); -	writeb((UART_FCR_ENABLE_FIFO|UART_FCR_CLEAR_RCVR|UART_FCR_CLEAR_XMIT), &ch->ch_cls_uart->isr_fcr); +	writeb((UART_FCR_ENABLE_FIFO|UART_FCR_CLEAR_RCVR|UART_FCR_CLEAR_XMIT), +						 &ch->ch_cls_uart->isr_fcr);  	udelay(10);  	ch->ch_flags |= (CH_FIFO_ENABLED | CH_TX_FIFO_EMPTY | CH_TX_FIFO_LWM); @@ -1305,12 +1330,10 @@ static uint cls_get_uart_bytes_left(struct channel_t *ch)  	/* Determine whether the Transmitter is empty or not */  	if (!(lsr & UART_LSR_TEMT)) { -		if (ch->ch_flags & CH_TX_FIFO_EMPTY) { +		if (ch->ch_flags & CH_TX_FIFO_EMPTY)  			tasklet_schedule(&ch->ch_bd->helper_tasklet); -		}  		left = 1; -	} -	else { +	} else {  		ch->ch_flags |= (CH_TX_FIFO_EMPTY | CH_TX_FIFO_LWM);  		left = 0;  	} @@ -1340,10 +1363,11 @@ static void cls_send_break(struct channel_t *ch, int msecs)  			writeb((temp & ~UART_LCR_SBC), &ch->ch_cls_uart->lcr);  			ch->ch_flags &= ~(CH_BREAK_SENDING);  			ch->ch_stop_sending_break = 0; -			DPR_IOCTL(("Finishing UART_LCR_SBC! finished: %lx\n", jiffies)); +			DPR_IOCTL(("Finishing UART_LCR_SBC! finished: %lx\n", +								     jiffies));  		}  		return; -        } +	}  	/*  	 * Set the time we should stop sending the break. @@ -1357,7 +1381,8 @@ static void cls_send_break(struct channel_t *ch, int msecs)  		uchar temp = readb(&ch->ch_cls_uart->lcr);  		writeb((temp | UART_LCR_SBC), &ch->ch_cls_uart->lcr);  		ch->ch_flags |= (CH_BREAK_SENDING); -		DPR_IOCTL(("Port %d. Starting UART_LCR_SBC! start: %lx should end: %lx\n", +		DPR_IOCTL(( +			"Port %d. Starting UART_LCR_SBC! start: %lx should end: %lx\n",  			ch->ch_portnum, jiffies, ch->ch_stop_sending_break));  	}  } @@ -1378,10 +1403,10 @@ static void cls_send_immediate_char(struct channel_t *ch, unsigned char c)  	writeb(c, &ch->ch_cls_uart->txrx);  } -static void cls_vpd(struct board_t *brd) +static void cls_vpd(struct dgnc_board *brd)  { -        ulong           vpdbase;        /* Start of io base of the card */ -        u8 __iomem           *re_map_vpdbase;/* Remapped memory of the card */ +	ulong           vpdbase;        /* Start of io base of the card */ +	u8 __iomem           *re_map_vpdbase;/* Remapped memory of the card */  	int i = 0; @@ -1396,12 +1421,12 @@ static void cls_vpd(struct board_t *brd)  	if (!re_map_vpdbase)  		return; -        /* Store the VPD into our buffer */ -        for (i = 0; i < 0x40; i++) { +	/* Store the VPD into our buffer */ +	for (i = 0; i < 0x40; i++) {  		brd->vpd[i] = readb(re_map_vpdbase + i); -		printk("%x ", brd->vpd[i]); -        } -	printk("\n"); +		pr_info("%x ", brd->vpd[i]); +	} +	pr_info("\n");  	if (re_map_vpdbase)  		iounmap(re_map_vpdbase); diff --git a/drivers/staging/dgnc/dgnc_cls.h b/drivers/staging/dgnc/dgnc_cls.h index ffe8535a84a..465d79a6f75 100644 --- a/drivers/staging/dgnc/dgnc_cls.h +++ b/drivers/staging/dgnc/dgnc_cls.h @@ -61,7 +61,6 @@ struct cls_uart_struct {  #define UART_16654_FCR_RXTRIGGER_56	0x80  #define UART_16654_FCR_RXTRIGGER_60     0xC0 -#define UART_IIR_XOFF			0x10	/* Received Xoff signal/Special character */  #define UART_IIR_CTSRTS			0x20	/* Received CTS/RTS change of state */  #define UART_IIR_RDI_TIMEOUT		0x0C    /* Receiver data TIMEOUT */ diff --git a/drivers/staging/dgnc/dgnc_driver.c b/drivers/staging/dgnc/dgnc_driver.c index 71d2b83cc3a..5af8300dfb0 100644 --- a/drivers/staging/dgnc/dgnc_driver.c +++ b/drivers/staging/dgnc/dgnc_driver.c @@ -31,15 +31,10 @@  #include <linux/kernel.h> -#include <linux/version.h>  #include <linux/module.h>  #include <linux/pci.h>  #include <linux/slab.h> - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)  #include <linux/sched.h> -#endif -  #include "dgnc_driver.h"  #include "dgnc_pci.h"  #include "dpacompat.h" @@ -71,16 +66,16 @@ PARM_INT(trcbuf_size,	0x100000,	0644, 	"Debugging trace buffer size.");   *   */  static int		dgnc_start(void); -static int		dgnc_finalize_board_init(struct board_t *brd); +static int		dgnc_finalize_board_init(struct dgnc_board *brd);  static void		dgnc_init_globals(void);  static int		dgnc_found_board(struct pci_dev *pdev, int id); -static void		dgnc_cleanup_board(struct board_t *brd); +static void		dgnc_cleanup_board(struct dgnc_board *brd);  static void		dgnc_poll_handler(ulong dummy);  static int		dgnc_init_pci(void);  static int		dgnc_init_one(struct pci_dev *pdev, const struct pci_device_id *ent);  static void		dgnc_remove_one(struct pci_dev *dev);  static int		dgnc_probe1(struct pci_dev *pdev, int card_type); -static void		dgnc_do_remap(struct board_t *brd); +static void		dgnc_do_remap(struct dgnc_board *brd);  /* Driver load/unload functions */  int		dgnc_init_module(void); @@ -93,7 +88,7 @@ module_exit(dgnc_cleanup_module);  /*   * File operations permitted on Control/Management major.   */ -static struct file_operations dgnc_BoardFops = +static const struct file_operations dgnc_BoardFops =  {  	.owner		=	THIS_MODULE,  	.unlocked_ioctl =  	dgnc_mgmt_ioctl, @@ -106,7 +101,7 @@ static struct file_operations dgnc_BoardFops =   * Globals   */  uint			dgnc_NumBoards; -struct board_t		*dgnc_Board[MAXBOARDS]; +struct dgnc_board		*dgnc_Board[MAXBOARDS];  DEFINE_SPINLOCK(dgnc_global_lock);  int			dgnc_driver_state = DRIVER_INITIALIZED;  ulong			dgnc_poll_counter; @@ -158,8 +153,7 @@ struct board_id {  	unsigned int is_pci_express;  }; -static struct board_id dgnc_Ids[] = -{ +static struct board_id dgnc_Ids[] = {  	{	PCI_DEVICE_CLASSIC_4_PCI_NAME,		4,	0	},  	{	PCI_DEVICE_CLASSIC_4_422_PCI_NAME,	4,	0	},  	{	PCI_DEVICE_CLASSIC_8_PCI_NAME,		8,	0	}, @@ -224,9 +218,8 @@ int dgnc_init_module(void)  	 */  	rc = dgnc_start(); -	if (rc < 0) { -		return(rc); -	} +	if (rc < 0) +		return rc;  	/*  	 * Find and configure all the cards @@ -241,16 +234,15 @@ int dgnc_init_module(void)  		if (dgnc_NumBoards)  			pci_unregister_driver(&dgnc_driver);  		else -			printk("WARNING: dgnc driver load failed.  No Digi Neo or Classic boards found.\n"); +			pr_warn("WARNING: dgnc driver load failed.  No Digi Neo or Classic boards found.\n");  		dgnc_cleanup_module(); -	} -	else { +	} else {  		dgnc_create_driver_sysfiles(&dgnc_driver);  	}  	DPR_INIT(("Finished init_module. Returning %d\n", rc)); -	return (rc); +	return rc;  } @@ -286,21 +278,14 @@ static int dgnc_start(void)  			if (rc <= 0) {  				APR(("Can't register dgnc driver device (%d)\n", rc));  				rc = -ENXIO; -				return(rc); +				return rc;  			}  			dgnc_Major = rc;  			dgnc_class = class_create(THIS_MODULE, "dgnc_mgmt"); -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) -			device_create_drvdata(dgnc_class, NULL, -				MKDEV(dgnc_Major, 0), -				NULL, "dgnc_mgmt"); -#else  			device_create(dgnc_class, NULL,  				MKDEV(dgnc_Major, 0),  				NULL, "dgnc_mgmt"); -#endif -  			dgnc_Major_Control_Registered = TRUE;  		} @@ -311,7 +296,7 @@ static int dgnc_start(void)  		if (rc < 0) {  			APR(("tty preinit - not enough memory (%d)\n", rc)); -			return(rc); +			return rc;  		}  		/* Start the poller */ @@ -328,7 +313,7 @@ static int dgnc_start(void)  		dgnc_driver_state = DRIVER_READY;  	} -	return(rc); +	return rc;  }  /* @@ -418,7 +403,7 @@ void dgnc_cleanup_module(void)   *   * Free all the memory associated with a board   */ -static void dgnc_cleanup_board(struct board_t *brd) +static void dgnc_cleanup_board(struct dgnc_board *brd)  {  	int i = 0; @@ -463,20 +448,15 @@ static void dgnc_cleanup_board(struct board_t *brd)  	/* Free all allocated channels structs */  	for (i = 0; i < MAXPORTS ; i++) {  		if (brd->channels[i]) { -			if (brd->channels[i]->ch_rqueue) -				kfree(brd->channels[i]->ch_rqueue); -			if (brd->channels[i]->ch_equeue) -				kfree(brd->channels[i]->ch_equeue); -			if (brd->channels[i]->ch_wqueue) -				kfree(brd->channels[i]->ch_wqueue); - +			kfree(brd->channels[i]->ch_rqueue); +			kfree(brd->channels[i]->ch_equeue); +			kfree(brd->channels[i]->ch_wqueue);  			kfree(brd->channels[i]);  			brd->channels[i] = NULL;  		}  	} -	if (brd->flipbuf) -		kfree(brd->flipbuf); +	kfree(brd->flipbuf);  	dgnc_Board[brd->boardnum] = NULL; @@ -491,7 +471,7 @@ static void dgnc_cleanup_board(struct board_t *brd)   */  static int dgnc_found_board(struct pci_dev *pdev, int id)  { -	struct board_t *brd; +	struct dgnc_board *brd;  	unsigned int pci_irq;  	int i = 0;  	int rc = 0; @@ -499,19 +479,16 @@ static int dgnc_found_board(struct pci_dev *pdev, int id)  	/* get the board structure and prep it */  	brd = dgnc_Board[dgnc_NumBoards] = -	(struct board_t *) kzalloc(sizeof(struct board_t), GFP_KERNEL); -	if (!brd) { -		APR(("memory allocation for board structure failed\n")); -		return(-ENOMEM); -	} +		kzalloc(sizeof(*brd), GFP_KERNEL); +	if (!brd)  +		return -ENOMEM;  	/* make a temporary message buffer for the boot messages */  	brd->msgbuf = brd->msgbuf_head = -		(char *) kzalloc(sizeof(char) * 8192, GFP_KERNEL); +		kzalloc(sizeof(u8) * 8192, GFP_KERNEL);  	if (!brd->msgbuf) {  		kfree(brd); -		APR(("memory allocation for board msgbuf failed\n")); -		return(-ENOMEM); +		return -ENOMEM;  	}  	/* store the info for the board we've found */ @@ -534,9 +511,8 @@ static int dgnc_found_board(struct pci_dev *pdev, int id)  	brd->state		= BOARD_FOUND; -	for (i = 0; i < MAXPORTS; i++) { +	for (i = 0; i < MAXPORTS; i++)  		brd->channels[i] = NULL; -	}  	/* store which card & revision we have */  	pci_read_config_word(pdev, PCI_SUBSYSTEM_VENDOR_ID, &brd->subvendor); @@ -663,7 +639,7 @@ static int dgnc_found_board(struct pci_dev *pdev, int id)  	default:  		APR(("Did not find any compatible Neo or Classic PCI boards in system.\n")); -		return (-ENXIO); +		return -ENXIO;  	} @@ -725,44 +701,47 @@ static int dgnc_found_board(struct pci_dev *pdev, int id)  	wake_up_interruptible(&brd->state_wait); -	return(0); +	return 0;  failed: -	return (-ENXIO); +	return -ENXIO;  } -static int dgnc_finalize_board_init(struct board_t *brd) { +static int dgnc_finalize_board_init(struct dgnc_board *brd) {  	int rc = 0;  	DPR_INIT(("dgnc_finalize_board_init() - start\n"));  	if (!brd || brd->magic != DGNC_BOARD_MAGIC) -		return(-ENODEV); +		return -ENODEV;  	DPR_INIT(("dgnc_finalize_board_init() - start #2\n"));  	if (brd->irq) { -		rc = request_irq(brd->irq, brd->bd_ops->intr, IRQF_SHARED, "DGNC", brd); +		rc = request_irq(brd->irq, brd->bd_ops->intr, +				 IRQF_SHARED, "DGNC", brd);  		if (rc) { -			printk("Failed to hook IRQ %d\n",brd->irq); +			dev_err(&brd->pdev->dev, +				"Failed to hook IRQ %d\n", brd->irq);  			brd->state = BOARD_FAILED;  			brd->dpastatus = BD_NOFEP;  			rc = -ENODEV;  		} else { -			DPR_INIT(("Requested and received usage of IRQ %d\n", brd->irq)); +			DPR_INIT(("Requested and received usage of IRQ %d\n", +				  brd->irq));  		}  	} -	return(rc); +	return rc;  }  /*   * Remap PCI memory.   */ -static void dgnc_do_remap(struct board_t *brd) +static void dgnc_do_remap(struct dgnc_board *brd)  {  	if (!brd || brd->magic != DGNC_BOARD_MAGIC) @@ -802,7 +781,7 @@ static void dgnc_do_remap(struct board_t *brd)  static void dgnc_poll_handler(ulong dummy)  { -	struct board_t *brd; +	struct dgnc_board *brd;  	unsigned long lock_flags;  	int i;  	unsigned long new_time; @@ -814,9 +793,8 @@ static void dgnc_poll_handler(ulong dummy)  	 * driver tells us its up and running, and has  	 * everything it needs.  	 */ -	if (dgnc_driver_state != DRIVER_READY) { +	if (dgnc_driver_state != DRIVER_READY)  		goto schedule_poller; -	}  	/* Go thru each board, kicking off a tasklet for each if needed */  	for (i = 0; i < dgnc_NumBoards; i++) { @@ -846,9 +824,8 @@ schedule_poller:  	new_time = dgnc_poll_time - jiffies; -	if ((ulong) new_time >= 2 * dgnc_poll_tick) { +	if ((ulong) new_time >= 2 * dgnc_poll_tick)  		dgnc_poll_time = jiffies +  dgnc_jiffies_from_ms(dgnc_poll_tick); -	}  	init_timer(&dgnc_poll_timer);  	dgnc_poll_timer.function = dgnc_poll_handler; @@ -875,9 +852,8 @@ static void dgnc_init_globals(void)  	dgnc_trcbuf_size	= trcbuf_size;  	dgnc_debug		= debug; -	for (i = 0; i < MAXBOARDS; i++) { +	for (i = 0; i < MAXBOARDS; i++)  		dgnc_Board[i] = NULL; -	}  	init_timer(&dgnc_poll_timer);  } @@ -900,7 +876,7 @@ int dgnc_ms_sleep(ulong ms)  {  	current->state = TASK_INTERRUPTIBLE;  	schedule_timeout((ms * HZ) / 1000); -	return (signal_pending(current)); +	return signal_pending(current);  } @@ -912,47 +888,47 @@ char *dgnc_ioctl_name(int cmd)  {  	switch(cmd) { -	case TCGETA:		return("TCGETA"); -	case TCGETS:		return("TCGETS"); -	case TCSETA:		return("TCSETA"); -	case TCSETS:		return("TCSETS"); -	case TCSETAW:		return("TCSETAW"); -	case TCSETSW:		return("TCSETSW"); -	case TCSETAF:		return("TCSETAF"); -	case TCSETSF:		return("TCSETSF"); -	case TCSBRK:		return("TCSBRK"); -	case TCXONC:		return("TCXONC"); -	case TCFLSH:		return("TCFLSH"); -	case TIOCGSID:		return("TIOCGSID"); - -	case TIOCGETD:		return("TIOCGETD"); -	case TIOCSETD:		return("TIOCSETD"); -	case TIOCGWINSZ:	return("TIOCGWINSZ"); -	case TIOCSWINSZ:	return("TIOCSWINSZ"); - -	case TIOCMGET:		return("TIOCMGET"); -	case TIOCMSET:		return("TIOCMSET"); -	case TIOCMBIS:		return("TIOCMBIS"); -	case TIOCMBIC:		return("TIOCMBIC"); +	case TCGETA:		return "TCGETA"; +	case TCGETS:		return "TCGETS"; +	case TCSETA:		return "TCSETA"; +	case TCSETS:		return "TCSETS"; +	case TCSETAW:		return "TCSETAW"; +	case TCSETSW:		return "TCSETSW"; +	case TCSETAF:		return "TCSETAF"; +	case TCSETSF:		return "TCSETSF"; +	case TCSBRK:		return "TCSBRK"; +	case TCXONC:		return "TCXONC"; +	case TCFLSH:		return "TCFLSH"; +	case TIOCGSID:		return "TIOCGSID"; + +	case TIOCGETD:		return "TIOCGETD"; +	case TIOCSETD:		return "TIOCSETD"; +	case TIOCGWINSZ:	return "TIOCGWINSZ"; +	case TIOCSWINSZ:	return "TIOCSWINSZ"; + +	case TIOCMGET:		return "TIOCMGET"; +	case TIOCMSET:		return "TIOCMSET"; +	case TIOCMBIS:		return "TIOCMBIS"; +	case TIOCMBIC:		return "TIOCMBIC";  	/* from digi.h */ -	case DIGI_SETA:		return("DIGI_SETA"); -	case DIGI_SETAW:	return("DIGI_SETAW"); -	case DIGI_SETAF:	return("DIGI_SETAF"); -	case DIGI_SETFLOW:	return("DIGI_SETFLOW"); -	case DIGI_SETAFLOW:	return("DIGI_SETAFLOW"); -	case DIGI_GETFLOW:	return("DIGI_GETFLOW"); -	case DIGI_GETAFLOW:	return("DIGI_GETAFLOW"); -	case DIGI_GETA:		return("DIGI_GETA"); -	case DIGI_GEDELAY:	return("DIGI_GEDELAY"); -	case DIGI_SEDELAY:	return("DIGI_SEDELAY"); -	case DIGI_GETCUSTOMBAUD: return("DIGI_GETCUSTOMBAUD"); -	case DIGI_SETCUSTOMBAUD: return("DIGI_SETCUSTOMBAUD"); -	case TIOCMODG:		return("TIOCMODG"); -	case TIOCMODS:		return("TIOCMODS"); -	case TIOCSDTR:		return("TIOCSDTR"); -	case TIOCCDTR:		return("TIOCCDTR"); - -	default:		return("unknown"); +	case DIGI_SETA:		return "DIGI_SETA"; +	case DIGI_SETAW:	return "DIGI_SETAW"; +	case DIGI_SETAF:	return "DIGI_SETAF"; +	case DIGI_SETFLOW:	return "DIGI_SETFLOW"; +	case DIGI_SETAFLOW:	return "DIGI_SETAFLOW"; +	case DIGI_GETFLOW:	return "DIGI_GETFLOW"; +	case DIGI_GETAFLOW:	return "DIGI_GETAFLOW"; +	case DIGI_GETA:		return "DIGI_GETA"; +	case DIGI_GEDELAY:	return "DIGI_GEDELAY"; +	case DIGI_SEDELAY:	return "DIGI_SEDELAY"; +	case DIGI_GETCUSTOMBAUD: return "DIGI_GETCUSTOMBAUD"; +	case DIGI_SETCUSTOMBAUD: return "DIGI_SETCUSTOMBAUD"; +	case TIOCMODG:		return "TIOCMODG"; +	case TIOCMODS:		return "TIOCMODS"; +	case TIOCSDTR:		return "TIOCSDTR"; +	case TIOCCDTR:		return "TIOCCDTR"; + +	default:		return "unknown";  	}  } diff --git a/drivers/staging/dgnc/dgnc_driver.h b/drivers/staging/dgnc/dgnc_driver.h index 218b15dccb7..3519b803e75 100644 --- a/drivers/staging/dgnc/dgnc_driver.h +++ b/drivers/staging/dgnc/dgnc_driver.h @@ -45,7 +45,7 @@  /*   * Driver identification, error and debugging statments   * - * In theory, you can change all occurances of "digi" in the next + * In theory, you can change all occurrences of "digi" in the next   * three lines, and the driver printk's will all automagically change.   *   * APR((fmt, args, ...));	Always prints message @@ -246,7 +246,7 @@ enum {   *   *************************************************************************/ -struct board_t; +struct dgnc_board;  struct channel_t;  /************************************************************************ @@ -259,7 +259,7 @@ struct board_ops {  	void (*uart_off) (struct channel_t *ch);  	int  (*drain) (struct tty_struct *tty, uint seconds);  	void (*param) (struct tty_struct *tty); -	void (*vpd) (struct board_t *brd); +	void (*vpd) (struct dgnc_board *brd);  	void (*assert_modem_signals) (struct channel_t *ch);  	void (*flush_uart_write) (struct channel_t *ch);  	void (*flush_uart_read) (struct channel_t *ch); @@ -282,7 +282,7 @@ struct board_ops {  /*   *	Per-board information   */ -struct board_t { +struct dgnc_board {  	int		magic;		/* Board Magic number.  */  	int		boardnum;	/* Board number: 0-32 */ @@ -449,7 +449,7 @@ struct un_t {   ************************************************************************/  struct channel_t {  	int magic;			/* Channel Magic Number		*/ -	struct board_t	*ch_bd;		/* Board structure pointer      */ +	struct dgnc_board	*ch_bd;		/* Board structure pointer      */  	struct digi_t	ch_digi;	/* Transparent Print structure  */  	struct un_t	ch_tun;		/* Terminal unit info	   */  	struct un_t	ch_pun;		/* Printer unit info	    */ @@ -555,7 +555,7 @@ extern int		dgnc_poll_tick;		/* Poll interval - 20 ms	*/  extern int		dgnc_trcbuf_size;	/* Size of the ringbuffer	*/  extern spinlock_t	dgnc_global_lock;	/* Driver global spinlock	*/  extern uint		dgnc_NumBoards;		/* Total number of boards	*/ -extern struct board_t	*dgnc_Board[MAXBOARDS];	/* Array of board structs	*/ +extern struct dgnc_board	*dgnc_Board[MAXBOARDS];	/* Array of board structs	*/  extern ulong		dgnc_poll_counter;	/* Times the poller has run	*/  extern char		*dgnc_state_text[];	/* Array of state text		*/  extern char		*dgnc_driver_state_text[];/* Array of driver state text */ diff --git a/drivers/staging/dgnc/dgnc_kcompat.h b/drivers/staging/dgnc/dgnc_kcompat.h index 00f589a13ab..eaec7e6a28e 100644 --- a/drivers/staging/dgnc/dgnc_kcompat.h +++ b/drivers/staging/dgnc/dgnc_kcompat.h @@ -28,13 +28,6 @@  #ifndef __DGNC_KCOMPAT_H  #define __DGNC_KCOMPAT_H -#include <linux/version.h> - -# ifndef KERNEL_VERSION -#  define KERNEL_VERSION(a,b,c)  (((a) << 16) + ((b) << 8) + (c)) -# endif - -  #if !defined(TTY_FLIPBUF_SIZE)  # define TTY_FLIPBUF_SIZE 512  #endif @@ -68,26 +61,4 @@  		module_param(VAR, long, PERM); \  		MODULE_PARM_DESC(VAR, DESC); - - - - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27) - - - -/* NOTHING YET */ - - - -# else - - - -# error "this driver does not support anything below the 2.6.27 kernel series." - - - -# endif -  #endif /* ! __DGNC_KCOMPAT_H */ diff --git a/drivers/staging/dgnc/dgnc_mgmt.c b/drivers/staging/dgnc/dgnc_mgmt.c index c4629d7c80b..c5b425bf669 100644 --- a/drivers/staging/dgnc/dgnc_mgmt.c +++ b/drivers/staging/dgnc/dgnc_mgmt.c @@ -42,7 +42,7 @@  #include <linux/interrupt.h>	/* For tasklet and interrupt structs/defines */  #include <linux/serial_reg.h>  #include <linux/termios.h> -#include <asm/uaccess.h>	/* For copy_from_user/copy_to_user */ +#include <linux/uaccess.h>	/* For copy_from_user/copy_to_user */  #include "dgnc_driver.h"  #include "dgnc_pci.h" @@ -74,13 +74,12 @@ int dgnc_mgmt_open(struct inode *inode, struct file *file)  		/* Only allow 1 open at a time on mgmt device */  		if (dgnc_mgmt_in_use[minor]) {  			DGNC_UNLOCK(dgnc_global_lock, lock_flags); -			return (-EBUSY); +			return -EBUSY;  		}  		dgnc_mgmt_in_use[minor]++; -	} -	else { +	} else {  		DGNC_UNLOCK(dgnc_global_lock, lock_flags); -		return (-ENXIO); +		return -ENXIO;  	}  	DGNC_UNLOCK(dgnc_global_lock, lock_flags); @@ -107,9 +106,8 @@ int dgnc_mgmt_close(struct inode *inode, struct file *file)  	/* mgmt device */  	if (minor < MAXMGMTDEVICES) { -		if (dgnc_mgmt_in_use[minor]) { +		if (dgnc_mgmt_in_use[minor])  			dgnc_mgmt_in_use[minor] = 0; -		}  	}  	DGNC_UNLOCK(dgnc_global_lock, lock_flags); @@ -153,8 +151,8 @@ long dgnc_mgmt_ioctl(struct file *file, unsigned int cmd, unsigned long arg)  		DPR_MGMT(("DIGI_GETDD returning numboards: %d version: %s\n",  			ddi.dinfo_nboards, ddi.dinfo_version)); -		if (copy_to_user(uarg, &ddi, sizeof (ddi))) -			return(-EFAULT); +		if (copy_to_user(uarg, &ddi, sizeof(ddi))) +			return -EFAULT;  		break;  	} @@ -165,14 +163,14 @@ long dgnc_mgmt_ioctl(struct file *file, unsigned int cmd, unsigned long arg)  		struct digi_info di; -		if (copy_from_user(&brd, uarg, sizeof(int))) { -			return(-EFAULT); -		} +		if (copy_from_user(&brd, uarg, sizeof(int))) +			return -EFAULT;  		DPR_MGMT(("DIGI_GETBD asking about board: %d\n", brd)); -		if ((brd < 0) || (brd > dgnc_NumBoards) || (dgnc_NumBoards == 0)) -			return (-ENODEV); +		if ((brd < 0) || (brd > dgnc_NumBoards) || +		    (dgnc_NumBoards == 0)) +			return -ENODEV;  		memset(&di, 0, sizeof(di)); @@ -195,8 +193,8 @@ long dgnc_mgmt_ioctl(struct file *file, unsigned int cmd, unsigned long arg)  		DPR_MGMT(("DIGI_GETBD returning type: %x state: %x ports: %x size: %x\n",  			di.info_bdtype, di.info_bdstate, di.info_nports, di.info_physsize)); -		if (copy_to_user(uarg, &di, sizeof (di))) -			return (-EFAULT); +		if (copy_to_user(uarg, &di, sizeof(di))) +			return -EFAULT;  		break;  	} @@ -209,9 +207,8 @@ long dgnc_mgmt_ioctl(struct file *file, unsigned int cmd, unsigned long arg)  		uint board = 0;  		uint channel = 0; -		if (copy_from_user(&ni, uarg, sizeof(struct ni_info))) { -			return(-EFAULT); -		} +		if (copy_from_user(&ni, uarg, sizeof(ni))) +			return -EFAULT;  		DPR_MGMT(("DIGI_GETBD asking about board: %d channel: %d\n",  			ni.board, ni.channel)); @@ -220,17 +217,17 @@ long dgnc_mgmt_ioctl(struct file *file, unsigned int cmd, unsigned long arg)  		channel = ni.channel;  		/* Verify boundaries on board */ -		if ((board < 0) || (board > dgnc_NumBoards) || (dgnc_NumBoards == 0)) -			return (-ENODEV); +		if ((board > dgnc_NumBoards) || (dgnc_NumBoards == 0)) +			return -ENODEV;  		/* Verify boundaries on channel */  		if ((channel < 0) || (channel > dgnc_Board[board]->nasync)) -			return (-ENODEV); +			return -ENODEV;  		ch = dgnc_Board[board]->channels[channel];  		if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -			return (-ENODEV); +			return -ENODEV;  		memset(&ni, 0, sizeof(ni));  		ni.board = board; @@ -268,12 +265,14 @@ long dgnc_mgmt_ioctl(struct file *file, unsigned int cmd, unsigned long arg)  		ni.cflag = ch->ch_c_cflag;  		ni.lflag = ch->ch_c_lflag; -		if (ch->ch_digi.digi_flags & CTSPACE || ch->ch_c_cflag & CRTSCTS) +		if (ch->ch_digi.digi_flags & CTSPACE || +		    ch->ch_c_cflag & CRTSCTS)  			ni.hflow = 1;  		else  			ni.hflow = 0; -		if ((ch->ch_flags & CH_STOPI) || (ch->ch_flags & CH_FORCED_STOPI)) +		if ((ch->ch_flags & CH_STOPI) || +		    (ch->ch_flags & CH_FORCED_STOPI))  			ni.recv_stopped = 1;  		else  			ni.recv_stopped = 0; @@ -291,7 +290,7 @@ long dgnc_mgmt_ioctl(struct file *file, unsigned int cmd, unsigned long arg)  		DGNC_UNLOCK(ch->ch_lock, lock_flags);  		if (copy_to_user(uarg, &ni, sizeof(ni))) -			return (-EFAULT); +			return -EFAULT;  		break;  	} diff --git a/drivers/staging/dgnc/dgnc_neo.c b/drivers/staging/dgnc/dgnc_neo.c index 8b9e09a83f7..9de988cc892 100644 --- a/drivers/staging/dgnc/dgnc_neo.c +++ b/drivers/staging/dgnc/dgnc_neo.c @@ -43,8 +43,8 @@  #include "dgnc_tty.h"  #include "dgnc_trace.h" -static inline void neo_parse_lsr(struct board_t *brd, uint port); -static inline void neo_parse_isr(struct board_t *brd, uint port); +static inline void neo_parse_lsr(struct dgnc_board *brd, uint port); +static inline void neo_parse_isr(struct dgnc_board *brd, uint port);  static void neo_copy_data_from_uart_to_queue(struct channel_t *ch);  static inline void neo_clear_break(struct channel_t *ch, int force);  static inline void neo_set_cts_flow_control(struct channel_t *ch); @@ -56,7 +56,7 @@ static inline void neo_set_no_input_flow_control(struct channel_t *ch);  static inline void neo_set_new_start_stop_chars(struct channel_t *ch);  static void neo_parse_modem(struct channel_t *ch, uchar signals);  static void neo_tasklet(unsigned long data); -static void neo_vpd(struct board_t *brd); +static void neo_vpd(struct dgnc_board *brd);  static void neo_uart_init(struct channel_t *ch);  static void neo_uart_off(struct channel_t *ch);  static int neo_drain(struct tty_struct *tty, uint seconds); @@ -107,7 +107,7 @@ static uint dgnc_offset_table[8] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0   * In this case, we are reading the DVID (Read-only Device Identification)   * value of the Neo card.   */ -static inline void neo_pci_posting_flush(struct board_t *bd) +static inline void neo_pci_posting_flush(struct dgnc_board *bd)  {  	readb(bd->re_map_membase + 0x8D);  } @@ -395,7 +395,8 @@ static inline void neo_clear_break(struct channel_t *ch, int force)  	/* Turn break off, and unset some variables */  	if (ch->ch_flags & CH_BREAK_SENDING) { -		if ((jiffies >= ch->ch_stop_sending_break) || force) { +		if (time_after_eq(jiffies, ch->ch_stop_sending_break) +		    || force) {  			uchar temp = readb(&ch->ch_neo_uart->lcr);  			writeb((temp & ~UART_LCR_SBC), &ch->ch_neo_uart->lcr);  			neo_pci_posting_flush(ch->ch_bd); @@ -411,7 +412,7 @@ static inline void neo_clear_break(struct channel_t *ch, int force)  /*   * Parse the ISR register.   */ -static inline void neo_parse_isr(struct board_t *brd, uint port) +static inline void neo_parse_isr(struct dgnc_board *brd, uint port)  {  	struct channel_t *ch;  	uchar isr; @@ -434,9 +435,8 @@ static inline void neo_parse_isr(struct board_t *brd, uint port)  		isr = readb(&ch->ch_neo_uart->isr_fcr);  		/* Bail if no pending interrupt */ -		if (isr & UART_IIR_NO_INT)  { +		if (isr & UART_IIR_NO_INT)  			break; -		}  		/*  		 * Yank off the upper 2 bits, which just show that the FIFO's are enabled. @@ -485,8 +485,7 @@ static inline void neo_parse_isr(struct board_t *brd, uint port)  					DGNC_UNLOCK(ch->ch_lock, lock_flags);  				}  				DPR_INTR(("Port %d. XON detected in incoming data\n", port)); -			} -			else if (cause == UART_17158_XOFF_DETECT) { +			} else if (cause == UART_17158_XOFF_DETECT) {  				if (!(brd->channels[port]->ch_flags & CH_STOP)) {  					DGNC_LOCK(ch->ch_lock, lock_flags);  					ch->ch_flags |= CH_STOP; @@ -511,8 +510,7 @@ static inline void neo_parse_isr(struct board_t *brd, uint port)  					DGNC_LOCK(ch->ch_lock, lock_flags);  					ch->ch_mostat |= UART_MCR_RTS;  					DGNC_UNLOCK(ch->ch_lock, lock_flags); -				} -				else { +				} else {  					DGNC_LOCK(ch->ch_lock, lock_flags);  					ch->ch_mostat &= ~(UART_MCR_RTS);  					DGNC_UNLOCK(ch->ch_lock, lock_flags); @@ -522,8 +520,7 @@ static inline void neo_parse_isr(struct board_t *brd, uint port)  					DGNC_LOCK(ch->ch_lock, lock_flags);  					ch->ch_mostat |= UART_MCR_DTR;  					DGNC_UNLOCK(ch->ch_lock, lock_flags); -				} -				else { +				} else {  					DGNC_LOCK(ch->ch_lock, lock_flags);  					ch->ch_mostat &= ~(UART_MCR_DTR);  					DGNC_UNLOCK(ch->ch_lock, lock_flags); @@ -538,7 +535,7 @@ static inline void neo_parse_isr(struct board_t *brd, uint port)  } -static inline void neo_parse_lsr(struct board_t *brd, uint port) +static inline void neo_parse_lsr(struct dgnc_board *brd, uint port)  {  	struct channel_t *ch;  	int linestatus; @@ -624,8 +621,7 @@ static inline void neo_parse_lsr(struct board_t *brd, uint port)  		/* Transfer data (if any) from Write Queue -> UART. */  		neo_copy_data_from_queue_to_uart(ch); -	} -	else if (linestatus & UART_17158_TX_AND_FIFO_CLR) { +	} else if (linestatus & UART_17158_TX_AND_FIFO_CLR) {  		brd->intr_tx++;  		ch->ch_intr_tx++;  		DGNC_LOCK(ch->ch_lock, lock_flags); @@ -650,28 +646,24 @@ static void neo_param(struct tty_struct *tty)  	uchar uart_ier = 0;  	uint baud = 9600;  	int quot = 0; -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t   *un; -	if (!tty || tty->magic != TTY_MAGIC) { +	if (!tty || tty->magic != TTY_MAGIC)  		return; -	}  	un = (struct un_t *) tty->driver_data; -	if (!un || un->magic != DGNC_UNIT_MAGIC) { +	if (!un || un->magic != DGNC_UNIT_MAGIC)  		return; -	}  	ch = un->un_ch; -	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) { +	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC)  		return; -	}  	bd = ch->ch_bd; -	if (!bd || bd->magic != DGNC_BOARD_MAGIC) { +	if (!bd || bd->magic != DGNC_BOARD_MAGIC)  		return; -	}  	DPR_PARAM(("param start: tdev: %x cflags: %x oflags: %x iflags: %x\n",  		ch->ch_tun.un_dev, ch->ch_c_cflag, ch->ch_c_oflag, ch->ch_c_iflag)); @@ -777,13 +769,11 @@ static void neo_param(struct tty_struct *tty)  		}  	} -	if (ch->ch_c_cflag & PARENB) { +	if (ch->ch_c_cflag & PARENB)  		lcr |= UART_LCR_PARITY; -	} -	if (!(ch->ch_c_cflag & PARODD)) { +	if (!(ch->ch_c_cflag & PARODD))  		lcr |= UART_LCR_EPAR; -	}  	/*  	 * Not all platforms support mark/space parity, @@ -832,26 +822,23 @@ static void neo_param(struct tty_struct *tty)  	if (uart_lcr != lcr)  		writeb(lcr, &ch->ch_neo_uart->lcr); -	if (ch->ch_c_cflag & CREAD) { +	if (ch->ch_c_cflag & CREAD)  		ier |= (UART_IER_RDI | UART_IER_RLSI); -	} -	else { +	else  		ier &= ~(UART_IER_RDI | UART_IER_RLSI); -	}  	/*  	 * Have the UART interrupt on modem signal changes ONLY when  	 * we are in hardware flow control mode, or CLOCAL/FORCEDCD is not set.  	 */ -	if ((ch->ch_digi.digi_flags & CTSPACE) || (ch->ch_digi.digi_flags & RTSPACE) || -		(ch->ch_c_cflag & CRTSCTS) || !(ch->ch_digi.digi_flags & DIGI_FORCEDCD) || -		!(ch->ch_c_cflag & CLOCAL)) -	{ +	if ((ch->ch_digi.digi_flags & CTSPACE) || +	    (ch->ch_digi.digi_flags & RTSPACE) || +	    (ch->ch_c_cflag & CRTSCTS) || +	    !(ch->ch_digi.digi_flags & DIGI_FORCEDCD) || +	    !(ch->ch_c_cflag & CLOCAL))  		ier |= UART_IER_MSI; -	} -	else { +	else  		ier &= ~UART_IER_MSI; -	}  	ier |= UART_IER_THRI; @@ -863,29 +850,25 @@ static void neo_param(struct tty_struct *tty)  	if (ch->ch_digi.digi_flags & CTSPACE || ch->ch_c_cflag & CRTSCTS) {  		neo_set_cts_flow_control(ch); -	} -	else if (ch->ch_c_iflag & IXON) { +	} else if (ch->ch_c_iflag & IXON) {  		/* If start/stop is set to disable, then we should disable flow control */  		if ((ch->ch_startc == _POSIX_VDISABLE) || (ch->ch_stopc == _POSIX_VDISABLE))  			neo_set_no_output_flow_control(ch);  		else  			neo_set_ixon_flow_control(ch); -	} -	else { +	} else {  		neo_set_no_output_flow_control(ch);  	}  	if (ch->ch_digi.digi_flags & RTSPACE || ch->ch_c_cflag & CRTSCTS) {  		neo_set_rts_flow_control(ch); -	} -	else if (ch->ch_c_iflag & IXOFF) { +	} else if (ch->ch_c_iflag & IXOFF) {  		/* If start/stop is set to disable, then we should disable flow control */  		if ((ch->ch_startc == _POSIX_VDISABLE) || (ch->ch_stopc == _POSIX_VDISABLE))  			neo_set_no_input_flow_control(ch);  		else  			neo_set_ixoff_flow_control(ch); -	} -	else { +	} else {  		neo_set_no_input_flow_control(ch);  	} @@ -911,7 +894,7 @@ static void neo_param(struct tty_struct *tty)   */  static void neo_tasklet(unsigned long data)  { -	struct board_t *bd = (struct board_t *) data; +	struct dgnc_board *bd = (struct dgnc_board *) data;  	struct channel_t *ch;  	ulong  lock_flags;  	int i; @@ -994,7 +977,7 @@ static void neo_tasklet(unsigned long data)   */  static irqreturn_t neo_intr(int irq, void *voidbrd)  { -	struct board_t *brd = (struct board_t *) voidbrd; +	struct dgnc_board *brd = (struct dgnc_board *) voidbrd;  	struct channel_t *ch;  	int port = 0;  	int type = 0; @@ -1111,7 +1094,7 @@ static irqreturn_t neo_intr(int irq, void *voidbrd)  			 * Why would I check EVERY possibility of type of  			 * interrupt, when we know its TXRDY???  			 * Becuz for some reason, even tho we got triggered for TXRDY, -			 * it seems to be occassionally wrong. Instead of TX, which +			 * it seems to be occasionally wrong. Instead of TX, which  			 * it should be, I was getting things like RXDY too. Weird.  			 */  			neo_parse_isr(brd, port); @@ -1201,7 +1184,8 @@ static void neo_copy_data_from_uart_to_queue(struct channel_t *ch)  	ch->ch_cached_lsr = 0;  	/* Store how much space we have left in the queue */ -	if ((qleft = tail - head - 1) < 0) +	qleft = tail - head - 1; +	if (qleft < 0)  		qleft += RQUEUEMASK + 1;  	/* @@ -1224,12 +1208,10 @@ static void neo_copy_data_from_uart_to_queue(struct channel_t *ch)  		 * The count can be any where from 0-3 bytes "off".  		 * Bizarre, but true.  		 */ -		if ((ch->ch_bd->dvid & 0xf0) >= UART_XR17E158_DVID) { +		if ((ch->ch_bd->dvid & 0xf0) >= UART_XR17E158_DVID)  			total -= 1; -		} -		else { +		else  			total -= 3; -		}  	} @@ -1273,9 +1255,8 @@ static void neo_copy_data_from_uart_to_queue(struct channel_t *ch)  		 * will reset some bits after our read, we need to ensure  		 * we don't miss our TX FIFO emptys.  		 */ -		if (linestatus & (UART_LSR_THRE | UART_17158_TX_AND_FIFO_CLR)) { +		if (linestatus & (UART_LSR_THRE | UART_17158_TX_AND_FIFO_CLR))  			ch->ch_flags |= (CH_TX_FIFO_EMPTY | CH_TX_FIFO_LWM); -		}  		linestatus = 0; @@ -1403,19 +1384,16 @@ static int neo_drain(struct tty_struct *tty, uint seconds)  	struct un_t *un;  	int rc = 0; -	if (!tty || tty->magic != TTY_MAGIC) { -		return (-ENXIO); -	} +	if (!tty || tty->magic != TTY_MAGIC) +		return -ENXIO;  	un = (struct un_t *) tty->driver_data; -	if (!un || un->magic != DGNC_UNIT_MAGIC) { -		return (-ENXIO); -	} +	if (!un || un->magic != DGNC_UNIT_MAGIC) +		return -ENXIO;  	ch = un->un_ch; -	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) { -		return (-ENXIO); -	} +	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) +		return -ENXIO;  	DPR_IOCTL(("%d Drain wait started.\n", __LINE__)); @@ -1432,14 +1410,12 @@ static int neo_drain(struct tty_struct *tty, uint seconds)  	rc = wait_event_interruptible(un->un_flags_wait, ((un->un_flags & UN_EMPTY) == 0));  	/* If ret is non-zero, user ctrl-c'ed us */ -	if (rc) { +	if (rc)  		DPR_IOCTL(("%d Drain - User ctrl c'ed\n", __LINE__)); -	} -	else { +	else  		DPR_IOCTL(("%d Drain wait finished.\n", __LINE__)); -	} -	return (rc); +	return rc;  } @@ -1453,9 +1429,8 @@ static void neo_flush_uart_write(struct channel_t *ch)  	uchar tmp = 0;  	int i = 0; -	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) { +	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC)  		return; -	}  	writeb((UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_XMIT), &ch->ch_neo_uart->isr_fcr);  	neo_pci_posting_flush(ch->ch_bd); @@ -1467,8 +1442,7 @@ static void neo_flush_uart_write(struct channel_t *ch)  		if (tmp & 4) {  			DPR_IOCTL(("Still flushing TX UART... i: %d\n", i));  			udelay(10); -		} -		else +		} else  			break;  	} @@ -1486,9 +1460,8 @@ static void neo_flush_uart_read(struct channel_t *ch)  	uchar tmp = 0;  	int i = 0; -	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) { +	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC)  		return; -	}  	writeb((UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR), &ch->ch_neo_uart->isr_fcr);  	neo_pci_posting_flush(ch->ch_bd); @@ -1500,8 +1473,7 @@ static void neo_flush_uart_read(struct channel_t *ch)  		if (tmp & 2) {  			DPR_IOCTL(("Still flushing RX UART... i: %d\n", i));  			udelay(10); -		} -		else +		} else  			break;  	}  } @@ -1597,8 +1569,7 @@ static void neo_copy_data_from_queue_to_uart(struct channel_t *ch)  		}  		n = UART_17158_TX_FIFOSIZE - ch->ch_t_tlevel; -	} -	else { +	} else {  		n = UART_17158_TX_FIFOSIZE - readb(&ch->ch_neo_uart->tfifo);  	} @@ -1939,7 +1910,7 @@ static unsigned int neo_read_eeprom(unsigned char __iomem *base, unsigned int ad  } -static void neo_vpd(struct board_t *brd) +static void neo_vpd(struct dgnc_board *brd)  {  	unsigned int i = 0;  	unsigned int a; @@ -1962,13 +1933,10 @@ static void neo_vpd(struct board_t *brd)  		||  (brd->vpd[0x7F] != 0x78))   /* small resource end tag */  	{  		memset(brd->vpd, '\0', NEO_VPD_IMAGESIZE); -	} -	else { +	} else {  		/* Search for the serial number */ -		for (i = 0; i < NEO_VPD_IMAGESIZE * 2; i++) { -			if (brd->vpd[i] == 'S' && brd->vpd[i + 1] == 'N') { +		for (i = 0; i < NEO_VPD_IMAGEBYTES - 3; i++) +			if (brd->vpd[i] == 'S' && brd->vpd[i + 1] == 'N')  				strncpy(brd->serial_num, &(brd->vpd[i + 3]), 9); -			} -		}  	}  } diff --git a/drivers/staging/dgnc/dgnc_neo.h b/drivers/staging/dgnc/dgnc_neo.h index 7ec5710a434..1a4abb12869 100644 --- a/drivers/staging/dgnc/dgnc_neo.h +++ b/drivers/staging/dgnc/dgnc_neo.h @@ -47,7 +47,7 @@ struct neo_uart_struct {  	u8 fctr;		/* WR  FCTR - Feature Control Reg */  	u8 efr;		/* WR  EFR - Enhanced Function Reg */  	u8 tfifo;		/* WR  TXCNT/TXTRG - Transmit FIFO Reg */ -	u8 rfifo;		/* WR  RXCNT/RXTRG - Recieve  FIFO Reg */ +	u8 rfifo;		/* WR  RXCNT/RXTRG - Receive  FIFO Reg */  	u8 xoffchar1;	/* WR  XOFF 1 - XOff Character 1 Reg */  	u8 xoffchar2;	/* WR  XOFF 2 - XOff Character 2 Reg */  	u8 xonchar1;	/* WR  XON 1 - Xon Character 1 Reg */ diff --git a/drivers/staging/dgnc/dgnc_sysfs.c b/drivers/staging/dgnc/dgnc_sysfs.c index 0ea6c800280..0f0e8fcb663 100644 --- a/drivers/staging/dgnc/dgnc_sysfs.c +++ b/drivers/staging/dgnc/dgnc_sysfs.c @@ -152,19 +152,19 @@ void dgnc_remove_driver_sysfiles(struct pci_driver *dgnc_driver)  #define DGNC_VERIFY_BOARD(p, bd)			\  	if (!p)						\ -		return (0);				\ +		return 0;				\  							\  	bd = dev_get_drvdata(p);			\  	if (!bd || bd->magic != DGNC_BOARD_MAGIC)	\ -		return (0);				\ +		return 0;				\  	if (bd->state != BOARD_READY)			\ -		return (0);				\ +		return 0;				\  static ssize_t dgnc_vpd_show(struct device *p, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	int count = 0;  	int i = 0; @@ -184,7 +184,7 @@ static DEVICE_ATTR(vpd, S_IRUSR, dgnc_vpd_show, NULL);  static ssize_t dgnc_serial_number_show(struct device *p, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	int count = 0;  	DGNC_VERIFY_BOARD(p, bd); @@ -201,7 +201,7 @@ static DEVICE_ATTR(serial_number, S_IRUSR, dgnc_serial_number_show, NULL);  static ssize_t dgnc_ports_state_show(struct device *p, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	int count = 0;  	int i = 0; @@ -219,7 +219,7 @@ static DEVICE_ATTR(ports_state, S_IRUSR, dgnc_ports_state_show, NULL);  static ssize_t dgnc_ports_baud_show(struct device *p, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	int count = 0;  	int i = 0; @@ -236,7 +236,7 @@ static DEVICE_ATTR(ports_baud, S_IRUSR, dgnc_ports_baud_show, NULL);  static ssize_t dgnc_ports_msignals_show(struct device *p, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	int count = 0;  	int i = 0; @@ -264,7 +264,7 @@ static DEVICE_ATTR(ports_msignals, S_IRUSR, dgnc_ports_msignals_show, NULL);  static ssize_t dgnc_ports_iflag_show(struct device *p, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	int count = 0;  	int i = 0; @@ -281,7 +281,7 @@ static DEVICE_ATTR(ports_iflag, S_IRUSR, dgnc_ports_iflag_show, NULL);  static ssize_t dgnc_ports_cflag_show(struct device *p, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	int count = 0;  	int i = 0; @@ -298,7 +298,7 @@ static DEVICE_ATTR(ports_cflag, S_IRUSR, dgnc_ports_cflag_show, NULL);  static ssize_t dgnc_ports_oflag_show(struct device *p, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	int count = 0;  	int i = 0; @@ -315,7 +315,7 @@ static DEVICE_ATTR(ports_oflag, S_IRUSR, dgnc_ports_oflag_show, NULL);  static ssize_t dgnc_ports_lflag_show(struct device *p, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	int count = 0;  	int i = 0; @@ -332,7 +332,7 @@ static DEVICE_ATTR(ports_lflag, S_IRUSR, dgnc_ports_lflag_show, NULL);  static ssize_t dgnc_ports_digi_flag_show(struct device *p, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	int count = 0;  	int i = 0; @@ -349,7 +349,7 @@ static DEVICE_ATTR(ports_digi_flag, S_IRUSR, dgnc_ports_digi_flag_show, NULL);  static ssize_t dgnc_ports_rxcount_show(struct device *p, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	int count = 0;  	int i = 0; @@ -366,7 +366,7 @@ static DEVICE_ATTR(ports_rxcount, S_IRUSR, dgnc_ports_rxcount_show, NULL);  static ssize_t dgnc_ports_txcount_show(struct device *p, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	int count = 0;  	int i = 0; @@ -384,7 +384,7 @@ static DEVICE_ATTR(ports_txcount, S_IRUSR, dgnc_ports_txcount_show, NULL);  /* this function creates the sys files that will export each signal status   * to sysfs each value will be put in a separate filename   */ -void dgnc_create_ports_sysfiles(struct board_t *bd) +void dgnc_create_ports_sysfiles(struct dgnc_board *bd)  {  	int rc = 0; @@ -408,7 +408,7 @@ void dgnc_create_ports_sysfiles(struct board_t *bd)  /* removes all the sys files created for that port */ -void dgnc_remove_ports_sysfiles(struct board_t *bd) +void dgnc_remove_ports_sysfiles(struct dgnc_board *bd)  {  	device_remove_file(&(bd->pdev->dev), &dev_attr_ports_state);  	device_remove_file(&(bd->pdev->dev), &dev_attr_ports_baud); @@ -427,23 +427,23 @@ void dgnc_remove_ports_sysfiles(struct board_t *bd)  static ssize_t dgnc_tty_state_show(struct device *d, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	if (!d) -		return (0); -	un = (struct un_t *) dev_get_drvdata(d); +		return 0; +	un = dev_get_drvdata(d);  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return (0); +		return 0;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return (0); +		return 0;  	bd = ch->ch_bd;  	if (!bd || bd->magic != DGNC_BOARD_MAGIC) -		return (0); +		return 0;  	if (bd->state != BOARD_READY) -		return (0); +		return 0;  	return snprintf(buf, PAGE_SIZE, "%s", un->un_open_count ? "Open" : "Closed");  } @@ -452,23 +452,23 @@ static DEVICE_ATTR(state, S_IRUSR, dgnc_tty_state_show, NULL);  static ssize_t dgnc_tty_baud_show(struct device *d, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	if (!d) -		return (0); -	un = (struct un_t *) dev_get_drvdata(d); +		return 0; +	un = dev_get_drvdata(d);  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return (0); +		return 0;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return (0); +		return 0;  	bd = ch->ch_bd;  	if (!bd || bd->magic != DGNC_BOARD_MAGIC) -		return (0); +		return 0;  	if (bd->state != BOARD_READY) -		return (0); +		return 0;  	return snprintf(buf, PAGE_SIZE, "%d\n", ch->ch_old_baud);  } @@ -477,23 +477,23 @@ static DEVICE_ATTR(baud, S_IRUSR, dgnc_tty_baud_show, NULL);  static ssize_t dgnc_tty_msignals_show(struct device *d, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	if (!d) -		return (0); -	un = (struct un_t *) dev_get_drvdata(d); +		return 0; +	un = dev_get_drvdata(d);  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return (0); +		return 0;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return (0); +		return 0;  	bd = ch->ch_bd;  	if (!bd || bd->magic != DGNC_BOARD_MAGIC) -		return (0); +		return 0;  	if (bd->state != BOARD_READY) -		return (0); +		return 0;  	if (ch->ch_open_count) {  		return snprintf(buf, PAGE_SIZE, "%s %s %s %s %s %s\n", @@ -511,23 +511,23 @@ static DEVICE_ATTR(msignals, S_IRUSR, dgnc_tty_msignals_show, NULL);  static ssize_t dgnc_tty_iflag_show(struct device *d, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	if (!d) -		return (0); -	un = (struct un_t *) dev_get_drvdata(d); +		return 0; +	un = dev_get_drvdata(d);  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return (0); +		return 0;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return (0); +		return 0;  	bd = ch->ch_bd;  	if (!bd || bd->magic != DGNC_BOARD_MAGIC) -		return (0); +		return 0;  	if (bd->state != BOARD_READY) -		return (0); +		return 0;  	return snprintf(buf, PAGE_SIZE, "%x\n", ch->ch_c_iflag);  } @@ -536,23 +536,23 @@ static DEVICE_ATTR(iflag, S_IRUSR, dgnc_tty_iflag_show, NULL);  static ssize_t dgnc_tty_cflag_show(struct device *d, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	if (!d) -		return (0); -	un = (struct un_t *) dev_get_drvdata(d); +		return 0; +	un = dev_get_drvdata(d);  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return (0); +		return 0;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return (0); +		return 0;  	bd = ch->ch_bd;  	if (!bd || bd->magic != DGNC_BOARD_MAGIC) -		return (0); +		return 0;  	if (bd->state != BOARD_READY) -		return (0); +		return 0;  	return snprintf(buf, PAGE_SIZE, "%x\n", ch->ch_c_cflag);  } @@ -561,23 +561,23 @@ static DEVICE_ATTR(cflag, S_IRUSR, dgnc_tty_cflag_show, NULL);  static ssize_t dgnc_tty_oflag_show(struct device *d, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	if (!d) -		return (0); -	un = (struct un_t *) dev_get_drvdata(d); +		return 0; +	un = dev_get_drvdata(d);  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return (0); +		return 0;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return (0); +		return 0;  	bd = ch->ch_bd;  	if (!bd || bd->magic != DGNC_BOARD_MAGIC) -		return (0); +		return 0;  	if (bd->state != BOARD_READY) -		return (0); +		return 0;  	return snprintf(buf, PAGE_SIZE, "%x\n", ch->ch_c_oflag);  } @@ -586,23 +586,23 @@ static DEVICE_ATTR(oflag, S_IRUSR, dgnc_tty_oflag_show, NULL);  static ssize_t dgnc_tty_lflag_show(struct device *d, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	if (!d) -		return (0); -	un = (struct un_t *) dev_get_drvdata(d); +		return 0; +	un = dev_get_drvdata(d);  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return (0); +		return 0;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return (0); +		return 0;  	bd = ch->ch_bd;  	if (!bd || bd->magic != DGNC_BOARD_MAGIC) -		return (0); +		return 0;  	if (bd->state != BOARD_READY) -		return (0); +		return 0;  	return snprintf(buf, PAGE_SIZE, "%x\n", ch->ch_c_lflag);  } @@ -611,23 +611,23 @@ static DEVICE_ATTR(lflag, S_IRUSR, dgnc_tty_lflag_show, NULL);  static ssize_t dgnc_tty_digi_flag_show(struct device *d, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	if (!d) -		return (0); -	un = (struct un_t *) dev_get_drvdata(d); +		return 0; +	un = dev_get_drvdata(d);  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return (0); +		return 0;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return (0); +		return 0;  	bd = ch->ch_bd;  	if (!bd || bd->magic != DGNC_BOARD_MAGIC) -		return (0); +		return 0;  	if (bd->state != BOARD_READY) -		return (0); +		return 0;  	return snprintf(buf, PAGE_SIZE, "%x\n", ch->ch_digi.digi_flags);  } @@ -636,23 +636,23 @@ static DEVICE_ATTR(digi_flag, S_IRUSR, dgnc_tty_digi_flag_show, NULL);  static ssize_t dgnc_tty_rxcount_show(struct device *d, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	if (!d) -		return (0); -	un = (struct un_t *) dev_get_drvdata(d); +		return 0; +	un = dev_get_drvdata(d);  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return (0); +		return 0;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return (0); +		return 0;  	bd = ch->ch_bd;  	if (!bd || bd->magic != DGNC_BOARD_MAGIC) -		return (0); +		return 0;  	if (bd->state != BOARD_READY) -		return (0); +		return 0;  	return snprintf(buf, PAGE_SIZE, "%ld\n", ch->ch_rxcount);  } @@ -661,23 +661,23 @@ static DEVICE_ATTR(rxcount, S_IRUSR, dgnc_tty_rxcount_show, NULL);  static ssize_t dgnc_tty_txcount_show(struct device *d, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	if (!d) -		return (0); -	un = (struct un_t *) dev_get_drvdata(d); +		return 0; +	un = dev_get_drvdata(d);  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return (0); +		return 0;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return (0); +		return 0;  	bd = ch->ch_bd;  	if (!bd || bd->magic != DGNC_BOARD_MAGIC) -		return (0); +		return 0;  	if (bd->state != BOARD_READY) -		return (0); +		return 0;  	return snprintf(buf, PAGE_SIZE, "%ld\n", ch->ch_txcount);  } @@ -686,23 +686,23 @@ static DEVICE_ATTR(txcount, S_IRUSR, dgnc_tty_txcount_show, NULL);  static ssize_t dgnc_tty_name_show(struct device *d, struct device_attribute *attr, char *buf)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	if (!d) -		return (0); -	un = (struct un_t *) dev_get_drvdata(d); +		return 0; +	un = dev_get_drvdata(d);  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return (0); +		return 0;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return (0); +		return 0;  	bd = ch->ch_bd;  	if (!bd || bd->magic != DGNC_BOARD_MAGIC) -		return (0); +		return 0;  	if (bd->state != BOARD_READY) -		return (0); +		return 0;  	return snprintf(buf, PAGE_SIZE, "%sn%d%c\n",  		(un->un_type == DGNC_PRINT) ? "pr" : "tty", @@ -739,7 +739,7 @@ void dgnc_create_tty_sysfs(struct un_t *un, struct device *c)  	ret = sysfs_create_group(&c->kobj, &dgnc_tty_attribute_group);  	if (ret) { -		printk(KERN_ERR "dgnc: failed to create sysfs tty device attributes.\n"); +		dev_err(c, "dgnc: failed to create sysfs tty device attributes.\n");  		sysfs_remove_group(&c->kobj, &dgnc_tty_attribute_group);  		return;  	} diff --git a/drivers/staging/dgnc/dgnc_sysfs.h b/drivers/staging/dgnc/dgnc_sysfs.h index 4b87ce1cc7a..68c0de5898a 100644 --- a/drivers/staging/dgnc/dgnc_sysfs.h +++ b/drivers/staging/dgnc/dgnc_sysfs.h @@ -26,14 +26,14 @@  #include <linux/device.h> -struct board_t; +struct dgnc_board;  struct channel_t;  struct un_t;  struct pci_driver;  struct class_device; -extern void dgnc_create_ports_sysfiles(struct board_t *bd); -extern void dgnc_remove_ports_sysfiles(struct board_t *bd); +extern void dgnc_create_ports_sysfiles(struct dgnc_board *bd); +extern void dgnc_remove_ports_sysfiles(struct dgnc_board *bd);  extern void dgnc_create_driver_sysfiles(struct pci_driver *);  extern void dgnc_remove_driver_sysfiles(struct pci_driver *); diff --git a/drivers/staging/dgnc/dgnc_trace.c b/drivers/staging/dgnc/dgnc_trace.c index a98b7d4255c..2f62f2a4354 100644 --- a/drivers/staging/dgnc/dgnc_trace.c +++ b/drivers/staging/dgnc/dgnc_trace.c @@ -35,6 +35,7 @@  #include <linux/vmalloc.h>  #include "dgnc_driver.h" +#include "dgnc_trace.h"  #define TRC_TO_CONSOLE 1 @@ -63,16 +64,16 @@ void dgnc_tracef(const char *fmt, ...)  void dgnc_tracef(const char *fmt, ...)  { -	va_list	         ap; -	char  	         buf[TRC_MAXMSG+1]; -	size_t		 lenbuf; -	int		 i; -	static int	 failed = FALSE; +	va_list		ap; +	char		buf[TRC_MAXMSG+1]; +	size_t		lenbuf; +	int		i; +	static int	failed = FALSE;  # if defined(TRC_TO_KMEM)  	unsigned long	 flags;  #endif -	if(failed) +	if (failed)  		return;  # if defined(TRC_TO_KMEM)  	DGNC_LOCK(dgnc_tracef_lock, flags); @@ -86,7 +87,7 @@ void dgnc_tracef(const char *fmt, ...)  # if defined(TRC_TO_KMEM)  	{ -		static int	 initd=0; +		static int	 initd = 0;  		/*  		 * Now, in addition to (or instead of) printing this stuff out @@ -95,7 +96,7 @@ void dgnc_tracef(const char *fmt, ...)  		 */  		if (!initd) {  			dgnc_trcbuf = (char *) vmalloc(dgnc_trcbuf_size); -			if(!dgnc_trcbuf) { +			if (!dgnc_trcbuf) {  				failed = TRUE;  				printk("dgnc: tracing init failed!\n");  				return; @@ -179,6 +180,6 @@ void dgnc_tracef(const char *fmt, ...)   */  void dgnc_tracer_free(void)  { -	if(dgnc_trcbuf) +	if (dgnc_trcbuf)  		vfree(dgnc_trcbuf);  } diff --git a/drivers/staging/dgnc/dgnc_tty.c b/drivers/staging/dgnc/dgnc_tty.c index a7bb6bceb9e..4135cb0ed9f 100644 --- a/drivers/staging/dgnc/dgnc_tty.c +++ b/drivers/staging/dgnc/dgnc_tty.c @@ -38,7 +38,6 @@   */  #include <linux/kernel.h> -#include <linux/version.h>  #include <linux/sched.h>	/* For jiffies, task states */  #include <linux/interrupt.h>	/* For tasklet and interrupt structs/defines */  #include <linux/module.h> @@ -60,16 +59,14 @@  #include "dpacompat.h"  #include "dgnc_sysfs.h" -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)  #define init_MUTEX(sem)	 sema_init(sem, 1)  #define DECLARE_MUTEX(name)     \  	struct semaphore name = __SEMAPHORE_INITIALIZER(name, 1) -#endif  /*   * internal variables   */ -static struct board_t	*dgnc_BoardsByMajor[256]; +static struct dgnc_board	*dgnc_BoardsByMajor[256];  static uchar		*dgnc_TmpWriteBuf = NULL;  static DECLARE_MUTEX(dgnc_TmpWriteSem); @@ -126,13 +123,8 @@ static void dgnc_tty_flush_buffer(struct tty_struct *tty);  static void dgnc_tty_hangup(struct tty_struct *tty);  static int dgnc_set_modem_info(struct tty_struct *tty, unsigned int command, unsigned int __user *value);  static int dgnc_get_modem_info(struct channel_t *ch, unsigned int __user *value); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)  static int dgnc_tty_tiocmget(struct tty_struct *tty);  static int dgnc_tty_tiocmset(struct tty_struct *tty, unsigned int set, unsigned int clear); -#else -static int dgnc_tty_tiocmget(struct tty_struct *tty, struct file *file); -static int dgnc_tty_tiocmset(struct tty_struct *tty, struct file *file, unsigned int set, unsigned int clear); -#endif  static int dgnc_tty_send_break(struct tty_struct *tty, int msec);  static void dgnc_tty_wait_until_sent(struct tty_struct *tty, int timeout);  static int dgnc_tty_write(struct tty_struct *tty, const unsigned char *buf, int count); @@ -190,10 +182,10 @@ int dgnc_tty_preinit(void)  	if (!dgnc_TmpWriteBuf) {  		DPR_INIT(("unable to allocate tmp write buf")); -		return (-ENOMEM); +		return -ENOMEM;  	} -	return(0); +	return 0;  } @@ -202,14 +194,14 @@ int dgnc_tty_preinit(void)   *   * Init the tty subsystem for this board.   */ -int dgnc_tty_register(struct board_t *brd) +int dgnc_tty_register(struct dgnc_board *brd)  {  	int rc = 0;  	DPR_INIT(("tty_register start\n")); -	memset(&brd->SerialDriver, 0, sizeof(struct tty_driver)); -	memset(&brd->PrintDriver, 0, sizeof(struct tty_driver)); +	memset(&brd->SerialDriver, 0, sizeof(brd->SerialDriver)); +	memset(&brd->PrintDriver, 0, sizeof(brd->PrintDriver));  	brd->SerialDriver.magic = TTY_DRIVER_MAGIC; @@ -230,25 +222,15 @@ int dgnc_tty_register(struct board_t *brd)  	 * The kernel wants space to store pointers to  	 * tty_struct's and termios's.  	 */ -	brd->SerialDriver.ttys = kzalloc(brd->maxports * sizeof(struct tty_struct *), GFP_KERNEL); +	brd->SerialDriver.ttys = kzalloc(brd->maxports * sizeof(*brd->SerialDriver.ttys), GFP_KERNEL);  	if (!brd->SerialDriver.ttys) -		return(-ENOMEM); +		return -ENOMEM; -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) -	brd->SerialDriver.refcount = brd->TtyRefCnt; -#else  	kref_init(&brd->SerialDriver.kref); -#endif - -	brd->SerialDriver.termios = kzalloc(brd->maxports * sizeof(struct ktermios *), GFP_KERNEL); +	brd->SerialDriver.termios = kzalloc(brd->maxports * sizeof(*brd->SerialDriver.termios), GFP_KERNEL);  	if (!brd->SerialDriver.termios) -		return(-ENOMEM); +		return -ENOMEM; -#if LINUX_VERSION_CODE < KERNEL_VERSION(3,0,0) -	brd->SerialDriver.termios_locked = kzalloc(brd->maxports * sizeof(struct ktermios *), GFP_KERNEL); -	if (!brd->SerialDriver.termios_locked) -		return(-ENOMEM); -#endif  	/*  	 * Entry points for driver.  Called by the kernel from  	 * tty_io.c and n_tty.c. @@ -260,14 +242,14 @@ int dgnc_tty_register(struct board_t *brd)  		rc = tty_register_driver(&brd->SerialDriver);  		if (rc < 0) {  			APR(("Can't register tty device (%d)\n", rc)); -			return(rc); +			return rc;  		}  		brd->dgnc_Major_Serial_Registered = TRUE;  	}  	/*  	 * If we're doing transparent print, we have to do all of the above -	 * again, seperately so we don't get the LD confused about what major +	 * again, separately so we don't get the LD confused about what major  	 * we are when we get into the dgnc_tty_open() routine.  	 */  	brd->PrintDriver.magic = TTY_DRIVER_MAGIC; @@ -286,28 +268,16 @@ int dgnc_tty_register(struct board_t *brd)  	/*  	 * The kernel wants space to store pointers to -	 * tty_struct's and termios's.  Must be seperate from +	 * tty_struct's and termios's.  Must be separated from  	 * the Serial Driver so we don't get confused  	 */ -	brd->PrintDriver.ttys = kzalloc(brd->maxports * sizeof(struct tty_struct *), GFP_KERNEL); +	brd->PrintDriver.ttys = kzalloc(brd->maxports * sizeof(*brd->PrintDriver.ttys), GFP_KERNEL);  	if (!brd->PrintDriver.ttys) -		return(-ENOMEM); - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) -	brd->PrintDriver.refcount = brd->TtyRefCnt; -#else +		return -ENOMEM;  	kref_init(&brd->PrintDriver.kref); -#endif - -	brd->PrintDriver.termios = kzalloc(brd->maxports * sizeof(struct ktermios *), GFP_KERNEL); +	brd->PrintDriver.termios = kzalloc(brd->maxports * sizeof(*brd->PrintDriver.termios), GFP_KERNEL);  	if (!brd->PrintDriver.termios) -		return(-ENOMEM); - -#if LINUX_VERSION_CODE < KERNEL_VERSION(3,0,0) -	brd->PrintDriver.termios_locked = kzalloc(brd->maxports * sizeof(struct ktermios *), GFP_KERNEL); -	if (!brd->PrintDriver.termios_locked) -		return(-ENOMEM); -#endif +		return -ENOMEM;  	/*  	 * Entry points for driver.  Called by the kernel from @@ -320,7 +290,7 @@ int dgnc_tty_register(struct board_t *brd)  		rc = tty_register_driver(&brd->PrintDriver);  		if (rc < 0) {  			APR(("Can't register Transparent Print device (%d)\n", rc)); -			return(rc); +			return rc;  		}  		brd->dgnc_Major_TransparentPrint_Registered = TRUE;  	} @@ -331,7 +301,7 @@ int dgnc_tty_register(struct board_t *brd)  	DPR_INIT(("DGNC REGISTER TTY: MAJOR: %d\n", brd->SerialDriver.major)); -	return (rc); +	return rc;  } @@ -341,14 +311,14 @@ int dgnc_tty_register(struct board_t *brd)   * Init the tty subsystem.  Called once per board after board has been   * downloaded and init'ed.   */ -int dgnc_tty_init(struct board_t *brd) +int dgnc_tty_init(struct dgnc_board *brd)  {  	int i;  	void __iomem *vaddr;  	struct channel_t *ch;  	if (!brd) -		return (-ENXIO); +		return -ENXIO;  	DPR_INIT(("dgnc_tty_init start\n")); @@ -371,7 +341,7 @@ int dgnc_tty_init(struct board_t *brd)  			 * Okay to malloc with GFP_KERNEL, we are not at  			 * interrupt context, and there are no locks held.  			 */ -			brd->channels[i] = kzalloc(sizeof(struct channel_t), GFP_KERNEL); +			brd->channels[i] = kzalloc(sizeof(*brd->channels[i]), GFP_KERNEL);  			if (!brd->channels[i]) {  				DPR_CORE(("%s:%d Unable to allocate memory for channel struct\n",  				    __FILE__, __LINE__)); @@ -436,7 +406,7 @@ int dgnc_tty_init(struct board_t *brd)  	DPR_INIT(("dgnc_tty_init finish\n")); -	return (0); +	return 0;  } @@ -460,7 +430,7 @@ void dgnc_tty_post_uninit(void)   * Uninitialize the TTY portion of this driver.  Free all memory and   * resources.   */ -void dgnc_tty_uninit(struct board_t *brd) +void dgnc_tty_uninit(struct dgnc_board *brd)  {  	int i = 0; @@ -550,7 +520,7 @@ void dgnc_sniff_nowait_nolock(struct channel_t *ch, uchar *text, uchar *buf, int  		/*  		 *  Loop while data remains.  		 */ -		while (nbuf > 0 && ch->ch_sniff_buf != 0) { +		while (nbuf > 0 && ch->ch_sniff_buf) {  			/*  			 *  Determine the amount of available space left in the  			 *  buffer.  If there's none, wait until some appears. @@ -563,9 +533,8 @@ void dgnc_sniff_nowait_nolock(struct channel_t *ch, uchar *text, uchar *buf, int  			 * We *cannot* sleep here waiting for space, because this  			 * function was probably called by the interrupt/timer routines!  			 */ -			if (n == 0) { +			if (n == 0)  				return; -			}  			/*  			 * Copy as much data as will fit. @@ -671,7 +640,7 @@ static void dgnc_wmove(struct channel_t *ch, char *buf, uint n)   *=======================================================================*/  void dgnc_input(struct channel_t *ch)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct tty_struct *tp;  	struct tty_ldisc *ld;  	uint	rmask; @@ -691,7 +660,7 @@ void dgnc_input(struct channel_t *ch)  	tp = ch->ch_tun.un_tty;  	bd = ch->ch_bd; -	if(!bd || bd->magic != DGNC_BOARD_MAGIC) +	if (!bd || bd->magic != DGNC_BOARD_MAGIC)  		return;  	DGNC_LOCK(ch->ch_lock, lock_flags); @@ -833,8 +802,7 @@ void dgnc_input(struct channel_t *ch)  				else  					tty_insert_flip_char(tp->port, *(ch->ch_rqueue + tail + i), TTY_NORMAL);  			} -		} -		else { +		} else {  			tty_insert_flip_string(tp->port, ch->ch_rqueue + tail, s);  		} @@ -867,7 +835,7 @@ void dgnc_input(struct channel_t *ch)   ************************************************************************/  void dgnc_carrier(struct channel_t *ch)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	int virt_carrier = 0;  	int phys_carrier = 0; @@ -887,14 +855,11 @@ void dgnc_carrier(struct channel_t *ch)  		phys_carrier = 1;  	} -	if (ch->ch_digi.digi_flags & DIGI_FORCEDCD) { +	if (ch->ch_digi.digi_flags & DIGI_FORCEDCD)  		virt_carrier = 1; -	} -	if (ch->ch_c_cflag & CLOCAL) { +	if (ch->ch_c_cflag & CLOCAL)  		virt_carrier = 1; -	} -  	DPR_CARR(("DCD: physical: %d virt: %d\n", phys_carrier, virt_carrier)); @@ -994,8 +959,10 @@ static void dgnc_set_custom_speed(struct channel_t *ch, uint newrate)  	int deltahigh;  	int deltalow; -	if (newrate < 0) -		newrate = 0; +	if (newrate <= 0) { +		ch->ch_custom_speed = 0; +		return; +	}  	/*  	 *  Since the divisor is stored in a 16-bit integer, we make sure @@ -1008,7 +975,7 @@ static void dgnc_set_custom_speed(struct channel_t *ch, uint newrate)  	if (newrate && newrate > ch->ch_bd->bd_dividend)  		newrate = ch->ch_bd->bd_dividend; -	while (newrate > 0) { +	if (newrate > 0) {  		testdiv = ch->ch_bd->bd_dividend / newrate;  		/* @@ -1025,28 +992,22 @@ static void dgnc_set_custom_speed(struct channel_t *ch, uint newrate)  		 *  If the rate for the requested divisor is correct, just  		 *  use it and be done.  		 */ -		if (testrate_high == newrate ) -			break; - -		/* -		 *  Otherwise, pick the rate that is closer (i.e. whichever rate -		 *  has a smaller delta). -		 */ -		deltahigh = testrate_high - newrate; -		deltalow = newrate - testrate_low; +		if (testrate_high != newrate) { +			/* +			 *  Otherwise, pick the rate that is closer (i.e. whichever rate +			 *  has a smaller delta). +			 */ +			deltahigh = testrate_high - newrate; +			deltalow = newrate - testrate_low; -		if (deltahigh < deltalow) { -			newrate = testrate_high; -		} else { -			newrate = testrate_low; +			if (deltahigh < deltalow) +				newrate = testrate_high; +			else +				newrate = testrate_low;  		} - -		break;  	}  	ch->ch_custom_speed = newrate; - -	return;  } @@ -1055,7 +1016,8 @@ void dgnc_check_queue_flow_control(struct channel_t *ch)  	int qleft = 0;  	/* Store how much space we have left in the queue */ -	if ((qleft = ch->ch_r_tail - ch->ch_r_head - 1) < 0) +	qleft = ch->ch_r_tail - ch->ch_r_head - 1; +	if (qleft < 0)  		qleft += RQUEUEMASK + 1;  	/* @@ -1076,7 +1038,7 @@ void dgnc_check_queue_flow_control(struct channel_t *ch)  	if (qleft < 256) {  		/* HWFLOW */  		if (ch->ch_digi.digi_flags & CTSPACE || ch->ch_c_cflag & CRTSCTS) { -			if(!(ch->ch_flags & CH_RECEIVER_OFF)) { +			if (!(ch->ch_flags & CH_RECEIVER_OFF)) {  				ch->ch_bd->bd_ops->disable_receiver(ch);  				ch->ch_flags |= (CH_RECEIVER_OFF);  				DPR_READ(("Internal queue hit hilevel mark (%d)! Turning off interrupts.\n", @@ -1149,7 +1111,8 @@ void dgnc_wakeup_writes(struct channel_t *ch)  	/*  	 * If channel now has space, wake up anyone waiting on the condition.  	 */ -	if ((qlen = ch->ch_w_head - ch->ch_w_tail) < 0) +	qlen = ch->ch_w_head - ch->ch_w_tail; +	if (qlen < 0)  		qlen += WQUEUESIZE;  	if (qlen >= (WQUEUESIZE - 256)) { @@ -1158,7 +1121,6 @@ void dgnc_wakeup_writes(struct channel_t *ch)  	}  	if (ch->ch_tun.un_flags & UN_ISOPEN) { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)  		if ((ch->ch_tun.un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) &&  			ch->ch_tun.un_tty->ldisc->ops->write_wakeup)  		{ @@ -1166,15 +1128,6 @@ void dgnc_wakeup_writes(struct channel_t *ch)  			(ch->ch_tun.un_tty->ldisc->ops->write_wakeup)(ch->ch_tun.un_tty);  			DGNC_LOCK(ch->ch_lock, lock_flags);  		} -#else -		if ((ch->ch_tun.un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && -			ch->ch_tun.un_tty->ldisc.ops->write_wakeup) -		{ -			DGNC_UNLOCK(ch->ch_lock, lock_flags); -			(ch->ch_tun.un_tty->ldisc.ops->write_wakeup)(ch->ch_tun.un_tty); -			DGNC_LOCK(ch->ch_lock, lock_flags); -		} -#endif  		wake_up_interruptible(&ch->ch_tun.un_tty->write_wait); @@ -1210,7 +1163,6 @@ void dgnc_wakeup_writes(struct channel_t *ch)  	}  	if (ch->ch_pun.un_flags & UN_ISOPEN) { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)  		if ((ch->ch_pun.un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) &&  			ch->ch_pun.un_tty->ldisc->ops->write_wakeup)  		{ @@ -1218,15 +1170,6 @@ void dgnc_wakeup_writes(struct channel_t *ch)  			(ch->ch_pun.un_tty->ldisc->ops->write_wakeup)(ch->ch_pun.un_tty);  			DGNC_LOCK(ch->ch_lock, lock_flags);  		} -#else -		if ((ch->ch_pun.un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && -			ch->ch_pun.un_tty->ldisc.ops->write_wakeup) -		{ -			DGNC_UNLOCK(ch->ch_lock, lock_flags); -			(ch->ch_pun.un_tty->ldisc.ops->write_wakeup)(ch->ch_pun.un_tty); -			DGNC_LOCK(ch->ch_lock, lock_flags); -		} -#endif  		wake_up_interruptible(&ch->ch_pun.un_tty->write_wait); @@ -1260,7 +1203,7 @@ void dgnc_wakeup_writes(struct channel_t *ch)   */  static int dgnc_tty_open(struct tty_struct *tty, struct file *file)  { -	struct board_t	*brd; +	struct dgnc_board	*brd;  	struct channel_t *ch;  	struct un_t	*un;  	uint		major = 0; @@ -1273,15 +1216,13 @@ static int dgnc_tty_open(struct tty_struct *tty, struct file *file)  	major = MAJOR(tty_devnum(tty));  	minor = MINOR(tty_devnum(tty)); -	if (major > 255) { +	if (major > 255)  		return -ENXIO; -	}  	/* Get board pointer from our array of majors we have allocated */  	brd = dgnc_BoardsByMajor[major]; -	if (!brd) { +	if (!brd)  		return -ENXIO; -	}  	/*  	 * If board is not yet up to a state of READY, go to @@ -1290,9 +1231,8 @@ static int dgnc_tty_open(struct tty_struct *tty, struct file *file)  	rc = wait_event_interruptible(brd->state_wait,  		(brd->state & BOARD_READY)); -	if (rc) { +	if (rc)  		return rc; -	}  	DGNC_LOCK(brd->bd_lock, lock_flags); @@ -1318,12 +1258,10 @@ static int dgnc_tty_open(struct tty_struct *tty, struct file *file)  	if (!IS_PRINT(minor)) {  		un = &brd->channels[PORT_NUM(minor)]->ch_tun;  		un->un_type = DGNC_SERIAL; -	} -	else if (IS_PRINT(minor)) { +	} else if (IS_PRINT(minor)) {  		un = &brd->channels[PORT_NUM(minor)]->ch_pun;  		un->un_type = DGNC_PRINT; -	} -	else { +	} else {  		DGNC_UNLOCK(ch->ch_lock, lock_flags);  		DPR_OPEN(("%d Unknown TYPE!\n", __LINE__));  		return -ENXIO; @@ -1460,10 +1398,9 @@ static int dgnc_tty_open(struct tty_struct *tty, struct file *file)  	rc = dgnc_block_til_ready(tty, file, ch); -	if (rc) { +	if (rc)  		DPR_OPEN(("dgnc_tty_open returning after dgnc_block_til_ready "  			"with %d\n", rc)); -	}  	/* No going back now, increment our unit and channel counters */  	DGNC_LOCK(ch->ch_lock, lock_flags); @@ -1473,7 +1410,7 @@ static int dgnc_tty_open(struct tty_struct *tty, struct file *file)  	DGNC_UNLOCK(ch->ch_lock, lock_flags);  	DPR_OPEN(("dgnc_tty_open finished\n")); -	return (rc); +	return rc;  } @@ -1491,13 +1428,12 @@ static int dgnc_block_til_ready(struct tty_struct *tty, struct file *file, struc  	int	sleep_on_un_flags = 0;  	if (!tty || tty->magic != TTY_MAGIC || !file || !ch || ch->magic != DGNC_CHANNEL_MAGIC) { -		return (-ENXIO); +		return -ENXIO;  	}  	un = tty->driver_data; -	if (!un || un->magic != DGNC_UNIT_MAGIC) { -		return (-ENXIO); -	} +	if (!un || un->magic != DGNC_UNIT_MAGIC) +		return -ENXIO;  	DPR_OPEN(("dgnc_block_til_ready - before block.\n")); @@ -1540,9 +1476,8 @@ static int dgnc_block_til_ready(struct tty_struct *tty, struct file *file, struc  			 * 3) DCD (fake or real) is active.  			 */ -			if (file->f_flags & O_NONBLOCK) { +			if (file->f_flags & O_NONBLOCK)  				break; -			}  			if (tty->flags & (1 << TTY_IO_ERROR)) {  				retval = -EIO; @@ -1558,8 +1493,7 @@ static int dgnc_block_til_ready(struct tty_struct *tty, struct file *file, struc  				DPR_OPEN(("%d: ch_flags: %x\n", __LINE__, ch->ch_flags));  				break;  			} -		} -		else { +		} else {  			sleep_on_un_flags = 1;  		} @@ -1598,14 +1532,12 @@ static int dgnc_block_til_ready(struct tty_struct *tty, struct file *file, struc  		/*  		 * Wait for something in the flags to change from the current value.  		 */ -		if (sleep_on_un_flags) { +		if (sleep_on_un_flags)  			retval = wait_event_interruptible(un->un_flags_wait,  				(old_flags != (ch->ch_tun.un_flags | ch->ch_pun.un_flags))); -		} -		else { +		else  			retval = wait_event_interruptible(ch->ch_flags_wait,  				(old_flags != ch->ch_flags)); -		}  		DPR_OPEN(("After sleep... retval: %x\n", retval)); @@ -1624,12 +1556,12 @@ static int dgnc_block_til_ready(struct tty_struct *tty, struct file *file, struc  	if (retval) {  		DPR_OPEN(("dgnc_block_til_ready - done. error. retval: %x\n", retval)); -		return(retval); +		return retval;  	}  	DPR_OPEN(("dgnc_block_til_ready - done no error. jiffies: %lu\n", jiffies)); -	return(0); +	return 0;  } @@ -1667,7 +1599,7 @@ static void dgnc_tty_hangup(struct tty_struct *tty)  static void dgnc_tty_close(struct tty_struct *tty, struct file *file)  {  	struct ktermios *ts; -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	ulong lock_flags; @@ -1744,7 +1676,7 @@ static void dgnc_tty_close(struct tty_struct *tty, struct file *file)  		/*  		 * turn off print device when closing print device.  		 */ -		if ((un->un_type == DGNC_PRINT) && (ch->ch_flags & CH_PRON) ) { +		if ((un->un_type == DGNC_PRINT) && (ch->ch_flags & CH_PRON)) {  			dgnc_wmove(ch, ch->ch_digi.digi_offstr,  				(int) ch->ch_digi.digi_offlen);  			ch->ch_flags &= ~CH_PRON; @@ -1759,9 +1691,8 @@ static void dgnc_tty_close(struct tty_struct *tty, struct file *file)  		DPR_CLOSE(("After calling wait_for_drain\n")); -		if (rc) { +		if (rc)  			DPR_BASIC(("dgnc_tty_close - bad return: %d ", rc)); -		}  		dgnc_tty_flush_buffer(tty);  		tty_ldisc_flush(tty); @@ -1799,12 +1730,11 @@ static void dgnc_tty_close(struct tty_struct *tty, struct file *file)  		/* Turn off UART interrupts for this port */  		ch->ch_bd->bd_ops->uart_off(ch); -	} -	else { +	} else {  		/*  		 * turn off print device when closing print device.  		 */ -		if ((un->un_type == DGNC_PRINT) && (ch->ch_flags & CH_PRON) ) { +		if ((un->un_type == DGNC_PRINT) && (ch->ch_flags & CH_PRON)) {  			dgnc_wmove(ch, ch->ch_digi.digi_offstr,  				(int) ch->ch_digi.digi_offlen);  			ch->ch_flags &= ~CH_PRON; @@ -1843,15 +1773,15 @@ static int dgnc_tty_chars_in_buffer(struct tty_struct *tty)  	ulong   lock_flags = 0;  	if (tty == NULL) -		return(0); +		return 0;  	un = tty->driver_data;  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return (0); +		return 0;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return (0); +		return 0;  	DGNC_LOCK(ch->ch_lock, lock_flags); @@ -1873,7 +1803,7 @@ static int dgnc_tty_chars_in_buffer(struct tty_struct *tty)  	DPR_WRITE(("dgnc_tty_chars_in_buffer. Port: %x - %d (head: %d tail: %d)\n",  		ch->ch_portnum, chars, thead, ttail)); -	return(chars); +	return chars;  } @@ -1891,24 +1821,24 @@ static int dgnc_maxcps_room(struct tty_struct *tty, int bytes_available)  	struct un_t *un = NULL;  	if (!tty) -		return (bytes_available); +		return bytes_available;  	un = tty->driver_data;  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return (bytes_available); +		return bytes_available;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return (bytes_available); +		return bytes_available;  	/*  	 * If its not the Transparent print device, return  	 * the full data amount.  	 */  	if (un->un_type != DGNC_PRINT) -		return (bytes_available); +		return bytes_available; -	if (ch->ch_digi.digi_maxcps > 0 && ch->ch_digi.digi_bufsize > 0 ) { +	if (ch->ch_digi.digi_maxcps > 0 && ch->ch_digi.digi_bufsize > 0) {  		int cps_limit = 0;  		unsigned long current_time = jiffies;  		unsigned long buffer_time = current_time + @@ -1918,12 +1848,10 @@ static int dgnc_maxcps_room(struct tty_struct *tty, int bytes_available)  			/* buffer is empty */  			ch->ch_cpstime = current_time;	    /* reset ch_cpstime */  			cps_limit = ch->ch_digi.digi_bufsize; -		} -		else if (ch->ch_cpstime < buffer_time) { +		} else if (ch->ch_cpstime < buffer_time) {  			/* still room in the buffer */  			cps_limit = ((buffer_time - ch->ch_cpstime) * ch->ch_digi.digi_maxcps) / HZ; -		} -		else { +		} else {  			/* no room in the buffer */  			cps_limit = 0;  		} @@ -1931,7 +1859,7 @@ static int dgnc_maxcps_room(struct tty_struct *tty, int bytes_available)  		bytes_available = min(cps_limit, bytes_available);  	} -	return (bytes_available); +	return bytes_available;  } @@ -1951,15 +1879,15 @@ static int dgnc_tty_write_room(struct tty_struct *tty)  	ulong   lock_flags = 0;  	if (tty == NULL || dgnc_TmpWriteBuf == NULL) -		return(0); +		return 0;  	un = tty->driver_data;  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return (0); +		return 0;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return (0); +		return 0;  	DGNC_LOCK(ch->ch_lock, lock_flags); @@ -1967,7 +1895,8 @@ static int dgnc_tty_write_room(struct tty_struct *tty)  	head = (ch->ch_w_head) & tmask;  	tail = (ch->ch_w_tail) & tmask; -	if ((ret = tail - head - 1) < 0) +	ret = tail - head - 1; +	if (ret < 0)  		ret += WQUEUESIZE;  	/* Limit printer to maxcps */ @@ -1981,8 +1910,7 @@ static int dgnc_tty_write_room(struct tty_struct *tty)  		if (!(ch->ch_flags & CH_PRON))  			ret -= ch->ch_digi.digi_onlen;  		ret -= ch->ch_digi.digi_offlen; -	} -	else { +	} else {  		if (ch->ch_flags & CH_PRON)  			ret -= ch->ch_digi.digi_offlen;  	} @@ -1994,7 +1922,7 @@ static int dgnc_tty_write_room(struct tty_struct *tty)  	DPR_WRITE(("dgnc_tty_write_room - %d tail: %d head: %d\n", ret, tail, head)); -	return(ret); +	return ret;  } @@ -2037,18 +1965,18 @@ static int dgnc_tty_write(struct tty_struct *tty,  	int from_user = 0;  	if (tty == NULL || dgnc_TmpWriteBuf == NULL) -		return(0); +		return 0;  	un = tty->driver_data;  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return(0); +		return 0;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return(0); +		return 0;  	if (!count) -		return(0); +		return 0;  	DPR_WRITE(("dgnc_tty_write: Port: %x tty=%p user=%d len=%d\n",  		ch->ch_portnum, tty, from_user, count)); @@ -2067,7 +1995,8 @@ static int dgnc_tty_write(struct tty_struct *tty,  	head = (ch->ch_w_head) & tmask;  	tail = (ch->ch_w_tail) & tmask; -	if ((bufcount = tail - head - 1) < 0) +	bufcount = tail - head - 1; +	if (bufcount < 0)  		bufcount += WQUEUESIZE;  	DPR_WRITE(("%d: bufcount: %x count: %x tail: %x head: %x tmask: %x\n", @@ -2090,7 +2019,7 @@ static int dgnc_tty_write(struct tty_struct *tty,  	 */  	if (count <= 0) {  		DGNC_UNLOCK(ch->ch_lock, lock_flags); -		return(0); +		return 0;  	}  	/* @@ -2120,7 +2049,7 @@ static int dgnc_tty_write(struct tty_struct *tty,  	 */  	if (count <= 0) {  		DGNC_UNLOCK(ch->ch_lock, lock_flags); -		return(0); +		return 0;  	}  	if (from_user) { @@ -2135,9 +2064,8 @@ static int dgnc_tty_write(struct tty_struct *tty,  		 * the board.  		 */  		/* we're allowed to block if it's from_user */ -		if (down_interruptible(&dgnc_TmpWriteSem)) { -			return (-EINTR); -		} +		if (down_interruptible(&dgnc_TmpWriteSem)) +			return -EINTR;  		/*  		 * copy_from_user() returns the number @@ -2147,7 +2075,7 @@ static int dgnc_tty_write(struct tty_struct *tty,  		if (!count) {  			up(&dgnc_TmpWriteSem); -			return(-EFAULT); +			return -EFAULT;  		}  		DGNC_LOCK(ch->ch_lock, lock_flags); @@ -2229,18 +2157,15 @@ static int dgnc_tty_write(struct tty_struct *tty,  		ch->ch_bd->bd_ops->copy_data_from_queue_to_uart(ch);  	} -	return (count); +	return count;  }  /*   * Return modem signals to ld.   */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39) +  static int dgnc_tty_tiocmget(struct tty_struct *tty) -#else -static int dgnc_tty_tiocmget(struct tty_struct *tty, struct file *file) -#endif  {  	struct channel_t *ch;  	struct un_t *un; @@ -2293,15 +2218,11 @@ static int dgnc_tty_tiocmget(struct tty_struct *tty, struct file *file)   *   * Set modem signals, called by ld.   */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39) +  static int dgnc_tty_tiocmset(struct tty_struct *tty,  		unsigned int set, unsigned int clear) -#else -static int dgnc_tty_tiocmset(struct tty_struct *tty, struct file *file, -		unsigned int set, unsigned int clear) -#endif  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	int ret = -EIO; @@ -2327,21 +2248,17 @@ static int dgnc_tty_tiocmset(struct tty_struct *tty, struct file *file,  	DGNC_LOCK(ch->ch_lock, lock_flags); -	if (set & TIOCM_RTS) { +	if (set & TIOCM_RTS)  		ch->ch_mostat |= UART_MCR_RTS; -	} -	if (set & TIOCM_DTR) { +	if (set & TIOCM_DTR)  		ch->ch_mostat |= UART_MCR_DTR; -	} -	if (clear & TIOCM_RTS) { +	if (clear & TIOCM_RTS)  		ch->ch_mostat &= ~(UART_MCR_RTS); -	} -	if (clear & TIOCM_DTR) { +	if (clear & TIOCM_DTR)  		ch->ch_mostat &= ~(UART_MCR_DTR); -	}  	ch->ch_bd->bd_ops->assert_modem_signals(ch); @@ -2349,7 +2266,7 @@ static int dgnc_tty_tiocmset(struct tty_struct *tty, struct file *file,  	DPR_IOCTL(("dgnc_tty_tiocmset finish\n")); -	return (0); +	return 0;  } @@ -2360,7 +2277,7 @@ static int dgnc_tty_tiocmset(struct tty_struct *tty, struct file *file,   */  static int dgnc_tty_send_break(struct tty_struct *tty, int msec)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	int ret = -EIO; @@ -2402,7 +2319,7 @@ static int dgnc_tty_send_break(struct tty_struct *tty, int msec)  	DPR_IOCTL(("dgnc_tty_send_break finish\n")); -	return (0); +	return 0;  } @@ -2414,7 +2331,7 @@ static int dgnc_tty_send_break(struct tty_struct *tty, int msec)   */  static void dgnc_tty_wait_until_sent(struct tty_struct *tty, int timeout)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	int rc; @@ -2450,7 +2367,7 @@ static void dgnc_tty_wait_until_sent(struct tty_struct *tty, int timeout)   */  static void dgnc_tty_send_xchar(struct tty_struct *tty, char c)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	ulong   lock_flags; @@ -2497,7 +2414,7 @@ static inline int dgnc_get_mstat(struct channel_t *ch)  	DPR_IOCTL(("dgnc_getmstat start\n"));  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return(-ENXIO); +		return -ENXIO;  	DGNC_LOCK(ch->ch_lock, lock_flags); @@ -2522,7 +2439,7 @@ static inline int dgnc_get_mstat(struct channel_t *ch)  	DPR_IOCTL(("dgnc_getmstat finish\n")); -	return(result); +	return result;  } @@ -2538,17 +2455,17 @@ static int dgnc_get_modem_info(struct channel_t *ch, unsigned int  __user *value  	DPR_IOCTL(("dgnc_get_modem_info start\n"));  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return(-ENXIO); +		return -ENXIO;  	result = dgnc_get_mstat(ch);  	if (result < 0) -		return (-ENXIO); +		return -ENXIO;  	rc = put_user(result, value);  	DPR_IOCTL(("dgnc_get_modem_info finish\n")); -	return(rc); +	return rc;  } @@ -2559,7 +2476,7 @@ static int dgnc_get_modem_info(struct channel_t *ch, unsigned int  __user *value   */  static int dgnc_set_modem_info(struct tty_struct *tty, unsigned int command, unsigned int __user *value)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	int ret = -ENXIO; @@ -2587,51 +2504,43 @@ static int dgnc_set_modem_info(struct tty_struct *tty, unsigned int command, uns  	ret = get_user(arg, value);  	if (ret) -		return(ret); +		return ret;  	switch (command) {  	case TIOCMBIS: -		if (arg & TIOCM_RTS) { +		if (arg & TIOCM_RTS)  			ch->ch_mostat |= UART_MCR_RTS; -		} -		if (arg & TIOCM_DTR) { +		if (arg & TIOCM_DTR)  			ch->ch_mostat |= UART_MCR_DTR; -		}  		break;  	case TIOCMBIC: -		if (arg & TIOCM_RTS) { +		if (arg & TIOCM_RTS)  			ch->ch_mostat &= ~(UART_MCR_RTS); -		} -		if (arg & TIOCM_DTR) { +		if (arg & TIOCM_DTR)  			ch->ch_mostat &= ~(UART_MCR_DTR); -		}  		break;  	case TIOCMSET: -		if (arg & TIOCM_RTS) { +		if (arg & TIOCM_RTS)  			ch->ch_mostat |= UART_MCR_RTS; -		} -		else { +		else  			ch->ch_mostat &= ~(UART_MCR_RTS); -		} -		if (arg & TIOCM_DTR) { +		if (arg & TIOCM_DTR)  			ch->ch_mostat |= UART_MCR_DTR; -		} -		else { +		else  			ch->ch_mostat &= ~(UART_MCR_DTR); -		}  		break;  	default: -		return(-EINVAL); +		return -EINVAL;  	}  	DGNC_LOCK(ch->ch_lock, lock_flags); @@ -2642,7 +2551,7 @@ static int dgnc_set_modem_info(struct tty_struct *tty, unsigned int command, uns  	DPR_IOCTL(("dgnc_set_modem_info finish\n")); -	return (0); +	return 0;  } @@ -2662,18 +2571,18 @@ static int dgnc_tty_digigeta(struct tty_struct *tty, struct digi_t __user *retin  	ulong   lock_flags;  	if (!retinfo) -		return (-EFAULT); +		return -EFAULT;  	if (!tty || tty->magic != TTY_MAGIC) -		return (-EFAULT); +		return -EFAULT;  	un = tty->driver_data;  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return (-EFAULT); +		return -EFAULT;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return (-EFAULT); +		return -EFAULT;  	memset(&tmp, 0, sizeof(tmp)); @@ -2682,9 +2591,9 @@ static int dgnc_tty_digigeta(struct tty_struct *tty, struct digi_t __user *retin  	DGNC_UNLOCK(ch->ch_lock, lock_flags);  	if (copy_to_user(retinfo, &tmp, sizeof(*retinfo))) -		return (-EFAULT); +		return -EFAULT; -	return (0); +	return 0;  } @@ -2698,7 +2607,7 @@ static int dgnc_tty_digigeta(struct tty_struct *tty, struct digi_t __user *retin   */  static int dgnc_tty_digiseta(struct tty_struct *tty, struct digi_t __user *new_info)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	struct digi_t new_digi; @@ -2707,23 +2616,23 @@ static int dgnc_tty_digiseta(struct tty_struct *tty, struct digi_t __user *new_i  	DPR_IOCTL(("DIGI_SETA start\n"));  	if (!tty || tty->magic != TTY_MAGIC) -		return (-EFAULT); +		return -EFAULT;  	un = tty->driver_data;  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return (-EFAULT); +		return -EFAULT;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return (-EFAULT); +		return -EFAULT;  	bd = ch->ch_bd;  	if (!bd || bd->magic != DGNC_BOARD_MAGIC) -		return (-EFAULT); +		return -EFAULT; -	if (copy_from_user(&new_digi, new_info, sizeof(struct digi_t))) { +	if (copy_from_user(&new_digi, new_info, sizeof(new_digi))) {  		DPR_IOCTL(("DIGI_SETA failed copy_from_user\n")); -		return(-EFAULT); +		return -EFAULT;  	}  	DGNC_LOCK(ch->ch_lock, lock_flags); @@ -2744,7 +2653,7 @@ static int dgnc_tty_digiseta(struct tty_struct *tty, struct digi_t __user *new_i  	if ((ch->ch_digi.digi_flags & DIGI_DTR_TOGGLE) && !(new_digi.digi_flags & DIGI_DTR_TOGGLE))  		ch->ch_mostat |= (UART_MCR_DTR); -	memcpy(&ch->ch_digi, &new_digi, sizeof(struct digi_t)); +	memcpy(&ch->ch_digi, &new_digi, sizeof(new_digi));  	if (ch->ch_digi.digi_maxcps < 1)  		ch->ch_digi.digi_maxcps = 1; @@ -2773,7 +2682,7 @@ static int dgnc_tty_digiseta(struct tty_struct *tty, struct digi_t __user *new_i  	DPR_IOCTL(("DIGI_SETA finish\n")); -	return(0); +	return 0;  } @@ -2782,7 +2691,7 @@ static int dgnc_tty_digiseta(struct tty_struct *tty, struct digi_t __user *new_i   */  static void dgnc_tty_set_termios(struct tty_struct *tty, struct ktermios *old_termios)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	unsigned long lock_flags; @@ -2878,7 +2787,7 @@ static void dgnc_tty_unthrottle(struct tty_struct *tty)  static void dgnc_tty_start(struct tty_struct *tty)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	ulong lock_flags; @@ -2912,7 +2821,7 @@ static void dgnc_tty_start(struct tty_struct *tty)  static void dgnc_tty_stop(struct tty_struct *tty)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	ulong lock_flags; @@ -2959,7 +2868,7 @@ static void dgnc_tty_stop(struct tty_struct *tty)   */  static void dgnc_tty_flush_chars(struct tty_struct *tty)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	ulong lock_flags; @@ -3056,7 +2965,7 @@ static void dgnc_tty_flush_buffer(struct tty_struct *tty)  static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  		unsigned long arg)  { -	struct board_t *bd; +	struct dgnc_board *bd;  	struct channel_t *ch;  	struct un_t *un;  	int rc; @@ -3064,19 +2973,19 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  	void __user *uarg = (void __user *) arg;  	if (!tty || tty->magic != TTY_MAGIC) -		return (-ENODEV); +		return -ENODEV;  	un = tty->driver_data;  	if (!un || un->magic != DGNC_UNIT_MAGIC) -		return (-ENODEV); +		return -ENODEV;  	ch = un->un_ch;  	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC) -		return (-ENODEV); +		return -ENODEV;  	bd = ch->ch_bd;  	if (!bd || bd->magic != DGNC_BOARD_MAGIC) -		return (-ENODEV); +		return -ENODEV;  	DPR_IOCTL(("dgnc_tty_ioctl start on port %d - cmd %s (%x), arg %lx\n",  		ch->ch_portnum, dgnc_ioctl_name(cmd), cmd, arg)); @@ -3086,7 +2995,7 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  	if (un->un_open_count <= 0) {  		DPR_BASIC(("dgnc_tty_ioctl - unit not open.\n"));  		DGNC_UNLOCK(ch->ch_lock, lock_flags); -		return(-EIO); +		return -EIO;  	}  	switch (cmd) { @@ -3104,20 +3013,19 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  		 */  		rc = tty_check_change(tty);  		DGNC_UNLOCK(ch->ch_lock, lock_flags); -		if (rc) { -			return(rc); -		} +		if (rc) +			return rc;  		rc = ch->ch_bd->bd_ops->drain(tty, 0);  		if (rc) {  			DPR_IOCTL(("dgnc_tty_ioctl - bad return: %d ", rc)); -			return(-EINTR); +			return -EINTR;  		}  		DGNC_LOCK(ch->ch_lock, lock_flags); -		if(((cmd == TCSBRK) && (!arg)) || (cmd == TCSBRKP)) { +		if (((cmd == TCSBRK) && (!arg)) || (cmd == TCSBRKP)) {  			ch->ch_bd->bd_ops->send_break(ch, 250);  		} @@ -3126,7 +3034,7 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  		DPR_IOCTL(("dgnc_tty_ioctl finish on port %d - cmd %s (%x), arg %lx\n",  			ch->ch_portnum, dgnc_ioctl_name(cmd), cmd, arg)); -		return(0); +		return 0;  	case TCSBRKP: @@ -3137,14 +3045,13 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  		 */  		rc = tty_check_change(tty);  		DGNC_UNLOCK(ch->ch_lock, lock_flags); -		if (rc) { -			return(rc); -		} +		if (rc) +			return rc;  		rc = ch->ch_bd->bd_ops->drain(tty, 0);  		if (rc) {  			DPR_IOCTL(("dgnc_tty_ioctl - bad return: %d ", rc)); -			return(-EINTR); +			return -EINTR;  		}  		DGNC_LOCK(ch->ch_lock, lock_flags); @@ -3156,19 +3063,18 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  		DPR_IOCTL(("dgnc_tty_ioctl finish on port %d - cmd %s (%x), arg %lx\n",  			ch->ch_portnum, dgnc_ioctl_name(cmd), cmd, arg)); -		return(0); +		return 0;  	case TIOCSBRK:  		rc = tty_check_change(tty);  		DGNC_UNLOCK(ch->ch_lock, lock_flags); -		if (rc) { -			return(rc); -		} +		if (rc) +			return rc;  		rc = ch->ch_bd->bd_ops->drain(tty, 0);  		if (rc) {  			DPR_IOCTL(("dgnc_tty_ioctl - bad return: %d ", rc)); -			return(-EINTR); +			return -EINTR;  		}  		DGNC_LOCK(ch->ch_lock, lock_flags); @@ -3180,7 +3086,7 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  		DPR_IOCTL(("dgnc_tty_ioctl finish on port %d - cmd %s (%x), arg %lx\n",  			ch->ch_portnum, dgnc_ioctl_name(cmd), cmd, arg)); -		return(0); +		return 0;  	case TIOCCBRK:  		/* Do Nothing */ @@ -3192,31 +3098,31 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  		DGNC_UNLOCK(ch->ch_lock, lock_flags);  		rc = put_user(C_CLOCAL(tty) ? 1 : 0, (unsigned long __user *) arg); -		return(rc); +		return rc;  	case TIOCSSOFTCAR:  		DGNC_UNLOCK(ch->ch_lock, lock_flags);  		rc = get_user(arg, (unsigned long __user *) arg);  		if (rc) -			return(rc); +			return rc;  		DGNC_LOCK(ch->ch_lock, lock_flags);  		tty->termios.c_cflag = ((tty->termios.c_cflag & ~CLOCAL) | (arg ? CLOCAL : 0));  		ch->ch_bd->bd_ops->param(tty);  		DGNC_UNLOCK(ch->ch_lock, lock_flags); -		return(0); +		return 0;  	case TIOCMGET:  		DGNC_UNLOCK(ch->ch_lock, lock_flags); -		return(dgnc_get_modem_info(ch, uarg)); +		return dgnc_get_modem_info(ch, uarg);  	case TIOCMBIS:  	case TIOCMBIC:  	case TIOCMSET:  		DGNC_UNLOCK(ch->ch_lock, lock_flags); -		return(dgnc_set_modem_info(tty, cmd, uarg)); +		return dgnc_set_modem_info(tty, cmd, uarg);  		/*  		 * Here are any additional ioctl's that we want to implement @@ -3235,7 +3141,7 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  		rc = tty_check_change(tty);  		if (rc) {  			DGNC_UNLOCK(ch->ch_lock, lock_flags); -			return(rc); +			return rc;  		}  		if ((arg == TCIFLUSH) || (arg == TCIOFLUSH)) { @@ -3265,7 +3171,7 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  		/* pretend we didn't recognize this IOCTL */  		DGNC_UNLOCK(ch->ch_lock, lock_flags); -		return(-ENOIOCTLCMD); +		return -ENOIOCTLCMD;  	case TCSETSF:  	case TCSETSW:  		/* @@ -3291,14 +3197,14 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  		rc = ch->ch_bd->bd_ops->drain(tty, 0);  		if (rc) {  			DPR_IOCTL(("dgnc_tty_ioctl - bad return: %d\n", rc)); -			return(-EINTR); +			return -EINTR;  		}  		DPR_IOCTL(("dgnc_tty_ioctl finish on port %d - cmd %s (%x), arg %lx\n",  			ch->ch_portnum, dgnc_ioctl_name(cmd), cmd, arg));  		/* pretend we didn't recognize this */ -		return(-ENOIOCTLCMD); +		return -ENOIOCTLCMD;  	case TCSETAW: @@ -3306,21 +3212,21 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  		rc = ch->ch_bd->bd_ops->drain(tty, 0);  		if (rc) {  			DPR_IOCTL(("dgnc_tty_ioctl - bad return: %d ", rc)); -			return(-EINTR); +			return -EINTR;  		}  		/* pretend we didn't recognize this */ -		return(-ENOIOCTLCMD); +		return -ENOIOCTLCMD;  	case TCXONC:  		DGNC_UNLOCK(ch->ch_lock, lock_flags);  		/* Make the ld do it */ -		return(-ENOIOCTLCMD); +		return -ENOIOCTLCMD;  	case DIGI_GETA:  		/* get information for ditty */  		DGNC_UNLOCK(ch->ch_lock, lock_flags); -		return(dgnc_tty_digigeta(tty, uarg)); +		return dgnc_tty_digigeta(tty, uarg);  	case DIGI_SETAW:  	case DIGI_SETAF: @@ -3332,18 +3238,17 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  			rc = ch->ch_bd->bd_ops->drain(tty, 0);  			if (rc) {  				DPR_IOCTL(("dgnc_tty_ioctl - bad return: %d ", rc)); -				return(-EINTR); +				return -EINTR;  			}  			DGNC_LOCK(ch->ch_lock, lock_flags); -		} -		else { +		} else {  			tty_ldisc_flush(tty);  		}  		/* fall thru */  	case DIGI_SETA:  		DGNC_UNLOCK(ch->ch_lock, lock_flags); -		return(dgnc_tty_digiseta(tty, uarg)); +		return dgnc_tty_digiseta(tty, uarg);  	case DIGI_LOOPBACK:  		{ @@ -3352,7 +3257,7 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  			DGNC_UNLOCK(ch->ch_lock, lock_flags);  			rc = get_user(loopback, (unsigned int __user *) arg);  			if (rc) -				return(rc); +				return rc;  			DGNC_LOCK(ch->ch_lock, lock_flags);  			/* Enable/disable internal loopback for this port */ @@ -3363,27 +3268,27 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  			ch->ch_bd->bd_ops->param(tty);  			DGNC_UNLOCK(ch->ch_lock, lock_flags); -			return(0); +			return 0;  		}  	case DIGI_GETCUSTOMBAUD:  		DGNC_UNLOCK(ch->ch_lock, lock_flags);  		rc = put_user(ch->ch_custom_speed, (unsigned int __user *) arg); -		return(rc); +		return rc;  	case DIGI_SETCUSTOMBAUD:  	{ -		uint new_rate; +		int new_rate;  		/* Let go of locks when accessing user space, could sleep */  		DGNC_UNLOCK(ch->ch_lock, lock_flags); -		rc = get_user(new_rate, (unsigned int __user *) arg); +		rc = get_user(new_rate, (int __user *) arg);  		if (rc) -			return(rc); +			return rc;  		DGNC_LOCK(ch->ch_lock, lock_flags);  		dgnc_set_custom_speed(ch, new_rate);  		ch->ch_bd->bd_ops->param(tty);  		DGNC_UNLOCK(ch->ch_lock, lock_flags); -		return(0); +		return 0;  	}  	/* @@ -3399,11 +3304,11 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  		DGNC_UNLOCK(ch->ch_lock, lock_flags);  		rc = get_user(c, (unsigned char __user *) arg);  		if (rc) -			return(rc); +			return rc;  		DGNC_LOCK(ch->ch_lock, lock_flags);  		ch->ch_bd->bd_ops->send_immediate_char(ch, c);  		DGNC_UNLOCK(ch->ch_lock, lock_flags); -		return(0); +		return 0;  	}  	/* @@ -3426,10 +3331,10 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  		DGNC_UNLOCK(ch->ch_lock, lock_flags); -		if (copy_to_user(uarg, &buf, sizeof(struct digi_getcounter))) { -			return (-EFAULT); -		} -		return(0); +		if (copy_to_user(uarg, &buf, sizeof(buf))) +			return -EFAULT; + +		return 0;  	}  	/* @@ -3445,16 +3350,16 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  		/* NOTE: MORE EVENTS NEEDS TO BE ADDED HERE */  		if (ch->ch_flags & CH_BREAK_SENDING)  			events |= EV_TXB; -		if ((ch->ch_flags & CH_STOP) || (ch->ch_flags & CH_FORCED_STOP)) { +		if ((ch->ch_flags & CH_STOP) || (ch->ch_flags & CH_FORCED_STOP))  			events |= (EV_OPU | EV_OPS); -		} +  		if ((ch->ch_flags & CH_STOPI) || (ch->ch_flags & CH_FORCED_STOPI)) {  			events |= (EV_IPU | EV_IPS);  		}  		DGNC_UNLOCK(ch->ch_lock, lock_flags);  		rc = put_user(events, (unsigned int __user *) arg); -		return(rc); +		return rc;  	}  	/* @@ -3474,9 +3379,8 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  		/*  		 * Get data from user first.  		 */ -		if (copy_from_user(&buf, uarg, sizeof(struct digi_getbuffer))) { -			return (-EFAULT); -		} +		if (copy_from_user(&buf, uarg, sizeof(buf))) +			return -EFAULT;  		DGNC_LOCK(ch->ch_lock, lock_flags); @@ -3505,25 +3409,23 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  		 * insert more characters into our queue for OPOST processing  		 * that the RealPort Server doesn't know about.  		 */ -		if (buf.txbuf > tdist) { +		if (buf.txbuf > tdist)  			buf.txbuf = tdist; -		}  		/*  		 * Report whether our queue and UART TX are completely empty.  		 */ -		if (count) { +		if (count)  			buf.txdone = 0; -		} else { +		else  			buf.txdone = 1; -		}  		DGNC_UNLOCK(ch->ch_lock, lock_flags); -		if (copy_to_user(uarg, &buf, sizeof(struct digi_getbuffer))) { -			return (-EFAULT); -		} -		return(0); +		if (copy_to_user(uarg, &buf, sizeof(buf))) +			return -EFAULT; + +		return 0;  	}  	default:  		DGNC_UNLOCK(ch->ch_lock, lock_flags); @@ -3532,7 +3434,7 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  		DPR_IOCTL(("dgnc_tty_ioctl end - cmd %s (%x), arg %lx\n",  			dgnc_ioctl_name(cmd), cmd, arg)); -		return(-ENOIOCTLCMD); +		return -ENOIOCTLCMD;  	}  	DGNC_UNLOCK(ch->ch_lock, lock_flags); @@ -3540,5 +3442,5 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,  	DPR_IOCTL(("dgnc_tty_ioctl end - cmd %s (%x), arg %lx\n",  		dgnc_ioctl_name(cmd), cmd, arg)); -	return(0); +	return 0;  } diff --git a/drivers/staging/dgnc/dgnc_tty.h b/drivers/staging/dgnc/dgnc_tty.h index deb388d2f4c..9d1c2847bd9 100644 --- a/drivers/staging/dgnc/dgnc_tty.h +++ b/drivers/staging/dgnc/dgnc_tty.h @@ -24,13 +24,13 @@  #include "dgnc_driver.h" -int	dgnc_tty_register(struct board_t *brd); +int	dgnc_tty_register(struct dgnc_board *brd);  int	dgnc_tty_preinit(void); -int     dgnc_tty_init(struct board_t *); +int     dgnc_tty_init(struct dgnc_board *);  void	dgnc_tty_post_uninit(void); -void	dgnc_tty_uninit(struct board_t *); +void	dgnc_tty_uninit(struct dgnc_board *);  void	dgnc_input(struct channel_t *ch);  void	dgnc_carrier(struct channel_t *ch); diff --git a/drivers/staging/dgnc/digi.h b/drivers/staging/dgnc/digi.h index eb6e3712572..6a9adf6591e 100644 --- a/drivers/staging/dgnc/digi.h +++ b/drivers/staging/dgnc/digi.h @@ -201,9 +201,9 @@ struct shrink_buf_struct {  	unsigned int	shrink_buf_vaddr;	/* Virtual address of board */  	unsigned int	shrink_buf_phys;	/* Physical address of board */  	unsigned int	shrink_buf_bseg;	/* Amount of board memory */ -	unsigned int	shrink_buf_hseg;	/* '186 Begining of Dual-Port */ +	unsigned int	shrink_buf_hseg;	/* '186 Beginning of Dual-Port */ -	unsigned int	shrink_buf_lseg;	/* '186 Begining of freed memory */ +	unsigned int	shrink_buf_lseg;	/* '186 Beginning of freed memory */  	unsigned int	shrink_buf_mseg;	/* Linear address from start of  						   dual-port were freed memory  						   begins, host viewpoint. */  | 
