Draft: arm:imx:cpuidle-imx6sx: disable low power idle state for nallino
This is a workaround for issue https://secogroup.atlassian.net/browse/YT-201 (Nallino: rs485echo test fails on high baudrates when size of message to transmit is bigger than UART FIFO bufffer)
During investigation of the issue it was found that:
- when kernel reaches a UART FIFO to get received data in interrupt handler, we got an Overran Error in status register and some data is lost already;
- so, kernel/hardware is just too slow to process incoming data;
- herewith when we increased CPU frequency to maximum value, it has not helped. The only solution was to launch some stress test in parallel - in this case, kernel was able to process data from UART despite heavy load;
- after that, we checked a NXP kernel and found that it is not affected by this issue;
- so, we bisected that the problem is in cpuilde driver for IMX6ULL CPU in vanilla kernel. By contrast with NXP kernel, there is no iMX6ULL specific driver and a universal one (cpuidle-imx6sx.c) is used;
- this universal driver does not use all hardware capabilities of iMX6ULL CPU, and because of this it's too slow in waking up CPU from LOW-POWER-IDLE state;
- and this sloppiness results in following problems at least: x overrun errors in RX FIFO when UART operates on speeds higher than 115200 bps (https://secogroup.atlassian.net/issues/YT-201) x delays when RS485 switches from RX to TX, which causes ordinary RS485 tests to fail (https://secogroup.atlassian.net/issues/YT-136)
The proper solution, would be to port cpuidle-imx6ul.c from NXP kernel, but it would require reasonable efforts, as it does not work in vanilla out of box.
So, in current MR, we:
- just disable LOW-POWER-IDLE state in kernel for Nallino board. So, the existing cpuidle driver won't put device in this state any more;
- revert a previous workaround/fix for RS485 turnaround issue on Nallino (f049bdc6).
Edited by Mikhail Vanyulin