Dear All, I have a problem with this (?) driver. I use a microcontroller as a generator of data sent over uart to sc16is762. The latter is connected to raspberry pi zero through i2c, and only channel 'A' is used in the chip. When there is no data coming from the uC, using stty to configure the port works fine. Once the port is configured I can cat /dev/ttySC0 and then when data start coming, everything is ok. But there are some problems: - sometimes when 'cat' is stopped with ^C while data is still coming, the 'cat' hangs forever - very often 'cat' hangs when started while data is coming; strace shows it hangs on open; but when the stream of data is stopped and started again, open finally succeeds and cat continues as expected (unless the above happens) - when any of the above problems happen very often there are many repeated messages like this: "sc16is7xx 1-004d: ttySC0: Possible RX FIFO overrun: 64" or, less often, ".... ttySC0: Unexpected interrupt: 8". To summarize: starting and stopping 'cat' while no data is coming is ok, but when data is coming then 'cat' tends to hang, stty also often hangs. Example scenario without problems: # # no data coming # stty -F /dev/ttySC0 cs8 -cstopb -ixon raw speed 115200 # cat /dev/ttySC0 # # start transmitting data to sc16is762 ABCDEF........... # # stop transmitting data #^C # # cat stops gracefully Example scenario with problems: # # start transmitting data to sc16is762 # stty -F /dev/ttySC0 cs8 -cstopb -ixon raw speed 115200 # cat /dev/ttySC0 # # nothing happens # # stop transmitting data and start again ABCDEF........... It seems that when a problem happens the sc16is7xx_set_termios() is called and stops at sc16is7xx_port_write() (the first port write in the function, right after parity, stop bits, read status mask and ignore mask are computed). I am stuck with debugging it any further. Can anyone please help? I am comfortable with applying patches and testing, I can also add debug printks here and there, but need someone to point me in the right direction. I am using kernel 4.9 from raspberry pi's github; it is Linus v4.9 + 114 patches, but none of them seems to touch the sc16is7xx. My device tree overlay: /dts-v1/; /plugin/; / { compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; fragment@0 { target = <&i2c_arm>; __overlay__ { #address-cells = <1>; #size-cells = <0>; status = "okay"; sc16is752: sc16is752@48 { compatible = "nxp,sc16is752"; reg = <0x48>; /* address */ clocks = <&sc16is752_clk>; interrupt-parent = <&gpio>; interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */ #gpio-cells = <2>; sc16is752_clk: sc16is752_clk { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <14745600>; }; }; }; }; __overrides__ { int_pin = <&sc16is752>,"interrupts:0"; addr = <&sc16is752>,"reg:0"; }; }; Regards, Andrzej PS. I am not subscribed to the list, co please Cc me when answering. -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html