Commit 87156d69 authored by Linus Torvalds's avatar Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6:
  serial: drivers/serial/pmac_zilog.c: add missing unlock
  serial: 8250_pnp - add Fujitsu Wacom device
  tty: Fix regressions in the char driver conversion
parents e4049eb8 c61fae96
...@@ -879,8 +879,8 @@ static int isicom_open(struct tty_struct *tty, struct file *filp) ...@@ -879,8 +879,8 @@ static int isicom_open(struct tty_struct *tty, struct file *filp)
if (tport == NULL) if (tport == NULL)
return -ENODEV; return -ENODEV;
port = container_of(tport, struct isi_port, port); port = container_of(tport, struct isi_port, port);
card = &isi_card[BOARD(tty->index)];
tty->driver_data = port;
return tty_port_open(tport, tty, filp); return tty_port_open(tport, tty, filp);
} }
...@@ -936,7 +936,12 @@ static void isicom_shutdown(struct tty_port *port) ...@@ -936,7 +936,12 @@ static void isicom_shutdown(struct tty_port *port)
static void isicom_close(struct tty_struct *tty, struct file *filp) static void isicom_close(struct tty_struct *tty, struct file *filp)
{ {
struct isi_port *ip = tty->driver_data; struct isi_port *ip = tty->driver_data;
struct tty_port *port = &ip->port; struct tty_port *port;
if (ip == NULL)
return;
port = &ip->port;
if (isicom_paranoia_check(ip, tty->name, "isicom_close")) if (isicom_paranoia_check(ip, tty->name, "isicom_close"))
return; return;
tty_port_close(port, tty, filp); tty_port_close(port, tty, filp);
......
...@@ -827,6 +827,8 @@ static int stli_open(struct tty_struct *tty, struct file *filp) ...@@ -827,6 +827,8 @@ static int stli_open(struct tty_struct *tty, struct file *filp)
return -ENODEV; return -ENODEV;
if (portp->devnr < 1) if (portp->devnr < 1)
return -ENODEV; return -ENODEV;
tty->driver_data = portp;
return tty_port_open(&portp->port, tty, filp); return tty_port_open(&portp->port, tty, filp);
} }
......
...@@ -1011,6 +1011,7 @@ static int mxser_open(struct tty_struct *tty, struct file *filp) ...@@ -1011,6 +1011,7 @@ static int mxser_open(struct tty_struct *tty, struct file *filp)
if (!info->ioaddr) if (!info->ioaddr)
return -ENODEV; return -ENODEV;
tty->driver_data = info;
return tty_port_open(&info->port, tty, filp); return tty_port_open(&info->port, tty, filp);
} }
...@@ -1074,7 +1075,7 @@ static void mxser_close(struct tty_struct *tty, struct file *filp) ...@@ -1074,7 +1075,7 @@ static void mxser_close(struct tty_struct *tty, struct file *filp)
struct mxser_port *info = tty->driver_data; struct mxser_port *info = tty->driver_data;
struct tty_port *port = &info->port; struct tty_port *port = &info->port;
if (tty->index == MXSER_PORTS) if (tty->index == MXSER_PORTS || info == NULL)
return; return;
if (tty_port_close_start(port, tty, filp) == 0) if (tty_port_close_start(port, tty, filp) == 0)
return; return;
......
...@@ -909,6 +909,7 @@ static int rc_open(struct tty_struct *tty, struct file *filp) ...@@ -909,6 +909,7 @@ static int rc_open(struct tty_struct *tty, struct file *filp)
if (error) if (error)
return error; return error;
tty->driver_data = port;
return tty_port_open(&port->port, tty, filp); return tty_port_open(&port->port, tty, filp);
} }
......
...@@ -724,7 +724,6 @@ static int stl_open(struct tty_struct *tty, struct file *filp) ...@@ -724,7 +724,6 @@ static int stl_open(struct tty_struct *tty, struct file *filp)
{ {
struct stlport *portp; struct stlport *portp;
struct stlbrd *brdp; struct stlbrd *brdp;
struct tty_port *port;
unsigned int minordev, brdnr, panelnr; unsigned int minordev, brdnr, panelnr;
int portnr; int portnr;
...@@ -754,7 +753,8 @@ static int stl_open(struct tty_struct *tty, struct file *filp) ...@@ -754,7 +753,8 @@ static int stl_open(struct tty_struct *tty, struct file *filp)
portp = brdp->panels[panelnr]->ports[portnr]; portp = brdp->panels[panelnr]->ports[portnr];
if (portp == NULL) if (portp == NULL)
return -ENODEV; return -ENODEV;
port = &portp->port;
tty->driver_data = portp;
return tty_port_open(&portp->port, tty, filp); return tty_port_open(&portp->port, tty, filp);
} }
...@@ -841,7 +841,8 @@ static void stl_close(struct tty_struct *tty, struct file *filp) ...@@ -841,7 +841,8 @@ static void stl_close(struct tty_struct *tty, struct file *filp)
pr_debug("stl_close(tty=%p,filp=%p)\n", tty, filp); pr_debug("stl_close(tty=%p,filp=%p)\n", tty, filp);
portp = tty->driver_data; portp = tty->driver_data;
BUG_ON(portp == NULL); if(portp == NULL)
return;
tty_port_close(&portp->port, tty, filp); tty_port_close(&portp->port, tty, filp);
} }
......
...@@ -348,6 +348,8 @@ static const struct pnp_device_id pnp_dev_table[] = { ...@@ -348,6 +348,8 @@ static const struct pnp_device_id pnp_dev_table[] = {
{ "FUJ02E6", 0 }, { "FUJ02E6", 0 },
/* Fujitsu Wacom 2FGT Tablet PC device */ /* Fujitsu Wacom 2FGT Tablet PC device */
{ "FUJ02E7", 0 }, { "FUJ02E7", 0 },
/* Fujitsu Wacom 1FGT Tablet PC device */
{ "FUJ02E9", 0 },
/* /*
* LG C1 EXPRESS DUAL (C1-PB11A3) touch screen (actually a FUJ02E6 in * LG C1 EXPRESS DUAL (C1-PB11A3) touch screen (actually a FUJ02E6 in
* disguise) * disguise)
......
...@@ -752,8 +752,10 @@ static void pmz_break_ctl(struct uart_port *port, int break_state) ...@@ -752,8 +752,10 @@ static void pmz_break_ctl(struct uart_port *port, int break_state)
uap->curregs[R5] = new_reg; uap->curregs[R5] = new_reg;
/* NOTE: Not subject to 'transmitter active' rule. */ /* NOTE: Not subject to 'transmitter active' rule. */
if (ZS_IS_ASLEEP(uap)) if (ZS_IS_ASLEEP(uap)) {
spin_unlock_irqrestore(&port->lock, flags);
return; return;
}
write_zsreg(uap, R5, uap->curregs[R5]); write_zsreg(uap, R5, uap->curregs[R5]);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment