linux-cvs-patches
[Top] [All Lists]

CVS Update@linux-mips.org: linux

To: linux-cvs-patches@linux-mips.org
Subject: CVS Update@linux-mips.org: linux
From: macro@linux-mips.org
Date: Mon, 13 Jun 2005 20:58:58 +0100
Reply-to: linux-mips@linux-mips.org
Sender: linux-cvs-patches-bounce@linux-mips.org
CVSROOT:        /home/cvs
Module name:    linux
Changes by:     macro@ftp.linux-mips.org        05/06/13 20:58:52

Modified files:
        drivers/char   : Kconfig Makefile 
        drivers/tc     : zs.c zs.h 

Log message:
        Resurrect the deceased.  Not that it's meant to be sustained
        for long, but from time to time it's useful to have some
        console...

diff -urN linux/drivers/char/Kconfig linux/drivers/char/Kconfig
--- linux/drivers/char/Kconfig  2005/05/19 12:08:21     1.52
+++ linux/drivers/char/Kconfig  2005/06/13 19:58:50     1.53
@@ -355,6 +355,41 @@
        bool "Console on BCM1xxx DUART"
        depends on SIBYTE_SB1250_DUART
 
+config SERIAL_DEC
+       bool "DECstation serial support"
+       depends on MACH_DECSTATION
+       default y
+       help
+         This selects whether you want to be asked about drivers for
+         DECstation serial ports.
+
+         Note that the answer to this question won't directly affect the
+         kernel: saying N will just cause the configurator to skip all
+         the questions about DECstation serial ports.
+
+         If unsure, say Y.
+
+config SERIAL_DEC_CONSOLE
+       bool "Support for console on a DECstation serial port"
+       depends on SERIAL_DEC
+       default y
+       help
+         If you say Y here, it will be possible to use a serial port as the
+         system console (the system console is the device which receives all
+         kernel messages and warnings and which allows logins in single user
+         mode).  Note that the firmware uses ttyS0 as the serial console on
+         the Maxine and ttyS2 on the others.
+
+         If unsure, say Y.
+
+config ZS
+       bool "Z85C30 Serial Support"
+       depends on SERIAL_DEC
+       default y
+       help
+         Documentation on the Zilog 85C350 serial communications controller
+         is downloadable at <http://www.zilog.com/pdfs/serial/z85c30.pdf>.
+
 config QTRONIX_KEYBOARD
        bool "Enable Qtronix 990P Keyboard Support"
        depends on MIPS && (MIPS_ITE8172 || MIPS_IVR)
diff -urN linux/drivers/char/Makefile linux/drivers/char/Makefile
--- linux/drivers/char/Makefile 2005/05/19 12:08:21     1.137
+++ linux/drivers/char/Makefile 2005/06/13 19:58:50     1.138
@@ -49,6 +49,7 @@
 obj-$(CONFIG_VIOTAPE)          += viotape.o
 obj-$(CONFIG_HVCS)             += hvcs.o
 obj-$(CONFIG_SGI_MBCS)         += mbcs.o
+obj-$(CONFIG_SERIAL_DEC)       += decserial.o
 
 obj-$(CONFIG_PRINTER) += lp.o
 obj-$(CONFIG_TIPAR) += tipar.o
diff -urN linux/drivers/tc/zs.c linux/drivers/tc/zs.c
--- linux/drivers/tc/zs.c       2005/03/18 17:37:48     1.57
+++ linux/drivers/tc/zs.c       2005/06/13 19:58:52     1.58
@@ -6,7 +6,7 @@
  *
  * DECstation changes
  * Copyright (C) 1998-2000 Harald Koerfgen
- * Copyright (C) 2000, 2001, 2002, 2003, 2004  Maciej W. Rozycki
+ * Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005  Maciej W. Rozycki
  *
  * For the rest of the code the original Copyright applies:
  * Copyright (C) 1996 Paul Mackerras (Paul.Mackerras@cs.anu.edu.au)
