patch-2.4.22 linux-2.4.22/arch/ppc/8260_io/uart.c
Next file: linux-2.4.22/arch/ppc/8xx_io/enet.c
Previous file: linux-2.4.22/arch/ppc/8260_io/fcc_enet.c
Back to the patch index
Back to the overall index
- Lines: 544
- Date:
2003-08-25 04:44:40.000000000 -0700
- Orig file:
linux-2.4.21/arch/ppc/8260_io/uart.c
- Orig date:
2003-06-13 07:51:31.000000000 -0700
diff -urN linux-2.4.21/arch/ppc/8260_io/uart.c linux-2.4.22/arch/ppc/8260_io/uart.c
@@ -83,7 +83,7 @@
#undef SERIAL_DEBUG_RS_WAIT_UNTIL_SENT
#define _INLINE_ inline
-
+
#define DBG_CNT(s)
/* We overload some of the items in the data structure to meet our
@@ -233,7 +233,7 @@
if (serial_paranoia_check(info, tty->device, "rs_stop"))
return;
-
+
save_flags(flags); cli();
if ((idx = info->state->smc_scc_num) < SCC_NUM_BASE) {
smcp = &immr->im_smc[idx];
@@ -256,7 +256,7 @@
if (serial_paranoia_check(info, tty->device, "rs_stop"))
return;
-
+
save_flags(flags); cli();
if ((idx = info->state->smc_scc_num) < SCC_NUM_BASE) {
smcp = &immr->im_smc[idx];
@@ -281,7 +281,7 @@
* rs_interrupt() should try to keep the interrupt handler as fast as
* possible. After you are done making modifications, it is not a bad
* idea to do:
- *
+ *
* gcc -S -DKERNEL -Wall -Wstrict-prototypes -O6 -fomit-frame-pointer serial.c
*
* and look at the resulting assemble code in serial.s.
@@ -390,7 +390,7 @@
}
*/
status &= info->read_status_mask;
-
+
if (status & (BD_SC_BR)) {
#ifdef SERIAL_DEBUG_INTR
printk("handling break....");
@@ -444,7 +444,7 @@
static _INLINE_ void transmit_chars(ser_info_t *info)
{
-
+
if (info->flags & TX_WAKEUP) {
rs_sched_event(info, RS_EVENT_WRITE_WAKEUP);
}
@@ -461,7 +461,7 @@
{
int status;
struct async_icount *icount;
-
+
status = serial_in(info, UART_MSR);
if (status & UART_MSR_ANY_DELTA) {
@@ -488,7 +488,7 @@
#if (defined(SERIAL_DEBUG_OPEN) || defined(SERIAL_DEBUG_INTR))
printk("ttys%d CD now %s...", info->line,
(status & UART_MSR_DCD) ? "on" : "off");
-#endif
+#endif
if (status & UART_MSR_DCD)
wake_up_interruptible(&info->open_wait);
else if (!((info->flags & ASYNC_CALLOUT_ACTIVE) &&
@@ -537,7 +537,7 @@
ser_info_t *info;
volatile smc_t *smcp;
volatile scc_t *sccp;
-
+
info = (ser_info_t *)dev_id;
if ((idx = info->state->smc_scc_num) < SCC_NUM_BASE) {
@@ -558,7 +558,7 @@
transmit_chars(info);
sccp->scc_scce = events;
}
-
+
#ifdef SERIAL_DEBUG_INTR
printk("rs_interrupt_single(%d, %x)...",
info->state->smc_scc_num, events);
@@ -597,7 +597,7 @@
{
ser_info_t *info = (ser_info_t *) private_;
struct tty_struct *tty;
-
+
tty = info->tty;
if (!tty)
return;
@@ -617,13 +617,13 @@
*
* serial interrupt routine -> (scheduler tqueue) ->
* do_serial_hangup() -> tty->hangup() -> rs_hangup()
- *
+ *
*/
static void do_serial_hangup(void *private_)
{
struct async_struct *info = (struct async_struct *) private_;
struct tty_struct *tty;
-
+
tty = info->tty;
if (tty)
tty_hangup(tty);
@@ -672,7 +672,7 @@
if (info->tty->termios->c_cflag & CBAUD)
info->MCR = UART_MCR_DTR | UART_MCR_RTS;
#endif
-
+
if (info->tty)
clear_bit(TTY_IO_ERROR, &info->tty->flags);
@@ -680,7 +680,7 @@
* and set the speed of the serial port
*/
change_speed(info);
-
+
if ((idx = info->state->smc_scc_num) < SCC_NUM_BASE) {
smcp = &immr->im_smc[idx];
@@ -725,7 +725,7 @@
info->flags |= ASYNC_INITIALIZED;
restore_flags(flags);
return 0;
-
+
errout:
restore_flags(flags);
return retval;
@@ -752,7 +752,7 @@
printk("Shutting down serial port %d (irq %d)....", info->line,
state->irq);
#endif
-
+
save_flags(flags); cli(); /* Disable interrupts */
if ((idx = info->state->smc_scc_num) < SCC_NUM_BASE) {
@@ -774,7 +774,7 @@
sccp->scc_sccm &= ~(UART_SCCM_TX | UART_SCCM_RX);
sccp->scc_gsmrl &= ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT);
}
-
+
if (info->tty)
set_bit(TTY_IO_ERROR, &info->tty->flags);
@@ -872,7 +872,7 @@
info->read_status_mask |= BD_SC_FR | BD_SC_PR;
if (I_BRKINT(info->tty) || I_PARMRK(info->tty))
info->read_status_mask |= BD_SC_BR;
-
+
/*
* Characters to ignore
*/
@@ -882,7 +882,7 @@
if (I_IGNBRK(info->tty)) {
info->ignore_status_mask |= BD_SC_BR;
/*
- * If we're ignore parity and break indicators, ignore
+ * If we're ignore parity and break indicators, ignore
* overruns too. (For real raw support).
*/
if (I_IGNPAR(info->tty))
@@ -907,9 +907,9 @@
* enables, because we want to put them back if they were
* present.
*/
- prev_mode = smcp->smc_smcmr;
- smcp->smc_smcmr = smcr_mk_clen(bits) | cval | SMCMR_SM_UART;
- smcp->smc_smcmr |= (prev_mode & (SMCMR_REN | SMCMR_TEN));
+ prev_mode = smcp->smc_smcmr & (SMCMR_REN | SMCMR_TEN);
+ smcp->smc_smcmr = smcr_mk_clen(bits) | cval | SMCMR_SM_UART
+ | prev_mode;
}
else {
sccp = &immr->im_scc[idx - SCC_IDX_BASE];
@@ -960,7 +960,7 @@
if (serial_paranoia_check(info, tty->device, "rs_write"))
return 0;
- if (!tty)
+ if (!tty)
return 0;
bdp = info->tx_cur;
@@ -1028,7 +1028,7 @@
static int rs_8xx_chars_in_buffer(struct tty_struct *tty)
{
ser_info_t *info = (ser_info_t *)tty->driver_data;
-
+
if (serial_paranoia_check(info, tty->device, "rs_chars_in_buffer"))
return 0;
return 0;
@@ -1037,7 +1037,7 @@
static void rs_8xx_flush_buffer(struct tty_struct *tty)
{
ser_info_t *info = (ser_info_t *)tty->driver_data;
-
+
if (serial_paranoia_check(info, tty->device, "rs_flush_buffer"))
return;
@@ -1084,7 +1084,7 @@
/*
* ------------------------------------------------------------
* rs_throttle()
- *
+ *
* This routine is called by the upper-layer tty layer to signal that
* incoming characters should be throttled.
* ------------------------------------------------------------
@@ -1094,14 +1094,14 @@
ser_info_t *info = (ser_info_t *)tty->driver_data;
#ifdef SERIAL_DEBUG_THROTTLE
char buf[64];
-
+
printk("throttle %s: %d....\n", _tty_name(tty, buf),
tty->ldisc.chars_in_buffer(tty));
#endif
if (serial_paranoia_check(info, tty->device, "rs_throttle"))
return;
-
+
if (I_IXOFF(tty))
rs_8xx_send_xchar(tty, STOP_CHAR(tty));
@@ -1120,14 +1120,14 @@
ser_info_t *info = (ser_info_t *)tty->driver_data;
#ifdef SERIAL_DEBUG_THROTTLE
char buf[64];
-
+
printk("unthrottle %s: %d....\n", _tty_name(tty, buf),
tty->ldisc.chars_in_buffer(tty));
#endif
if (serial_paranoia_check(info, tty->device, "rs_unthrottle"))
return;
-
+
if (I_IXOFF(tty)) {
if (info->x_char)
info->x_char = 0;
@@ -1158,7 +1158,7 @@
* release the bus after transmitting. This must be done when
* the transmit shift register is empty, not be done when the
* transmit holding register is empty. This functionality
- * allows an RS485 driver to be written in user space.
+ * allows an RS485 driver to be written in user space.
*/
static int get_lsr_info(struct async_struct * info, unsigned int *value)
{
@@ -1208,7 +1208,7 @@
return error;
#ifdef modem_control
switch (cmd) {
- case TIOCMBIS:
+ case TIOCMBIS:
if (arg & TIOCM_RTS)
info->MCR |= UART_MCR_RTS;
if (arg & TIOCM_DTR)
@@ -1383,7 +1383,7 @@
if (tty->flags & (1 << TTY_IO_ERROR))
return -EIO;
}
-
+
switch (cmd) {
case TCSBRK: /* SVID version: non-zero arg --> no break */
retval = tty_check_change(tty);
@@ -1462,7 +1462,7 @@
cli();
cnow = info->state->icount; /* atomic copy */
sti();
- if (cnow.rng == cprev.rng && cnow.dsr == cprev.dsr &&
+ if (cnow.rng == cprev.rng && cnow.dsr == cprev.dsr &&
cnow.dcd == cprev.dcd && cnow.cts == cprev.cts)
return -EIO; /* no change => error */
if ( ((arg & TIOCM_RNG) && (cnow.rng != cprev.rng)) ||
@@ -1478,7 +1478,7 @@
return 0;
#endif
- /*
+ /*
* Get counter of input serial line interrupts (DCD,RI,DSR,CTS)
* Return: write counters to the user passed counter struct
* NB: both 1->0 and 0->1 transitions are counted except for
@@ -1512,7 +1512,7 @@
ser_info_t *info = (ser_info_t *)tty->driver_data;
if ( (tty->termios->c_cflag == old_termios->c_cflag)
- && ( RELEVANT_IFLAG(tty->termios->c_iflag)
+ && ( RELEVANT_IFLAG(tty->termios->c_iflag)
== RELEVANT_IFLAG(old_termios->c_iflag)))
return;
@@ -1527,7 +1527,7 @@
serial_out(info, UART_MCR, info->MCR);
sti();
}
-
+
/* Handle transition away from B0 status */
if (!(old_termios->c_cflag & CBAUD) &&
(tty->termios->c_cflag & CBAUD)) {
@@ -1540,7 +1540,7 @@
serial_out(info, UART_MCR, info->MCR);
sti();
}
-
+
/* Handle turning off CRTSCTS */
if ((old_termios->c_cflag & CRTSCTS) &&
!(tty->termios->c_cflag & CRTSCTS)) {
@@ -1565,7 +1565,7 @@
/*
* ------------------------------------------------------------
* rs_close()
- *
+ *
* This routine is called when the serial port gets closed. First, we
* wait for the last remaining data to be sent. Then, we unlink its
* async structure from the interrupt chain if necessary, and we free
@@ -1585,16 +1585,16 @@
return;
state = info->state;
-
+
save_flags(flags); cli();
-
+
if (tty_hung_up_p(filp)) {
DBG_CNT("before DEC-hung");
MOD_DEC_USE_COUNT;
restore_flags(flags);
return;
}
-
+
#ifdef SERIAL_DEBUG_OPEN
printk("rs_close ttys%d, count = %d\n", info->line, state->count);
#endif
@@ -1631,7 +1631,7 @@
if (info->flags & ASYNC_CALLOUT_ACTIVE)
info->state->callout_termios = *tty->termios;
/*
- * Now we wait for the transmit buffer to clear; and we notify
+ * Now we wait for the transmit buffer to clear; and we notify
* the line discipline to only process XON/XOFF characters.
*/
tty->closing = 1;
@@ -1693,7 +1693,7 @@
unsigned long orig_jiffies, char_time;
/*int lsr;*/
volatile cbd_t *bdp;
-
+
if (serial_paranoia_check(info, tty->device, "rs_wait_until_sent"))
return;
@@ -1707,7 +1707,7 @@
* Set the check interval to be 1/5 of the estimated time to
* send a single character, and make it at least 1. The check
* interval should also be less than the timeout.
- *
+ *
* Note: we have to use pretty tight timings here to satisfy
* the NIST-PCTS.
*/
@@ -1750,12 +1750,12 @@
{
ser_info_t *info = (ser_info_t *)tty->driver_data;
struct serial_state *state = info->state;
-
+
if (serial_paranoia_check(info, tty->device, "rs_hangup"))
return;
state = info->state;
-
+
rs_8xx_flush_buffer(tty);
shutdown(info);
info->event = 0;
@@ -1816,7 +1816,7 @@
info->flags |= ASYNC_CALLOUT_ACTIVE;
return 0;
}
-
+
/*
* If non-blocking mode is set, or the port is not enabled,
* then make the check up front and then exit.
@@ -1839,7 +1839,7 @@
if (tty->termios->c_cflag & CLOCAL)
do_clocal = 1;
}
-
+
/*
* Block waiting for the carrier detect and the line to become
* free (i.e., not in use by the callout). While we are in
@@ -1855,7 +1855,7 @@
state->line, state->count);
#endif
cli();
- if (!tty_hung_up_p(filp))
+ if (!tty_hung_up_p(filp))
state->count--;
sti();
info->blocked_open++;
@@ -1874,7 +1874,7 @@
if (info->flags & ASYNC_HUP_NOTIFY)
retval = -EAGAIN;
else
- retval = -ERESTARTSYS;
+ retval = -ERESTARTSYS;
#else
retval = -EAGAIN;
#endif
@@ -1974,7 +1974,7 @@
(info->flags & ASYNC_SPLIT_TERMIOS)) {
if (tty->driver.subtype == SERIAL_TYPE_NORMAL)
*tty->termios = info->state->normal_termios;
- else
+ else
*tty->termios = info->state->callout_termios;
change_speed(info);
}
@@ -2027,7 +2027,7 @@
status = serial_in(info, UART_MSR);
control = info ? info->MCR : serial_in(info, UART_MCR);
sti();
-
+
stat_buf[0] = 0;
stat_buf[1] = 0;
if (control & UART_MCR_RTS)
@@ -2053,12 +2053,12 @@
if (state->icount.frame)
ret += sprintf(buf+ret, " fe:%d", state->icount.frame);
-
+
if (state->icount.parity)
ret += sprintf(buf+ret, " pe:%d", state->icount.parity);
-
+
if (state->icount.brk)
- ret += sprintf(buf+ret, " brk:%d", state->icount.brk);
+ ret += sprintf(buf+ret, " brk:%d", state->icount.brk);
if (state->icount.overrun)
ret += sprintf(buf+ret, " oe:%d", state->icount.overrun);
@@ -2177,7 +2177,7 @@
/* Send the character out. */
cp = __va(bdp->cbd_bufaddr);
*cp = *s;
-
+
bdp->cbd_datlen = 1;
bdp->cbd_sc |= BD_SC_READY;
@@ -2262,13 +2262,13 @@
volatile scc_uart_t *sup;
volatile immap_t *immap;
volatile iop8260_t *io;
-
+
init_bh(SERIAL_BH, do_serial_bh);
show_serial_version();
/* Initialize the tty_driver structure */
-
+
/*memset(&serial_driver, 0, sizeof(struct tty_driver));*/
__clear_user(&serial_driver,sizeof(struct tty_driver));
serial_driver.magic = TTY_DRIVER_MAGIC;
@@ -2309,7 +2309,7 @@
serial_driver.hangup = rs_8xx_hangup;
serial_driver.wait_until_sent = rs_8xx_wait_until_sent;
serial_driver.read_proc = rs_8xx_read_proc;
-
+
/*
* The callout device is just like normal device except for
* major number and the subtype code.
@@ -2329,7 +2329,7 @@
panic("Couldn't register serial driver\n");
if (tty_register_driver(&callout_driver))
panic("Couldn't register callout driver\n");
-
+
immap = immr;
cp = &immap->im_cpm;
io = &immap->im_ioport;
@@ -2390,7 +2390,7 @@
state->closing_wait = 30*HZ;
state->callout_termios = callout_driver.init_termios;
state->normal_termios = serial_driver.init_termios;
- state->icount.cts = state->icount.dsr =
+ state->icount.cts = state->icount.dsr =
state->icount.rng = state->icount.dcd = 0;
state->icount.rx = state->icount.tx = 0;
state->icount.frame = state->icount.parity = 0;
@@ -2577,7 +2577,7 @@
* Enable receive and transmit.
*/
scp->scc_gsmrh = 0;
- scp->scc_gsmrl =
+ scp->scc_gsmrl =
(SCC_GSMRL_MODE_UART | SCC_GSMRL_TDCR_16 | SCC_GSMRL_RDCR_16);
/* Disable all interrupts and clear all pending
@@ -2636,7 +2636,7 @@
ser = rs_table + co->index;
-
+
immap = immr;
cp = &immap->im_cpm;
io = &immap->im_ioport;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)