lkml.org 
[lkml]   [2009]   [Oct]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[094/136] usb-serial: put subroutines in logical order
    2.6.31-stable review patch.  If anyone has any objections, please let us know.

    ------------------
    From: Alan Stern <stern@rowland.harvard.edu>

    commit f5b0953a89fa3407fb293cc54ead7d8feec489e4 upstream.

    This patch (as1285) rearranges the subroutines in usb-serial.c
    concerned with tty lifetimes into a more logical order: install, open,
    hangup, close, release. It also updates the formatting of the
    kerneldoc comments.

    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/usb/serial/usb-serial.c | 154 ++++++++++++++++++++--------------------
    1 file changed, 77 insertions(+), 77 deletions(-)

    --- a/drivers/usb/serial/usb-serial.c
    +++ b/drivers/usb/serial/usb-serial.c
    @@ -166,6 +166,41 @@ void usb_serial_put(struct usb_serial *s
    /*****************************************************************************
    * Driver tty interface functions
    *****************************************************************************/
    +
    +/**
    + * serial_install - install tty
    + * @driver: the driver (USB in our case)
    + * @tty: the tty being created
    + *
    + * Create the termios objects for this tty. We use the default
    + * USB serial settings but permit them to be overridden by
    + * serial->type->init_termios.
    + */
    +static int serial_install(struct tty_driver *driver, struct tty_struct *tty)
    +{
    + int idx = tty->index;
    + struct usb_serial *serial;
    + int retval;
    +
    + /* If the termios setup has yet to be done */
    + if (tty->driver->termios[idx] == NULL) {
    + /* perform the standard setup */
    + retval = tty_init_termios(tty);
    + if (retval)
    + return retval;
    + /* allow the driver to update it */
    + serial = usb_serial_get_by_index(tty->index);
    + if (serial->type->init_termios)
    + serial->type->init_termios(tty);
    + usb_serial_put(serial);
    + }
    + /* Final install (we use the default method) */
    + tty_driver_kref_get(driver);
    + tty->count++;
    + driver->ttys[idx] = tty;
    + return 0;
    +}
    +
    static int serial_open (struct tty_struct *tty, struct file *filp)
    {
    struct usb_serial *serial;
    @@ -264,13 +299,11 @@ bailout_serial_put:
    }

    /**
    - * serial_do_down - shut down hardware
    - * @port: port to shut down
    + * serial_do_down - shut down hardware
    + * @port: port to shut down
    *
    - * Shut down a USB port unless it is the console. We never shut down the
    - * console hardware as it will always be in use.
    - *
    - * Don't free any resources at this point
    + * Shut down a USB serial port unless it is the console. We never
    + * shut down the console hardware as it will always be in use.
    */
    static void serial_do_down(struct usb_serial_port *port)
    {
    @@ -278,8 +311,10 @@ static void serial_do_down(struct usb_se
    struct usb_serial *serial;
    struct module *owner;

    - /* The console is magical, do not hang up the console hardware
    - or there will be tears */
    + /*
    + * The console is magical. Do not hang up the console hardware
    + * or there will be tears.
    + */
    if (port->console)
    return;

    @@ -293,24 +328,50 @@ static void serial_do_down(struct usb_se
    mutex_unlock(&port->mutex);
    }

    +static void serial_hangup(struct tty_struct *tty)
    +{
    + struct usb_serial_port *port = tty->driver_data;
    + serial_do_down(port);
    + tty_port_hangup(&port->port);
    + /* We must not free port yet - the USB serial layer depends on it's
    + continued existence */
    +}
    +
    +static void serial_close(struct tty_struct *tty, struct file *filp)
    +{
    + struct usb_serial_port *port = tty->driver_data;
    +
    + if (!port)
    + return;
    +
    + dbg("%s - port %d", __func__, port->number);
    +
    + if (tty_port_close_start(&port->port, tty, filp) == 0)
    + return;
    + serial_do_down(port);
    + tty_port_close_end(&port->port, tty);
    + tty_port_tty_set(&port->port, NULL);
    +
    +}
    +
    /**
    - * serial_do_free - free resources post close/hangup
    - * @port: port to free up
    + * serial_do_free - free resources post close/hangup
    + * @port: port to free up
    *
    - * Do the resource freeing and refcount dropping for the port. We must
    - * be careful about ordering and we must avoid freeing up the console.
    + * Do the resource freeing and refcount dropping for the port.
    + * Avoid freeing the console.
    *
    - * Called when the last tty kref is dropped.
    + * Called when the last tty kref is dropped.
    */
    -
    static void serial_do_free(struct tty_struct *tty)
    {
    struct usb_serial_port *port = tty->driver_data;
    struct usb_serial *serial;
    struct module *owner;

    - /* The console is magical, do not hang up the console hardware
    - or there will be tears */
    + /* The console is magical. Do not hang up the console hardware
    + * or there will be tears.
    + */
    if (port == NULL || port->console)
    return;

    @@ -326,32 +387,6 @@ static void serial_do_free(struct tty_st
    module_put(owner);
    }

    -static void serial_close(struct tty_struct *tty, struct file *filp)
    -{
    - struct usb_serial_port *port = tty->driver_data;
    -
    - if (!port)
    - return;
    -
    - dbg("%s - port %d", __func__, port->number);
    -
    - if (tty_port_close_start(&port->port, tty, filp) == 0)
    - return;
    - serial_do_down(port);
    - tty_port_close_end(&port->port, tty);
    - tty_port_tty_set(&port->port, NULL);
    -
    -}
    -
    -static void serial_hangup(struct tty_struct *tty)
    -{
    - struct usb_serial_port *port = tty->driver_data;
    - serial_do_down(port);
    - tty_port_hangup(&port->port);
    - /* We must not free port yet - the USB serial layer depends on it's
    - continued existence */
    -}
    -
    static int serial_write(struct tty_struct *tty, const unsigned char *buf,
    int count)
    {
    @@ -699,41 +734,6 @@ static const struct tty_port_operations
    .dtr_rts = serial_dtr_rts,
    };

    -/**
    - * serial_install - install tty
    - * @driver: the driver (USB in our case)
    - * @tty: the tty being created
    - *
    - * Create the termios objects for this tty. We use the default USB
    - * serial ones but permit them to be overriddenby serial->type->termios.
    - * This lets us remove all the ugly hackery
    - */
    -
    -static int serial_install(struct tty_driver *driver, struct tty_struct *tty)
    -{
    - int idx = tty->index;
    - struct usb_serial *serial;
    - int retval;
    -
    - /* If the termios setup has yet to be done */
    - if (tty->driver->termios[idx] == NULL) {
    - /* perform the standard setup */
    - retval = tty_init_termios(tty);
    - if (retval)
    - return retval;
    - /* allow the driver to update it */
    - serial = usb_serial_get_by_index(tty->index);
    - if (serial->type->init_termios)
    - serial->type->init_termios(tty);
    - usb_serial_put(serial);
    - }
    - /* Final install (we use the default method) */
    - tty_driver_kref_get(driver);
    - tty->count++;
    - driver->ttys[idx] = tty;
    - return 0;
    -}
    -
    int usb_serial_probe(struct usb_interface *interface,
    const struct usb_device_id *id)
    {



    \
     
     \ /
      Last update: 2009-10-02 03:45    [W:0.043 / U:61.532 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site