@@ -55,6 +55,7 @@
 #include <linux/delay.h>
 #include <linux/init.h>
 #include <linux/ioport.h>
+#include <linux/spinlock.h>
 #ifdef CONFIG_SERIAL_DEC_CONSOLE
 #include <linux/console.h>
 #endif
@@ -63,7 +64,6 @@
 #include <asm/pgtable.h>
 #include <asm/irq.h>
 #include <asm/system.h>
-#include <asm/uaccess.h>
 #include <asm/bootinfo.h>
 #include <asm/dec/serial.h>
 
@@ -128,6 +128,8 @@
 
 #define BUS_PRESENT (DS_BUS_PRESENT)
 
+DEFINE_SPINLOCK(zs_lock);
+
 struct dec_zschannel zs_channels[NUM_CHANNELS];
 struct dec_serial zs_soft[NUM_CHANNELS];
 int zs_channels_found;
@@ -159,8 +161,6 @@
        0                               /* write 15 */
 };
 
-DECLARE_TASK_QUEUE(tq_zs_serial);
-
 static struct tty_driver *serial_driver;
 
 /* serial subtype definitions */
@@ -306,8 +306,7 @@
 {
         unsigned long flags;
 
-
-       save_flags(flags); cli();
+       spin_lock_irqsave(&zs_lock, flags);
        if (info->zs_channel != info->zs_chan_a) {
                if (set) {
                        info->zs_chan_a->curregs[5] |= (which & (RTS | DTR));
@@ -316,7 +315,7 @@
                }
                write_zsreg(info->zs_chan_a, 5, info->zs_chan_a->curregs[5]);
        }
-       restore_flags(flags);
+       spin_unlock_irqrestore(&zs_lock, flags);
 }
 
 /* Utility routines for the Zilog */
@@ -357,12 +356,10 @@
  * This routine is used by the interrupt handler to schedule
  * processing in the software interrupt portion of the driver.
  */
-static _INLINE_ void rs_sched_event(struct dec_serial *info,
-                                 int event)
+static _INLINE_ void rs_sched_event(struct dec_serial *info, int event)
 {
        info->event |= 1 << event;
-       queue_task(&info->tqueue, &tq_zs_serial);
-       mark_bh(SERIAL_BH);
+       tasklet_schedule(&info->tlet);
 }
 
 static _INLINE_ void receive_chars(struct dec_serial *info,
@@ -509,9 +506,10 @@
 /*
  * This is the serial driver's generic interrupt routine
  */
-void rs_interrupt(int irq, void *dev_id, struct pt_regs * regs)
+static irqreturn_t rs_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 {
        struct dec_serial *info = (struct dec_serial *) dev_id;
+       irqreturn_t status = IRQ_NONE;
        unsigned char zs_intreg;
        int shift;
 
@@ -533,6 +531,8 @@
                if ((zs_intreg & CHAN_IRQMASK) == 0)
                        break;
 
+               status = IRQ_HANDLED;
+
                if (zs_intreg & CHBRxIP) {
                        receive_chars(info, regs);
                }
@@ -546,6 +546,8 @@
 
        /* Why do we need this ? */
        write_zsreg(info->zs_channel, 0, RES_H_IUS);
+
+       return status;
 }
 
 #ifdef ZS_DEBUG_REGS
@@ -590,12 +592,12 @@
                return;
 
 #if 1
-       save_flags(flags); cli();
+       spin_lock_irqsave(&zs_lock, flags);
        if (info->zs_channel->curregs[5] & TxENAB) {
                info->zs_channel->curregs[5] &= ~TxENAB;
                write_zsreg(info->zs_channel, 5, info->zs_channel->curregs[5]);
        }
-       restore_flags(flags);
+       spin_unlock_irqrestore(&zs_lock, flags);
 #endif
 }
 
