mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-02 05:05:09 +00:00
Because UART interrupt is rising-edge triggered, and we need to clear
UART IER and restore IER state to make sure interrupt can be triggered
again when following situation occur:
[ISR start] [process rx] [process tx] [ISR end]
RX 0 1 0 1 1
TX 0 1 1 0 0
uart_int_event 0 1 1 1 1
uart_ier 1 1 1 1 1
uart_s1 (0 -> 1) 1 1 1 (keep high)
uart_int_event = (RX | TX)
uart_s1 = (uart_int_event & uart_ier)
UART interrupt = (uart_s1 0->1)
Signed-off-by: Dino Li <dino.li@ite.com.tw>
BRANCH=none
BUG=none
TEST=fixed.
Change-Id: I6498876780aba33795022fa6ecbb77e1c6468146
Reviewed-on: https://chromium-review.googlesource.com/311563
Commit-Ready: Dino Li <dino.li@ite.com.tw>
Tested-by: Dino Li <dino.li@ite.com.tw>
Reviewed-by: Randall Spangler <rspangler@chromium.org>