Skip to content

Commit

Permalink
TTY: synclinkmp, add tty install
Browse files Browse the repository at this point in the history
This has two outcomes:
* we give the TTY layer a tty_port
* we do not find the info structure every time open is called on that
  tty

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Acked-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Jiri Slaby authored and Greg Kroah-Hartman committed Aug 13, 2012
1 parent 8a3ad10 commit ee3b48d
Showing 1 changed file with 19 additions and 9 deletions.
28 changes: 19 additions & 9 deletions drivers/tty/synclinkmp.c
Original file line number Diff line number Diff line change
Expand Up @@ -711,33 +711,42 @@ static void ldisc_receive_buf(struct tty_struct *tty,

/* tty callbacks */

/* Called when a port is opened. Init and enable port.
*/
static int open(struct tty_struct *tty, struct file *filp)
static int install(struct tty_driver *driver, struct tty_struct *tty)
{
SLMP_INFO *info;
int retval, line;
unsigned long flags;
int line = tty->index;

line = tty->index;
if (line >= synclinkmp_device_count) {
printk("%s(%d): open with invalid line #%d.\n",
__FILE__,__LINE__,line);
return -ENODEV;
}

info = synclinkmp_device_list;
while(info && info->line != line)
while (info && info->line != line)
info = info->next_device;
if (sanity_check(info, tty->name, "open"))
return -ENODEV;
if ( info->init_error ) {
if (info->init_error) {
printk("%s(%d):%s device is not allocated, init error=%d\n",
__FILE__,__LINE__,info->device_name,info->init_error);
__FILE__, __LINE__, info->device_name,
info->init_error);
return -ENODEV;
}

tty->driver_data = info;

return tty_port_install(&info->port, driver, tty);
}

/* Called when a port is opened. Init and enable port.
*/
static int open(struct tty_struct *tty, struct file *filp)
{
SLMP_INFO *info = tty->driver_data;
unsigned long flags;
int retval;

info->port.tty = tty;

if (debug_level >= DEBUG_LEVEL_INFO)
Expand Down Expand Up @@ -3881,6 +3890,7 @@ static void device_init(int adapter_num, struct pci_dev *pdev)
}

static const struct tty_operations ops = {
.install = install,
.open = open,
.close = close,
.write = write,
Expand Down

0 comments on commit ee3b48d

Please sign in to comment.