@@ -607,7 +609,7 @@
        if (serial_paranoia_check(info, tty->name, "rs_start"))
                return;
 
-       save_flags(flags); cli();
+       spin_lock_irqsave(&zs_lock, flags);
 #if 1
        if (info->xmit_cnt && info->xmit_buf && !(info->zs_channel->curregs[5] 
& TxENAB)) {
                info->zs_channel->curregs[5] |= TxENAB;
@@ -618,7 +620,7 @@
                transmit_chars(info);
        }
 #endif
-       restore_flags(flags);
+       spin_unlock_irqrestore(&zs_lock, flags);
 }
 
 /*
@@ -630,12 +632,8 @@
  * interrupt driver proper are done; the interrupt driver schedules
  * them using rs_sched_event(), and they get done here.
  */
-static void do_serial_bh(void)
-{
-       run_task_queue(&tq_zs_serial);
-}
 
-static void do_softint(void *private_)
+static void do_softint(unsigned long private_)
 {
        struct dec_serial       *info = (struct dec_serial *) private_;
        struct tty_struct       *tty;
@@ -646,10 +644,11 @@
 
        if (test_and_clear_bit(RS_EVENT_WRITE_WAKEUP, &info->event)) {
                tty_wakeup(tty);
+               wake_up_interruptible(&tty->write_wait);
        }
 }
 
-int zs_startup(struct dec_serial * info)
+static int zs_startup(struct dec_serial * info)
 {
        unsigned long flags;
 
@@ -662,7 +661,7 @@
                        return -ENOMEM;
        }
 
-       save_flags(flags); cli();
+       spin_lock_irqsave(&zs_lock, flags);
 
 #ifdef SERIAL_DEBUG_OPEN
        printk("starting up ttyS%d (irq %d)...", info->line, info->irq);
@@ -718,7 +717,7 @@
        info->xmit_cnt = info->xmit_head = info->xmit_tail = 0;
 
        info->flags |= ZILOG_INITIALIZED;
-       restore_flags(flags);
+       spin_unlock_irqrestore(&zs_lock, flags);
        return 0;
 }
 
@@ -738,7 +737,7 @@
               info->irq);
 #endif
 
-       save_flags(flags); cli(); /* Disable interrupts */
+       spin_lock_irqsave(&zs_lock, flags);
 
        if (info->xmit_buf) {
                free_page((unsigned long) info->xmit_buf);
@@ -761,7 +760,7 @@
                set_bit(TTY_IO_ERROR, &info->tty->flags);
 
        info->flags &= ~ZILOG_INITIALIZED;
-       restore_flags(flags);
+       spin_unlock_irqrestore(&zs_lock, flags);
 }
 
 /*
@@ -797,7 +796,7 @@
                        i += 15;
        }
 
-       save_flags(flags); cli();
+       spin_lock_irqsave(&zs_lock, flags);
        info->zs_baud = baud_table[i];
        if (info->zs_baud) {
                brg = BPS_TO_BRG(info->zs_baud, 
zs_parms->clock/info->clk_divisor);
@@ -870,7 +869,7 @@
        /* Load up the new values */
        load_zsregs(info->zs_channel, info->zs_channel->curregs);
 
-       restore_flags(flags);
+       spin_unlock_irqrestore(&zs_lock, flags);
 }
 
 static void rs_flush_chars(struct tty_struct *tty)
@@ -886,9 +885,9 @@
                return;
 
        /* Enable transmitter */
-       save_flags(flags); cli();
+       spin_lock_irqsave(&zs_lock, flags);
        transmit_chars(info);
