drivers: serial: lpuart: Enable Little Endian Support
authorVabhav Sharma <vabhav.sharma@nxp.com>
Thu, 31 Jan 2019 12:08:10 +0000 (12:08 +0000)
committerSimon Glass <sjg@chromium.org>
Wed, 10 Jul 2019 22:52:58 +0000 (16:52 -0600)
By default LPUART driver with compatible string "fsl,ls1021a-lpuart"
support big-endian mode.On NXP SoC like LS1028A LPUART IP is
little-endian,Added support to Fetch LPUART IP Endianness from lpuart
device-tree node.

Signed-off-by: Vabhav Sharma <vabhav.sharma@nxp.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
drivers/serial/serial_lpuart.c

index a357b00d28785eb07490d2126ddbbfa7cfbca31f..57dd4a72c6d1a42404a0b655535cd304d6a5838d 100644 (file)
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0+
 /*
+ * Copyright 2019 NXP
  * Copyright 2013 Freescale Semiconductor, Inc.
  */
 
@@ -502,6 +503,9 @@ static int lpuart_serial_ofdata_to_platdata(struct udevice *dev)
        plat->reg = (void *)addr;
        plat->flags = dev_get_driver_data(dev);
 
+       if (fdtdec_get_bool(blob, node, "little-endian"))
+               plat->flags &= ~LPUART_FLAG_REGMAP_ENDIAN_BIG;
+
        if (!fdt_node_check_compatible(blob, node, "fsl,ls1021a-lpuart"))
                plat->devtype = DEV_LS1021A;
        else if (!fdt_node_check_compatible(blob, node, "fsl,imx7ulp-lpuart"))