Alan Cox wrote: > On Thu, 17 Sep 2009 14:08:28 +0100 > Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> wrote: > > >>> - memset(&dummy, 0, sizeof(struct ktermios)); >>> - tty->termios = termios; >>> + tty->termios = &usb_serial_tty_driver->init_termios; >>> >> That will corrupt the master one which is a reference used for many ports. >> >> I agree. >> You need the serial_install stuff or something similar resurrecting to do >> this properly. >> > > Here's a suggestion on how to do it. > > Add a tty->ops->init_termios() > > Make tty_init_termios() read > > if (tp == NULL) { > tp = kzalloc(sizeof(struct ktermios[2]), GFP_KERNEL); > if (tp == NULL) > return -ENOMEM; > memcpy(tp, &tty->driver->init_termios, > sizeof(struct ktermios)); > if (tty->ops->init_termios) > tty->ops->init_termios(tty); > tty->driver->termios[idx] = tp; > } > > Thats a good deal cleaner than the ->install override in the USB patches > Greg inherited and will be usable for cleaning up USB stuff too. > > Sure we can add another layer of init_termios callbacks, but where is the right place to store the termios per console? Should the "struct console co*" get a new member for the baud, or should it get a termios? The source of the problem is how to inherit the termios setting from the first user (the console code in this case). Before making several more implementations it is probably worth discussing few more of the details. In the current code the ->install override has the opportunity to apply the fixup by copying something from a "struct console co* termios" if one existed. Certainly you could do the same thing with the proposed call back you mentioned, but then the serial_install() needs to be removed from the usb code and the power management setup would need to find a new home... or a copy of the new call back would need to go into the serial_install() as well. Jason. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html