Joshua Scott <joshua.scott@xxxxxxxxxxxxxxxxxxx> writes: > 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") Applied on mvebu/fixes Thanks, Gregory > > --- > 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 > -- Gregory Clement, Bootlin Embedded Linux and Kernel engineering http://bootlin.com