Switch to the "marvell,armada-38x-uart" driver variant to empty the UART buffer before writing to the UART_LCR register. Signed-off-by: Joshua Scott <joshua.scott@xxxxxxxxxxxxxxxxxxx> Tested-by: Andrew Lunn <andrew@xxxxxxx> Acked-by: Gregory CLEMENT <gregory.clement@xxxxxxxxxxx>. Cc: stable@xxxxxxxxxxxxxxx Fixes: 43e28ba87708 ("ARM: dts: Use armada-370-xp as a base for armada-xp-98dx3236") --- Changes in v3: Updated title, added tested-by, and Fixes tag Changes in v2: Andrew Lunn was able to test on a Marvell 370RD reference design, and the character loss issue did not occur. The fix has now been changed to only affect the following SOCs: * 98DX323x * 98DX3333 * 98DX4251 v1 message: We have found that like the armada 38x, other Marvell SOCs can lose characters when the UART_LCR register is written to without first waiting for the buffer to empty. We have observed this behaviour on the following Marvell switch SOCs: * 98DX323x * 98DX3333 * 98DX4251 However, we do not currently have access to non-switch SOCs which share the same parent device-tree. The question we have is, should the fix be applied to the common armada-370-xp device-tree, or should it be restricted to only affect the SOCs listed above. If anybody is able to check, we would like to find out if the issue affects other armada-xp / armada-370 based SOCs. The issue can be reproduced, if logging in using the serial port, with: resize && echo "hello world" On affected devices, the first couple letters of "hello world" are lost. On some SOCs this can be seen at 115200 baud, and on others we have had to slow down to 9600 to see the issue. Cheers, Joshua Scott --- arch/arm/boot/dts/armada-xp-98dx3236.dtsi | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/arm/boot/dts/armada-xp-98dx3236.dtsi b/arch/arm/boot/dts/armada-xp-98dx3236.dtsi index 59753470cd34..267d0c178e55 100644 --- a/arch/arm/boot/dts/armada-xp-98dx3236.dtsi +++ b/arch/arm/boot/dts/armada-xp-98dx3236.dtsi @@ -336,3 +336,11 @@ status = "disabled"; }; +&uart0 { + compatible = "marvell,armada-38x-uart"; +}; + +&uart1 { + compatible = "marvell,armada-38x-uart"; +}; + -- 2.21.0