drivers/tty/serial/8250/8250_mtk.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-)
From: "Zhiyong.Tao" <zhiyong.tao@mediatek.com>
Add ACPI support to 8250_mtk driver. This makes it possible to
use UART on ARM-based desktops with EDK2 UEFI firmware.
Signed-off-by: Yenchia Chen <yenchia.chen@mediatek.com>
Signed-off-by: Zhiyong.Tao <zhiyong.tao@mediatek.com>
---
drivers/tty/serial/8250/8250_mtk.c | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/drivers/tty/serial/8250/8250_mtk.c b/drivers/tty/serial/8250/8250_mtk.c
index 5875a7b9b4b1..e6a56cf54ae0 100644
--- a/drivers/tty/serial/8250/8250_mtk.c
+++ b/drivers/tty/serial/8250/8250_mtk.c
@@ -19,6 +19,7 @@
#include <linux/dma-mapping.h>
#include <linux/tty.h>
#include <linux/tty_flip.h>
+#include <linux/units.h>
#include "8250.h"
@@ -521,6 +522,7 @@ static int mtk8250_probe(struct platform_device *pdev)
struct mtk8250_data *data;
struct resource *regs;
int irq, err;
+ struct fwnode_handle *fwnode = dev_fwnode(&pdev->dev);
irq = platform_get_irq(pdev, 0);
if (irq < 0)
@@ -543,12 +545,13 @@ static int mtk8250_probe(struct platform_device *pdev)
data->clk_count = 0;
- if (pdev->dev.of_node) {
+ if (is_of_node(fwnode)) {
err = mtk8250_probe_of(pdev, &uart.port, data);
if (err)
return err;
- } else
+ } else if (!fwnode) {
return -ENODEV;
+ }
spin_lock_init(&uart.port.lock);
uart.port.mapbase = regs->start;
@@ -564,14 +567,18 @@ static int mtk8250_probe(struct platform_device *pdev)
uart.port.startup = mtk8250_startup;
uart.port.set_termios = mtk8250_set_termios;
uart.port.uartclk = clk_get_rate(data->uart_clk);
+ if (!uart.port.uartclk)
+ uart.port.uartclk = 26 * HZ_PER_MHZ;
#ifdef CONFIG_SERIAL_8250_DMA
if (data->dma)
uart.dma = data->dma;
#endif
- /* Disable Rate Fix function */
- writel(0x0, uart.port.membase +
+ if (is_of_node(fwnode)) {
+ /* Disable Rate Fix function */
+ writel(0x0, uart.port.membase +
(MTK_UART_RATE_FIX << uart.port.regshift));
+ }
platform_set_drvdata(pdev, data);
@@ -649,11 +656,19 @@ static const struct of_device_id mtk8250_of_match[] = {
};
MODULE_DEVICE_TABLE(of, mtk8250_of_match);
+static const struct acpi_device_id mtk8250_acpi_match[] = {
+ { "MTKI0511" },
+ { "NVDA0240" },
+ {}
+};
+MODULE_DEVICE_TABLE(acpi, mtk8250_acpi_match);
+
static struct platform_driver mtk8250_platform_driver = {
.driver = {
.name = "mt6577-uart",
.pm = &mtk8250_pm_ops,
.of_match_table = mtk8250_of_match,
+ .acpi_match_table = mtk8250_acpi_match,
},
.probe = mtk8250_probe,
.remove = mtk8250_remove,
--
2.45.2
On Mon, Jan 05, 2026 at 10:39:55AM +0800, Zhiyong Tao wrote: > From: "Zhiyong.Tao" <zhiyong.tao@mediatek.com> > > Add ACPI support to 8250_mtk driver. This makes it possible to > use UART on ARM-based desktops with EDK2 UEFI firmware. > > Signed-off-by: Yenchia Chen <yenchia.chen@mediatek.com> > Signed-off-by: Zhiyong.Tao <zhiyong.tao@mediatek.com> Please use your name, not '.' in it, like your email has. Yenchia did it properly here. thanks, greg k-h
On Fri, 2026-01-16 at 14:20 +0100, Greg KH wrote: > On Mon, Jan 05, 2026 at 10:39:55AM +0800, Zhiyong Tao wrote: > > From: "Zhiyong.Tao" <zhiyong.tao@mediatek.com> > > > > Add ACPI support to 8250_mtk driver. This makes it possible to > > use UART on ARM-based desktops with EDK2 UEFI firmware. > > > > Signed-off-by: Yenchia Chen <yenchia.chen@mediatek.com> > > Signed-off-by: Zhiyong.Tao <zhiyong.tao@mediatek.com> > > Please use your name, not '.' in it, like your email has. Yenchia > did > it properly here. > > thanks, > > greg k-h > > ==> Thank you for your suggestion. I will fix this change in the next > version.
On Mon, Jan 05, 2026 at 10:39:55AM +0800, Zhiyong Tao wrote: > From: "Zhiyong.Tao" <zhiyong.tao@mediatek.com> > > Add ACPI support to 8250_mtk driver. This makes it possible to > use UART on ARM-based desktops with EDK2 UEFI firmware. > > Signed-off-by: Yenchia Chen <yenchia.chen@mediatek.com> > Signed-off-by: Zhiyong.Tao <zhiyong.tao@mediatek.com> > --- > drivers/tty/serial/8250/8250_mtk.c | 23 +++++++++++++++++++---- > 1 file changed, 19 insertions(+), 4 deletions(-) This is a resend of the previous version, right? Or did something change? confused, greg k-h
On Tue, 2026-01-06 at 11:02 +0100, Greg KH wrote: > On Mon, Jan 05, 2026 at 10:39:55AM +0800, Zhiyong Tao wrote: > > From: "Zhiyong.Tao" <zhiyong.tao@mediatek.com> > > > > Add ACPI support to 8250_mtk driver. This makes it possible to > > use UART on ARM-based desktops with EDK2 UEFI firmware. > > > > Signed-off-by: Yenchia Chen <yenchia.chen@mediatek.com> > > Signed-off-by: Zhiyong.Tao <zhiyong.tao@mediatek.com> > > --- > > drivers/tty/serial/8250/8250_mtk.c | 23 +++++++++++++++++++---- > > 1 file changed, 19 insertions(+), 4 deletions(-) > > This is a resend of the previous version, right? Or did something > change? > > confused, > > greg k-h ==> Hi Greg, Yes, previously Yenchia Chen helped to send out a version. Currently, this solution is specifically for the GB10 project and was made to support Windows ACPI settings. In actual application scenarios, the apdma clk will not be turned off in normal mode. It is only turned off in the SSPM microprocessor after entering standby, and when resuming, the apdma clk is re-enabled by SSPM. As for other Linux projects, apdma still uses the DTS node. Thanks
© 2016 - 2026 Red Hat, Inc.