Am Montag, den 22.01.2018, 15:58 +0800 schrieb Ji-Ze Hong (Peter Hong) : > The F81232 will report data and LSR with bulk like following format: > bulk-in data: [LSR(1Byte)+DATA(1Byte)][LSR(1Byte)+DATA(1Byte)]... > > LSR will auto clear frame/parity/break error flag when reading by H/W, > but overrrun will only cleared when reading LSR. So this patch add a > worker to read LSR when OE. > > Signed-off-by: Ji-Ze Hong (Peter Hong) <hpeter+linux_kernel@xxxxxxxxx> [..] > +static void f81232_lsr_worker(struct work_struct *work) > +{ > + struct f81232_private *priv; > + struct usb_serial_port *port; > + int status; > + u8 tmp; > + > + priv = container_of(work, struct f81232_private, lsr_work); > + port = priv->port; > + > + status = f81232_get_register(port, LINE_STATUS_REGISTER, &tmp); > + if (status) > + dev_warn(&port->dev, "read LSR failed: %d\n", status); > +} Hi, I am afraid this is incomplete. You are scheduling a work that does IO. Hence you must cancel that work when the driver is unbound from the interface. You must also not do IO like this while the system is suspending. Regards Oliver -- 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