mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
serial: imx: Simplify compatibility handling
Three of the four entries of imx_uart_devdata[] use .uts_reg = IMX21_UTS. The difference in the .devtype member isn't relevant, the only thing that matters is if is equal to IMX1_UART. So use an entry with .devtype = IMX21_UART on all platforms but i.MX1. There is no need to have the dev types in an array, so split them up in two separate variables. The fsl,imx53-uart devinfo can go away because in the binding and also the dts files all fsl,imx53-uart devices also are compatible to fsl,imx21-uart. That's not the case for fsl,imx6q-uart (which is a bit strange IMHO), so the fsl,imx6q-uart must stay around. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Link: https://lore.kernel.org/r/20230911085451.628798-1-u.kleine-koenig@pengutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
064f3bb3bc
commit
305a5dd7a3
1 changed files with 17 additions and 23 deletions
|
@ -177,8 +177,6 @@
|
||||||
enum imx_uart_type {
|
enum imx_uart_type {
|
||||||
IMX1_UART,
|
IMX1_UART,
|
||||||
IMX21_UART,
|
IMX21_UART,
|
||||||
IMX53_UART,
|
|
||||||
IMX6Q_UART,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* device type dependent stuff */
|
/* device type dependent stuff */
|
||||||
|
@ -240,30 +238,26 @@ struct imx_port_ucrs {
|
||||||
unsigned int ucr3;
|
unsigned int ucr3;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct imx_uart_data imx_uart_devdata[] = {
|
static const struct imx_uart_data imx_uart_imx1_devdata = {
|
||||||
[IMX1_UART] = {
|
|
||||||
.uts_reg = IMX1_UTS,
|
.uts_reg = IMX1_UTS,
|
||||||
.devtype = IMX1_UART,
|
.devtype = IMX1_UART,
|
||||||
},
|
};
|
||||||
[IMX21_UART] = {
|
|
||||||
|
static const struct imx_uart_data imx_uart_imx21_devdata = {
|
||||||
.uts_reg = IMX21_UTS,
|
.uts_reg = IMX21_UTS,
|
||||||
.devtype = IMX21_UART,
|
.devtype = IMX21_UART,
|
||||||
},
|
|
||||||
[IMX53_UART] = {
|
|
||||||
.uts_reg = IMX21_UTS,
|
|
||||||
.devtype = IMX53_UART,
|
|
||||||
},
|
|
||||||
[IMX6Q_UART] = {
|
|
||||||
.uts_reg = IMX21_UTS,
|
|
||||||
.devtype = IMX6Q_UART,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct of_device_id imx_uart_dt_ids[] = {
|
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], },
|
* For reasons unknown to me, some UART devices (e.g. imx6ul's) are
|
||||||
{ .compatible = "fsl,imx1-uart", .data = &imx_uart_devdata[IMX1_UART], },
|
* compatible to fsl,imx6q-uart, but not fsl,imx21-uart, while the
|
||||||
{ .compatible = "fsl,imx21-uart", .data = &imx_uart_devdata[IMX21_UART], },
|
* 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 */ }
|
{ /* sentinel */ }
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, imx_uart_dt_ids);
|
MODULE_DEVICE_TABLE(of, imx_uart_dt_ids);
|
||||||
|
|
Loading…
Add table
Reference in a new issue