Anyone? W dniu 31.12.2016 o 00:00, Andrzej Pietrasiewicz pisze: > 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