On Mon, Feb 16, 2015 at 03:58:00PM +0800, Peter Hung wrote: > When we use RS232 loopback, assume doing RTS change will cause > CTS change, DTR change will cause DCD/DSR change too. > > Sometimes we got 7~4 bits of MSR changed but the 3~0 bits of > MSR(delta) maybe not changed when set & get MCR fasterly. I think you mean "rapidly" here. > So we add more check not only UART_MSR_ANY_DELTA but also with > comparing DCD/RI/DSR/CTS change with old value. Due to the state > bit is always correct, we direct save msr when read. > > The following step to reproduce this problem with while loop step 1~4: > 1. ioctl(fd, TIOCMSET, &data) to set RTS or DTR > 2. ioctl(fd, TIOCMGET, &data) to read CTS or DCD/DSR state > 3. ioctl(fd, TIOCMSET, &data) to unset RTS or DTR > 4. ioctl(fd, TIOCMGET, &data) to read CTS or DCD/DSR state Without having looked at this very closely; are you sure this is a hardware issue and not related to the locking issues I pointed at in my comments to tiocmset? Johan -- 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