Hi Fabio, Fabio Estevam <festevam@xxxxxxxxx> writes: > From: Fabio Estevam <fabio.estevam@xxxxxxx> > > Commit 0d6fce904452 ("tty: serial: lpuart: introduce lpuart_soc_data to > represent SoC property") introduced a buggy logic for detecting the 32-bit > type UART since the condition: "if (sport->port.iotype & UPIO_MEM32BE)" > is always true. > > Performing such bitfield AND operation is not correct, because in the > case of Vybrid UART iotype is UPIO_MEM (2), so: > > UPIO_MEM & UPIO_MEM32BE = 010 & 110 = 010, which is true. > > Such logic tells the driver to always treat the UART operations as 32-bit, > leading to the driver misbehavior on Vybrid. > > Fix the 32-bit type detection logic to avoid UART breakage on Vybrid. > > While at it, introduce a lpuart_is_32() function to help readability. > > Fixes: 0d6fce904452 ("tty: serial: lpuart: introduce lpuart_soc_data to represent SoC property") > Reported-by: Vivien Didelot <vivien.didelot@xxxxxxxxxxxxxxxxxxxx> > Signed-off-by: Fabio Estevam <fabio.estevam@xxxxxxx> Tested-by: Vivien Didelot <vivien.didelot@xxxxxxxxxxxxxxxxxxxx> This fixes boot on my ZII Dev Rev B and C boards, thanks ;-) Vivien -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html