|
@@ -231,6 +231,9 @@
|
|
|
#define DEV_NAME "ttyLP"
|
|
|
#define UART_NR 6
|
|
|
|
|
|
+/* IMX lpuart has four extra unused regs located at the beginning */
|
|
|
+#define IMX_REG_OFF 0x10
|
|
|
+
|
|
|
struct lpuart_port {
|
|
|
struct uart_port port;
|
|
|
struct clk *clk;
|
|
@@ -259,6 +262,7 @@ struct lpuart_port {
|
|
|
|
|
|
struct lpuart_soc_data {
|
|
|
char iotype;
|
|
|
+ u8 reg_off;
|
|
|
};
|
|
|
|
|
|
static const struct lpuart_soc_data vf_data = {
|
|
@@ -269,9 +273,15 @@ static const struct lpuart_soc_data ls_data = {
|
|
|
.iotype = UPIO_MEM32BE,
|
|
|
};
|
|
|
|
|
|
+static struct lpuart_soc_data imx_data = {
|
|
|
+ .iotype = UPIO_MEM32,
|
|
|
+ .reg_off = IMX_REG_OFF,
|
|
|
+};
|
|
|
+
|
|
|
static const struct of_device_id lpuart_dt_ids[] = {
|
|
|
{ .compatible = "fsl,vf610-lpuart", .data = &vf_data, },
|
|
|
{ .compatible = "fsl,ls1021a-lpuart", .data = &ls_data, },
|
|
|
+ { .compatible = "fsl,imx7ulp-lpuart", .data = &imx_data, },
|
|
|
{ /* sentinel */ }
|
|
|
};
|
|
|
MODULE_DEVICE_TABLE(of, lpuart_dt_ids);
|
|
@@ -2019,6 +2029,7 @@ static int lpuart_probe(struct platform_device *pdev)
|
|
|
if (IS_ERR(sport->port.membase))
|
|
|
return PTR_ERR(sport->port.membase);
|
|
|
|
|
|
+ sport->port.membase += sdata->reg_off;
|
|
|
sport->port.mapbase = res->start;
|
|
|
sport->port.dev = &pdev->dev;
|
|
|
sport->port.type = PORT_LPUART;
|