Commit 305a5dd7 authored by Uwe Kleine-König's avatar Uwe Kleine-König Committed by Greg Kroah-Hartman
Browse files

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: default avatarUwe 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: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 064f3bb3
Loading
Loading
Loading
Loading
+17 −23
Original line number Diff line number Diff line
@@ -177,8 +177,6 @@
enum imx_uart_type {
	IMX1_UART,
	IMX21_UART,
	IMX53_UART,
	IMX6Q_UART,
};

/* device type dependent stuff */
@@ -240,30 +238,26 @@ struct imx_port_ucrs {
	unsigned int	ucr3;
};

static struct imx_uart_data imx_uart_devdata[] = {
	[IMX1_UART] = {
static const struct imx_uart_data imx_uart_imx1_devdata = {
	.uts_reg = IMX1_UTS,
	.devtype = IMX1_UART,
	},
	[IMX21_UART] = {
};

static const struct imx_uart_data imx_uart_imx21_devdata = {
	.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 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);