serial: Fix _serial_puts using \n\r instead of \r\n
authorSean Anderson <sean.anderson@seco.com>
Mon, 4 Apr 2022 18:17:57 +0000 (14:17 -0400)
committerTom Rini <trini@konsulko.com>
Thu, 14 Apr 2022 19:39:15 +0000 (15:39 -0400)
commit2c777488b6709dea4aadfdadbbfccc0de751a022
tree7462f882c9755bc0817131774c4a06dce110ea35
parentaf298f3dcdae31b49791ff7aa1a6d75a27e57f3a
serial: Fix _serial_puts using \n\r instead of \r\n

A string like "test\n" would be broken up into the following sequence of
prints by _serial_puts:

puts("test\n")
putc('\r')

Although functionally this is the same as \r\n, it is not the standard
sequence and caused tests to fail. Fix this by excluding the '\n' from
the initial print. The above string will now be broken up like

puts("test")
puts("\r\n")

Since we may now need to call ops->puts twice (with the associated retry
logic), break that part of the function off into a helper.

Fixes: 7a76347189 ("serial: dm: Add support for puts")
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
drivers/serial/serial-uclass.c