-       restore_flags(flags);
+       spin_unlock_irqrestore(&zs_lock, flags);
 }
 
 static int rs_write(struct tty_struct * tty,
@@ -904,26 +903,17 @@
        if (!tty || !info->xmit_buf)
                return 0;
 
-       save_flags(flags);
        while (1) {
-               cli();
+               spin_lock_irqsave(&zs_lock, flags);
                c = min(count, min(SERIAL_XMIT_SIZE - info->xmit_cnt - 1,
                                   SERIAL_XMIT_SIZE - info->xmit_head));
                if (c <= 0)
                        break;
 
-               if (from_user) {
-                       down(&tmp_buf_sem);
-                       copy_from_user(tmp_buf, buf, c);
-                       c = min(c, min(SERIAL_XMIT_SIZE - info->xmit_cnt - 1,
-                                      SERIAL_XMIT_SIZE - info->xmit_head));
-                       memcpy(info->xmit_buf + info->xmit_head, tmp_buf, c);
-                       up(&tmp_buf_sem);
-               } else
-                       memcpy(info->xmit_buf + info->xmit_head, buf, c);
+               memcpy(info->xmit_buf + info->xmit_head, buf, c);
                info->xmit_head = (info->xmit_head + c) & (SERIAL_XMIT_SIZE-1);
                info->xmit_cnt += c;
-               restore_flags(flags);
+               spin_unlock_irqrestore(&zs_lock, flags);
                buf += c;
                count -= c;
                total += c;
@@ -932,7 +922,7 @@
        if (info->xmit_cnt && !tty->stopped && !info->tx_stopped
            && !info->tx_active)
                transmit_chars(info);
-       restore_flags(flags);
+       spin_unlock_irqrestore(&zs_lock, flags);
        return total;
 }
 
@@ -964,9 +954,9 @@
 
        if (serial_paranoia_check(info, tty->name, "rs_flush_buffer"))
                return;
-       cli();
+       spin_lock_irq(&zs_lock);
        info->xmit_cnt = info->xmit_head = info->xmit_tail = 0;
-       sti();
+       spin_unlock_irq(&zs_lock);
        tty_wakeup(tty);
 }
 
