I have a interrupt driven UART inplementation (SDK version is 2.0.0 and I'm using regular lpuart driver, not pal or flexio) in which I need to look at each received byte, as they arrive. Thus, I use:
/* Get last transfer status */
result = LPUART_DRV_GetReceiveStatus(INST_UART, NULL);
if (STATUS_SUCCESS == result)
/* Execute send non-blocking */
LPUART_DRV_ReceiveData(INST_UART, inst_datum, 1U);
...where "inst_datum" is a one-byte buffer.
Also, I have a Rx callback installed which retrieves the content o inst_datum and calls the Rx code above for next byte reception.
It works, as far as the bytes arrival rate is not too high. If bytes arrival gets too fast, lpuart triggers a STATUS_UART_NOISE_ERROR interrupt.