lkml.org 
[lkml]   [2009]   [Sep]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 3/3] usb console,usb-serial: pass initial console baud on to first tty open
Alan Cox wrote:
> On Thu, 17 Sep 2009 14:08:28 +0100
> Alan Cox <alan@lxorguk.ukuu.org.uk> 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.


\
 
 \ /
  Last update: 2009-09-17 16:19    [W:0.130 / U:5.488 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site