Re: [PATCH v2 2/2] serial: 8250_mtk: honor DT serial aliases
Chen-Yu Tsai <[email protected]> Mon, 27 Jul 2026 17:39:10 +0800
| Newsgroups | org.kernel.vger.linux-serial,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mediatek,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CAGXv+5Et=hVYp74v8p5FhdrifjUotPbtp8XqyNuCV+NvJ_LMGw@mail.gmail.com> |
On Mon, Jul 27, 2026 at 3:40 PM Carlo Caione <[email protected]> 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 <[email protected]> Matches what is done in __uart_read_properties(), Reviewed-by: Chen-Yu Tsai <[email protected]> > --- > 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 > >