Re: [PATCH] cdc-acm: acm_init: Set initial BAUD to B0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2020-07-10 at 12:34 +0200, Greg KH wrote:
> 
> On Fri, Jul 10, 2020 at 11:35:18AM +0200, Joakim Tjernlund wrote:
> > BO will disable USB input until the device opens. This will
> > avoid garbage chars waiting flood the TTY. This mimics a real UART
> > device better.
> > For initial termios to reach USB core, USB driver has to be
> > registered before TTY driver.
> 
> You are doing two different things here, please break this up into 2
> patches, with good documentation for both of them.
> 
> And any reason you didn't send this to the people listed in
> scripts/get_maintainers.pl when run on this patch?
> 
> > 
> > Signed-off-by: Joakim Tjernlund <joakim.tjernlund@xxxxxxxxxxxx>
> > Cc: stable@xxxxxxxxxxxxxxx
> > ---
> > 
> >  I hope this change makes sense to you, if so I belive
> >  ttyUSB could do the same.
> > 
> >  drivers/usb/class/cdc-acm.c | 8 ++++----
> >  1 file changed, 4 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
> > index 751f00285ee6..5680f71200e5 100644
> > --- a/drivers/usb/class/cdc-acm.c
> > +++ b/drivers/usb/class/cdc-acm.c
> > @@ -1999,19 +1999,19 @@ static int __init acm_init(void)
> >       acm_tty_driver->subtype = SERIAL_TYPE_NORMAL,
> >       acm_tty_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV;
> >       acm_tty_driver->init_termios = tty_std_termios;
> > -     acm_tty_driver->init_termios.c_cflag = B9600 | CS8 | CREAD |
> > +     acm_tty_driver->init_termios.c_cflag = B0 | CS8 | CREAD |
> >                                                               HUPCL | CLOCAL;
> 
> Huh?  Are you sure this works?

Yes, sort of. I didn't see prehistory chars when changed to B0

> 
> >       tty_set_operations(acm_tty_driver, &acm_ops);
> > 
> > -     retval = tty_register_driver(acm_tty_driver);
> > +     retval = usb_register(&acm_driver);
> >       if (retval) {
> >               put_tty_driver(acm_tty_driver);
> >               return retval;
> >       }
> > 
> > -     retval = usb_register(&acm_driver);
> > +     retval = tty_register_driver(acm_tty_driver);
> >       if (retval) {
> > -             tty_unregister_driver(acm_tty_driver);
> > +             usb_deregister(&acm_driver);
> 
> Why are you switching these around?  I think I know, but you don't
> really say...

I wrote:
   For initial termios to reach USB core, USB driver has to be
   registered before TTY driver.
Found out that by trial and error. Isn't that clear enough?

I could change to:
    cdc-acm: acm_init: register USB before TTY driver
    
    For initial termios to reach USB core, USB driver has to be
    registered before TTY driver.

and then just have that change:
@@ -2003,15 +2003,15 @@ static int __init acm_init(void)
 								HUPCL | CLOCAL;
 	tty_set_operations(acm_tty_driver, &acm_ops);
 
-	retval = tty_register_driver(acm_tty_driver);
+	retval = usb_register(&acm_driver);
 	if (retval) {
 		put_tty_driver(acm_tty_driver);
 		return retval;
 	}
 
-	retval = usb_register(&acm_driver);
+	retval = tty_register_driver(acm_tty_driver);
 	if (retval) {
-		tty_unregister_driver(acm_tty_driver);
+		usb_deregister(&acm_driver);
 		put_tty_driver(acm_tty_driver);
 		return retval;
 	}






[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux