AnsweredAssumed Answered

iMX6 Linux serial port buffer

Question asked by mc maddie on Apr 14, 2016
Latest reply on Apr 22, 2016 by mc maddie



I have custom iMX6 based hw that previously ran Yocto 1.7 and Linux 3.10.17. I have touchscreen connected to Uart4. With 3.10.17 it worked just fine. Then I updated to latest BSP version with Yocto 2.0 and Linux 4.1.15 and that touchscreen doesn't work properly anymore.


I use inputattach to connect the serial port to input system and I thought that the problem was in touchscreen serial port driver, but I think the problem is in either in imx serial driver or most likely driver configuration.


The problem is that when using single finger to touchscreen the touch is really laggy. I can actually move the finger across the screen and when I lift the finger it'll do the moves then. With two fingers the touch works just fine.


I did some more digging opened serial port with minicom and it seems that if I keep single finger pressed on screen the data is outputted maybe once/twice a second.  With two fingers the data is coming in with faster rate so that's why it works better.


I'm suspecting that there is some buffer flushing that takes too long with newer kernel since lifting the finger triggers the data output so timeout  waiting for new data has elapsed.  I went through the serial-driver code, but couldn't find any configurable buffers especially that could be done via device tree.


I changed the CTSTL to 1 from driver trying to lower the trigger threshold, but that did absolutely nothing. I also checked with scope that when pressing with just one finger the touch screen keeps sending constantly new data so the problem is in Linux end.


Any idea what else to try?