@@ -994,11 +984,11 @@
                return;
 
        if (I_IXOFF(tty)) {
-               save_flags(flags); cli();
+               spin_lock_irqsave(&zs_lock, flags);
                info->x_char = STOP_CHAR(tty);
                if (!info->tx_active)
                        transmit_chars(info);
-               restore_flags(flags);
+               spin_unlock_irqrestore(&zs_lock, flags);
        }
 
        if (C_CRTSCTS(tty)) {
@@ -1022,7 +1012,7 @@
                return;
 
        if (I_IXOFF(tty)) {
-               save_flags(flags); cli();
+               spin_lock_irqsave(&zs_lock, flags);
                if (info->x_char)
                        info->x_char = 0;
                else {
@@ -1030,7 +1020,7 @@
                        if (!info->tx_active)
                                transmit_chars(info);
                }
-               restore_flags(flags);
+               spin_unlock_irqrestore(&zs_lock, flags);
        }
 
        if (C_CRTSCTS(tty)) {
@@ -1123,9 +1113,9 @@
 {
        unsigned char status;
 
-       cli();
+       spin_lock(&zs_lock);
        status = read_zsreg(info->zs_channel, 0);
-       sti();
+       spin_unlock_irq(&zs_lock);
        put_user(status,value);
        return 0;
 }
@@ -1148,11 +1138,11 @@
        if (info->zs_channel == info->zs_chan_a)
                result = 0;
        else {
-               cli();
+               spin_lock(&zs_lock);
                control = info->zs_chan_a->curregs[5];
                status_a = read_zsreg(info->zs_chan_a, 0);
                status_b = read_zsreg(info->zs_channel, 0);
-               sti();
+               spin_unlock_irq(&zs_lock);
                result =  ((control  & RTS) ? TIOCM_RTS: 0)
                        | ((control  & DTR) ? TIOCM_DTR: 0)
                        | ((status_b & DCD) ? TIOCM_CAR: 0)
@@ -1167,8 +1157,6 @@
                        unsigned int set, unsigned int clear)
 {
        struct dec_serial * info = (struct dec_serial *)tty->driver_data;
-       int error;
-       unsigned int arg, bits;
 
        if (info->hook)
                return -ENODEV;
@@ -1182,8 +1170,7 @@
        if (info->zs_channel == info->zs_chan_a)
                return 0;
 
-       get_user(arg, value);
-       cli();
+       spin_lock(&zs_lock);
        if (set & TIOCM_RTS)
                info->zs_chan_a->curregs[5] |= RTS;
        if (set & TIOCM_DTR)
@@ -1193,7 +1180,7 @@
        if (clear & TIOCM_DTR)
                info->zs_chan_a->curregs[5] &= ~DTR;
        write_zsreg(info->zs_chan_a, 5, info->zs_chan_a->curregs[5]);
-       sti();
+       spin_unlock_irq(&zs_lock);
        return 0;
 }
 
@@ -1210,19 +1197,18 @@
        if (!info->port)
                return;
 
-       save_flags(flags); cli();
+       spin_lock_irqsave(&zs_lock, flags);
        if (break_state == -1)
                info->zs_channel->curregs[5] |= SND_BRK;
        else
                info->zs_channel->curregs[5] &= ~SND_BRK;
        write_zsreg(info->zs_channel, 5, info->zs_channel->curregs[5]);
-       restore_flags(flags);
+       spin_unlock_irqrestore(&zs_lock, flags);
 }
 
 static int rs_ioctl(struct tty_struct *tty, struct file * file,
                    unsigned int cmd, unsigned long arg)
 {
-       int error;
        struct dec_serial * info = (struct dec_serial *)tty->driver_data;
 
        if (info->hook)
@@ -1299,10 +1285,10 @@
        if (!info || serial_paranoia_check(info, tty->name, "rs_close"))
                return;
 
-       save_flags(flags); cli();
+       spin_lock_irqsave(&zs_lock, flags);
 
        if (tty_hung_up_p(filp)) {
-               restore_flags(flags);
+               spin_unlock_irqrestore(&zs_lock, flags);
                return;
        }
 
@@ -1327,7 +1313,7 @@
                info->count = 0;
        }
        if (info->count) {
-               restore_flags(flags);
+               spin_unlock_irqrestore(&zs_lock, flags);
                return;
        }
        info->flags |= ZILOG_CLOSING;
@@ -1370,7 +1356,7 @@
        }
        info->flags &= ~(ZILOG_NORMAL_ACTIVE|ZILOG_CLOSING);
        wake_up_interruptible(&info->close_wait);
-       restore_flags(flags);
+       spin_unlock_irqrestore(&zs_lock, flags);
 }
 
 /*
@@ -1410,7 +1396,7 @@
 /*
  * rs_hangup() --- called by tty_hangup() when a hangup is signaled.
  */
