[PATCH v2 2/2] serial: 8250_mtk: honor DT serial aliases
Chen-Yu Tsai
wenst at chromium.org
Mon Jul 27 02:39:10 PDT 2026
On Mon, Jul 27, 2026 at 3:40 PM Carlo Caione <ccaione at baylibre.com> wrote:
>
> The Genio board DTs provide serial aliases for all enabled UARTs, but
> the MTK 8250 driver still registered every port with the default line
> number. If uart0 deferred and another UART probed first, the 8250 core
> could still assign ttyS0 to the wrong port despite the DT aliases.
>
> Read the serial alias during OF probe and seed uart.port.line before
> registering the port so the 8250 core reserves the requested ttyS slot.
>
> Signed-off-by: Carlo Caione <ccaione at baylibre.com>
Matches what is done in __uart_read_properties(),
Reviewed-by: Chen-Yu Tsai <wenst at chromium.org>
> ---
> drivers/tty/serial/8250/8250_mtk.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/tty/serial/8250/8250_mtk.c b/drivers/tty/serial/8250/8250_mtk.c
> index e6a56cf54ae0..841d64f6a707 100644
> --- a/drivers/tty/serial/8250/8250_mtk.c
> +++ b/drivers/tty/serial/8250/8250_mtk.c
> @@ -8,6 +8,7 @@
> #include <linux/clk.h>
> #include <linux/io.h>
> #include <linux/module.h>
> +#include <linux/of.h>
> #include <linux/of_irq.h>
> #include <linux/of_platform.h>
> #include <linux/pinctrl/consumer.h>
> @@ -521,7 +522,7 @@ static int mtk8250_probe(struct platform_device *pdev)
> struct uart_8250_port uart = {};
> struct mtk8250_data *data;
> struct resource *regs;
> - int irq, err;
> + int irq, err, line;
> struct fwnode_handle *fwnode = dev_fwnode(&pdev->dev);
>
> irq = platform_get_irq(pdev, 0);
> @@ -575,6 +576,10 @@ static int mtk8250_probe(struct platform_device *pdev)
> #endif
>
> if (is_of_node(fwnode)) {
> + line = of_alias_get_id(pdev->dev.of_node, "serial");
> + if (line >= 0)
> + uart.port.line = line;
> +
> /* Disable Rate Fix function */
> writel(0x0, uart.port.membase +
> (MTK_UART_RATE_FIX << uart.port.regshift));
>
> --
> 2.55.0
>
>
More information about the Linux-mediatek
mailing list