summaryrefslogtreecommitdiff
path: root/drivers/serial
diff options
context:
space:
mode:
authorYe Li <ye.li@nxp.com>2017-03-24 16:12:14 +0800
committerYe Li <ye.li@nxp.com>2018-04-27 02:32:25 -0700
commit9168fd3982efaecffecf9c279a94ad7adaf9ad44 (patch)
treeae1c85a4cf7dae8c119c5b14ae1e2c769d35d223 /drivers/serial
parenta89a8bf4168e0473ec12e367d65f5aa3316de9ab (diff)
MLK-14938-12 serial_lpuart: Update lpuart driver to support i.MX8
Add i.MX8 compatible string and cpu type support to lpuart driver, to use little endian 32 bits configurations. Signed-off-by: Ye Li <ye.li@nxp.com> (cherry picked from commit 0b1a70b2e3f519d6bf6c34f0df3a81ff1a4852cb)
Diffstat (limited to 'drivers/serial')
-rw-r--r--drivers/serial/serial_lpuart.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/serial/serial_lpuart.c b/drivers/serial/serial_lpuart.c
index 536d30f66a..55b0df004c 100644
--- a/drivers/serial/serial_lpuart.c
+++ b/drivers/serial/serial_lpuart.c
@@ -55,7 +55,8 @@ DECLARE_GLOBAL_DATA_PTR;
enum lpuart_devtype {
DEV_VF610 = 1,
DEV_LS1021A,
- DEV_MX7ULP
+ DEV_MX7ULP,
+ DEV_IMX8
};
struct lpuart_serial_platdata {
@@ -326,7 +327,7 @@ static int _lpuart32_serial_init(struct lpuart_serial_platdata *plat)
lpuart_write32(plat->flags, &base->match, 0);
- if (plat->devtype == DEV_MX7ULP) {
+ if (plat->devtype == DEV_MX7ULP || plat->devtype == DEV_IMX8) {
_lpuart32_serial_setbrg_7ulp(plat, gd->baudrate);
} else {
/* provide data bits, parity, stop bit, etc */
@@ -343,7 +344,7 @@ static int lpuart_serial_setbrg(struct udevice *dev, int baudrate)
struct lpuart_serial_platdata *plat = dev->platdata;
if (is_lpuart32(dev)) {
- if (plat->devtype == DEV_MX7ULP)
+ if (plat->devtype == DEV_MX7ULP || plat->devtype == DEV_IMX8)
_lpuart32_serial_setbrg_7ulp(plat, baudrate);
else
_lpuart32_serial_setbrg(plat, baudrate);
@@ -428,6 +429,8 @@ static int lpuart_serial_ofdata_to_platdata(struct udevice *dev)
plat->devtype = DEV_MX7ULP;
else if (!fdt_node_check_compatible(blob, node, "fsl,vf610-lpuart"))
plat->devtype = DEV_VF610;
+ else if (!fdt_node_check_compatible(blob, node, "fsl,imx8qm-lpuart"))
+ plat->devtype = DEV_IMX8;
return 0;
}
@@ -445,6 +448,8 @@ static const struct udevice_id lpuart_serial_ids[] = {
{ .compatible = "fsl,imx7ulp-lpuart",
.data = LPUART_FLAG_REGMAP_32BIT_REG },
{ .compatible = "fsl,vf610-lpuart"},
+ { .compatible = "fsl,imx8qm-lpuart",
+ .data = LPUART_FLAG_REGMAP_32BIT_REG },
{ }
};