|
@@ -186,6 +186,7 @@
|
|
|
enum imx_uart_type {
|
|
|
IMX1_UART,
|
|
|
IMX21_UART,
|
|
|
+ IMX6Q_UART,
|
|
|
};
|
|
|
|
|
|
/* device type dependent stuff */
|
|
@@ -231,6 +232,10 @@ static struct imx_uart_data imx_uart_devdata[] = {
|
|
|
.uts_reg = IMX21_UTS,
|
|
|
.devtype = IMX21_UART,
|
|
|
},
|
|
|
+ [IMX6Q_UART] = {
|
|
|
+ .uts_reg = IMX21_UTS,
|
|
|
+ .devtype = IMX6Q_UART,
|
|
|
+ },
|
|
|
};
|
|
|
|
|
|
static struct platform_device_id imx_uart_devtype[] = {
|
|
@@ -240,6 +245,9 @@ static struct platform_device_id imx_uart_devtype[] = {
|
|
|
}, {
|
|
|
.name = "imx21-uart",
|
|
|
.driver_data = (kernel_ulong_t) &imx_uart_devdata[IMX21_UART],
|
|
|
+ }, {
|
|
|
+ .name = "imx6q-uart",
|
|
|
+ .driver_data = (kernel_ulong_t) &imx_uart_devdata[IMX6Q_UART],
|
|
|
}, {
|
|
|
/* sentinel */
|
|
|
}
|
|
@@ -247,6 +255,7 @@ static struct platform_device_id imx_uart_devtype[] = {
|
|
|
MODULE_DEVICE_TABLE(platform, imx_uart_devtype);
|
|
|
|
|
|
static struct of_device_id imx_uart_dt_ids[] = {
|
|
|
+ { .compatible = "fsl,imx6q-uart", .data = &imx_uart_devdata[IMX6Q_UART], },
|
|
|
{ .compatible = "fsl,imx1-uart", .data = &imx_uart_devdata[IMX1_UART], },
|
|
|
{ .compatible = "fsl,imx21-uart", .data = &imx_uart_devdata[IMX21_UART], },
|
|
|
{ /* sentinel */ }
|
|
@@ -268,6 +277,10 @@ static inline int is_imx21_uart(struct imx_port *sport)
|
|
|
return sport->devdata->devtype == IMX21_UART;
|
|
|
}
|
|
|
|
|
|
+static inline int is_imx6q_uart(struct imx_port *sport)
|
|
|
+{
|
|
|
+ return sport->devdata->devtype == IMX6Q_UART;
|
|
|
+}
|
|
|
/*
|
|
|
* Save and restore functions for UCR1, UCR2 and UCR3 registers
|
|
|
*/
|
|
@@ -800,7 +813,7 @@ static int imx_startup(struct uart_port *port)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (is_imx21_uart(sport)) {
|
|
|
+ if (!is_imx1_uart(sport)) {
|
|
|
temp = readl(sport->port.membase + UCR3);
|
|
|
temp |= IMX21_UCR3_RXDMUXSEL;
|
|
|
writel(temp, sport->port.membase + UCR3);
|
|
@@ -1043,7 +1056,7 @@ imx_set_termios(struct uart_port *port, struct ktermios *termios,
|
|
|
writel(num, sport->port.membase + UBIR);
|
|
|
writel(denom, sport->port.membase + UBMR);
|
|
|
|
|
|
- if (is_imx21_uart(sport))
|
|
|
+ if (!is_imx1_uart(sport))
|
|
|
writel(sport->port.uartclk / div / 1000,
|
|
|
sport->port.membase + IMX21_ONEMS);
|
|
|
|