* @driver: the driver (USB in our case)
  * @tty: the tty being created
  *
- * Create the termios objects for this tty.  We use the default
+ * Initialise the termios structure for this tty.  We use the default
  * USB serial settings but permit them to be overridden by
- * serial->type->init_termios.
+ * serial->type->init_termios on first open.
  *
  * This is the first place a new tty gets used.  Hence this is where we
  * acquire references to the usb_serial structure and the driver module,
        int idx = tty->index;
        struct usb_serial *serial;
        struct usb_serial_port *port;
+       bool init_termios;
        int retval = -ENODEV;
 
        port = usb_serial_port_get_by_minor(idx);
        if (retval)
                goto error_get_interface;
 
+       init_termios = (driver->termios[idx] == NULL);
+
        retval = tty_standard_install(driver, tty);
        if (retval)
                goto error_init_termios;
 
        mutex_unlock(&serial->disc_mutex);
 
-       /* allow the driver to update the settings */
-       if (serial->type->init_termios)
+       /* allow the driver to update the initial settings */
+       if (init_termios && serial->type->init_termios)
                serial->type->init_termios(tty);
 
        tty->driver_data = port;