-void rs_hangup(struct tty_struct *tty)
+static void rs_hangup(struct tty_struct *tty)
 {
        struct dec_serial * info = (struct dec_serial *)tty->driver_data;
 
@@ -1478,16 +1464,16 @@
        printk("block_til_ready before block: ttyS%d, count = %d\n",
               info->line, info->count);
 #endif
-       cli();
+       spin_lock(&zs_lock);
        if (!tty_hung_up_p(filp))
                info->count--;
-       sti();
+       spin_unlock_irq(&zs_lock);
        info->blocked_open++;
        while (1) {
-               cli();
+               spin_lock(&zs_lock);
                if (tty->termios->c_cflag & CBAUD)
                        zs_rtsdtr(info, RTS | DTR, 1);
-               sti();
+               spin_unlock_irq(&zs_lock);
                set_current_state(TASK_INTERRUPTIBLE);
                if (tty_hung_up_p(filp) ||
                    !(info->flags & ZILOG_INITIALIZED)) {
@@ -1535,7 +1521,7 @@
  * the IRQ chain.   It also performs the serial-specific
  * initialization for the tty structure.
  */
-int rs_open(struct tty_struct *tty, struct file * filp)
+static int rs_open(struct tty_struct *tty, struct file * filp)
 {
        struct dec_serial       *info;
        int                     retval, line;
@@ -1726,7 +1712,7 @@
                }
        }
 
-       save_and_cli(flags);
+       spin_lock_irqsave(&zs_lock, flags);
        for (n = 0; n < zs_channels_found; n++) {
                if (n % 2 == 0) {
                        write_zsreg(zs_soft[n].zs_chan_a, R9, FHWRES);
@@ -1736,7 +1722,7 @@
                load_zsregs(zs_soft[n].zs_channel,
                            zs_soft[n].zs_channel->curregs);
        }
-       restore_flags(flags);
+       spin_unlock_irqrestore(&zs_lock, flags);
 }
 
 static struct tty_operations serial_ops = {
@@ -1769,9 +1755,6 @@
        if(!BUS_PRESENT)
                return -ENODEV;
 
-       /* Setup base handler, and timer table. */
-       init_bh(SERIAL_BH, do_serial_bh);
-
        /* Find out how many Z8530 SCCs we have */
        if (zs_chain == 0)
                probe_sccs();
@@ -1820,8 +1803,7 @@
                info->event = 0;
                info->count = 0;
                info->blocked_open = 0;
-               info->tqueue.routine = do_softint;
-               info->tqueue.data = info;
+               tasklet_init(&info->tlet, do_softint, (unsigned long)info);
                init_waitqueue_head(&info->open_wait);
                init_waitqueue_head(&info->close_wait);
                printk("ttyS%02d at 0x%08x (irq = %d) is a Z85C30 SCC\n",
@@ -1853,8 +1835,7 @@
 /*
  * polling I/O routines
  */
-static int
-zs_poll_tx_char(void *handle, unsigned char ch)
+static int zs_poll_tx_char(void *handle, unsigned char ch)
 {
        struct dec_serial *info = handle;
        struct dec_zschannel *chan = info->zs_channel;
@@ -1877,8 +1858,7 @@
                return -ENODEV;
 }
 
-static int
-zs_poll_rx_char(void *handle)
+static int zs_poll_rx_char(void *handle)
 {
        struct dec_serial *info = handle;
         struct dec_zschannel *chan = info->zs_channel;
@@ -2057,7 +2037,7 @@
        }
        co->cflag = cflag;
 
-       save_and_cli(flags);
+       spin_lock_irqsave(&zs_lock, flags);
 
        /*
         * Set up the baud rate generator.
@@ -2112,7 +2092,7 @@
        zs_soft[co->index].clk_divisor = clk_divisor;
        zs_soft[co->index].zs_baud = get_zsbaud(&zs_soft[co->index]);
 
-       restore_flags(flags);
+       spin_unlock_irqrestore(&zs_lock, flags);
 
        return 0;
 }
@@ -2249,5 +2229,3 @@
        set_debug_traps(); /* init stub */
 }
 #endif /* ifdef CONFIG_KGDB */
-
-
diff -urN linux/drivers/tc/zs.h linux/drivers/tc/zs.h
--- linux/drivers/tc/zs.h       2004/07/01 13:29:20     1.9
+++ linux/drivers/tc/zs.h       2005/06/13 19:58:52     1.10
@@ -6,14 +6,14 @@
  *
  * Copyright (C) 1996 Paul Mackerras (Paul.Mackerras@cs.anu.edu.au)
  * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
- * Copyright (C) 2004  Maciej W. Rozycki
+ * Copyright (C) 2004, 2005  Maciej W. Rozycki
  */
 #ifndef _DECSERIAL_H
 #define _DECSERIAL_H
 
 #include <asm/dec/serial.h>
 
-#define NUM_ZSREGS    16
+#define NUM_ZSREGS 16
 
 struct serial_struct {
        int     type;
@@ -44,24 +44,24 @@
  */
 #define ZILOG_HUP_NOTIFY 0x0001 /* Notify getty on hangups and closes
                                   on the callout port */
-#define ZILOG_FOURPORT  0x0002 /* Set OU1, OUT2 per AST Fourport settings */
+#define ZILOG_FOURPORT 0x0002  /* Set OU1, OUT2 per AST Fourport settings */
 #define ZILOG_SAK      0x0004  /* Secure Attention Key (Orange book) */
 #define ZILOG_SPLIT_TERMIOS 0x0008 /* Separate termios for dialin/callout */
 
 #define ZILOG_SPD_MASK 0x0030
 #define ZILOG_SPD_HI   0x0010  /* Use 56000 instead of 38400 bps */
 
-#define ZILOG_SPD_VHI  0x0020  /* Use 115200 instead of 38400 bps */
-#define ZILOG_SPD_CUST 0x0030  /* Use user-specified divisor */
+#define ZILOG_SPD_VHI  0x0020  /* Use 115200 instead of 38400 bps */
+#define ZILOG_SPD_CUST 0x0030  /* Use user-specified divisor */
 
 #define ZILOG_SKIP_TEST        0x0040 /* Skip UART test during 
autoconfiguration */
-#define ZILOG_AUTO_IRQ  0x0080 /* Do automatic IRQ during autoconfiguration */
+#define ZILOG_AUTO_IRQ 0x0080 /* Do automatic IRQ during autoconfiguration */
 #define ZILOG_SESSION_LOCKOUT 0x0100 /* Lock out cua opens based on session */
 #define ZILOG_PGRP_LOCKOUT    0x0200 /* Lock out cua opens based on pgrp */
 #define ZILOG_CALLOUT_NOHUP   0x0400 /* Don't do hangups for cua device */
 
 #define ZILOG_FLAGS    0x0FFF  /* Possible legal ZILOG flags */
-#define ZILOG_USR_MASK 0x0430  /* Legal flags that non-privileged
+#define ZILOG_USR_MASK 0x0430  /* Legal flags that non-privileged
                                 * users can set or reset */
 
 /* Internal flags used only by kernel/chr_drv/serial.c */
@@ -139,8 +139,7 @@
        int                     xmit_head;
        int                     xmit_tail;
        int                     xmit_cnt;
-       struct tq_struct        tqueue;
-       struct tq_struct        tqueue_hangup;
+       struct tasklet_struct   tlet;
        wait_queue_head_t       open_wait;
        wait_queue_head_t       close_wait;
 };
@@ -282,7 +281,7 @@
 #define        DLC     4       /* Disable Lower Chain */
 #define        MIE     8       /* Master Interrupt Enable */
 #define        STATHI  0x10    /* Status high */
-#define SOFTACK 0x20    /* Software Interrupt Acknowledge */
+#define        SOFTACK 0x20    /* Software Interrupt Acknowledge */
 #define        NORESET 0       /* No reset on write to R9 */
 #define        CHRB    0x40    /* Reset channel B */
 #define        CHRA    0x80    /* Reset channel A */
@@ -395,8 +394,8 @@
 /* Read Register 15 (value of WR 15) */
 
 /* Misc macros */
-#define ZS_CLEARERR(channel)    (write_zsreg(channel, 0, ERR_RES))
-#define ZS_CLEARFIFO(channel)   do { volatile unsigned char garbage; \
+#define ZS_CLEARERR(channel)   (write_zsreg(channel, 0, ERR_RES))
+#define ZS_CLEARFIFO(channel)  do { volatile unsigned char garbage; \
                                     garbage = read_zsdata(channel); \
                                     garbage = read_zsdata(channel); \
                                     garbage = read_zsdata(channel); \

<Prev in Thread] Current Thread [Next in Thread>