[PATCH] MEDIATEK: serial: 8250_mtk: Add ACPI support

Zhiyong Tao posted 1 patch 1 month ago
drivers/tty/serial/8250/8250_mtk.c | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
[PATCH] MEDIATEK: serial: 8250_mtk: Add ACPI support
Posted by Zhiyong Tao 1 month ago
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
Re: [PATCH] MEDIATEK: serial: 8250_mtk: Add ACPI support
Posted by Greg KH 3 weeks ago
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
Re: [PATCH] MEDIATEK: serial: 8250_mtk: Add ACPI support
Posted by Zhiyong Tao (陶志勇) 2 weeks, 3 days ago
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. 

Re: [PATCH] MEDIATEK: serial: 8250_mtk: Add ACPI support
Posted by Greg KH 1 month ago
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
Re: [PATCH] MEDIATEK: serial: 8250_mtk: Add ACPI support
Posted by Zhiyong Tao (陶志勇) 2 weeks, 2 days ago
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