enum imx_uart_type {
IMX1_UART,
IMX21_UART,
- IMX53_UART,
- IMX6Q_UART,
};
/* device type dependent stuff */
unsigned int ucr3;
};
-static struct imx_uart_data imx_uart_devdata[] = {
- [IMX1_UART] = {
- .uts_reg = IMX1_UTS,
- .devtype = IMX1_UART,
- },
- [IMX21_UART] = {
- .uts_reg = IMX21_UTS,
- .devtype = IMX21_UART,
- },
- [IMX53_UART] = {
- .uts_reg = IMX21_UTS,
- .devtype = IMX53_UART,
- },
- [IMX6Q_UART] = {
- .uts_reg = IMX21_UTS,
- .devtype = IMX6Q_UART,
- },
+static const struct imx_uart_data imx_uart_imx1_devdata = {
+ .uts_reg = IMX1_UTS,
+ .devtype = IMX1_UART,
+};
+
+static const struct imx_uart_data imx_uart_imx21_devdata = {
+ .uts_reg = IMX21_UTS,
+ .devtype = IMX21_UART,
};
static const struct of_device_id imx_uart_dt_ids[] = {
- { .compatible = "fsl,imx6q-uart", .data = &imx_uart_devdata[IMX6Q_UART], },
- { .compatible = "fsl,imx53-uart", .data = &imx_uart_devdata[IMX53_UART], },
- { .compatible = "fsl,imx1-uart", .data = &imx_uart_devdata[IMX1_UART], },
- { .compatible = "fsl,imx21-uart", .data = &imx_uart_devdata[IMX21_UART], },
+ /*
+ * For reasons unknown to me, some UART devices (e.g. imx6ul's) are
+ * compatible to fsl,imx6q-uart, but not fsl,imx21-uart, while the
+ * original imx6q's UART is compatible to fsl,imx21-uart. This driver
+ * doesn't make any distinction between these two variants.
+ */
+ { .compatible = "fsl,imx6q-uart", .data = &imx_uart_imx21_devdata, },
+ { .compatible = "fsl,imx1-uart", .data = &imx_uart_imx1_devdata, },
+ { .compatible = "fsl,imx21-uart", .data = &imx_uart_imx21_devdata, },
{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, imx_uart_dt_ids);