--- /dev/null
+From ae62c49c0ceff20dc7c1fad4a5b8f91d64b4f628 Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Wed, 17 May 2023 22:20:07 +0200
+Subject: serial: 8250: omap: convert to modern PM ops
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit ae62c49c0ceff20dc7c1fad4a5b8f91d64b4f628 upstream.
+
+The new uart_write() function is only called from suspend/resume code, causing
+a build warning when those are left out:
+
+drivers/tty/serial/8250/8250_omap.c:169:13: error: 'uart_write' defined but not used [-Werror=unused-function]
+
+Remove the #ifdefs and use the modern pm_ops/pm_sleep_ops and their wrappers
+to let the compiler see where it's used but still drop the dead code.
+
+Fixes: 398cecc24846 ("serial: 8250: omap: Fix imprecise external abort for omap_8250_pm()")
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Reviewed-by: Tony Lindgren <tony@atomide.com>
+Link: https://lore.kernel.org/r/20230517202012.634386-1-arnd@kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/tty/serial/8250/8250_omap.c | 17 +++++------------
+ 1 file changed, 5 insertions(+), 12 deletions(-)
+
+--- a/drivers/tty/serial/8250/8250_omap.c
++++ b/drivers/tty/serial/8250/8250_omap.c
+@@ -1503,7 +1503,6 @@ static int omap8250_remove(struct platfo
+ return 0;
+ }
+
+-#ifdef CONFIG_PM_SLEEP
+ static int omap8250_prepare(struct device *dev)
+ {
+ struct omap8250_priv *priv = dev_get_drvdata(dev);
+@@ -1563,12 +1562,7 @@ static int omap8250_resume(struct device
+
+ return 0;
+ }
+-#else
+-#define omap8250_prepare NULL
+-#define omap8250_complete NULL
+-#endif
+
+-#ifdef CONFIG_PM
+ static int omap8250_lost_context(struct uart_8250_port *up)
+ {
+ u32 val;
+@@ -1680,7 +1674,6 @@ static int omap8250_runtime_resume(struc
+ schedule_work(&priv->qos_work);
+ return 0;
+ }
+-#endif
+
+ #ifdef CONFIG_SERIAL_8250_OMAP_TTYO_FIXUP
+ static int __init omap8250_console_fixup(void)
+@@ -1723,17 +1716,17 @@ console_initcall(omap8250_console_fixup)
+ #endif
+
+ static const struct dev_pm_ops omap8250_dev_pm_ops = {
+- SET_SYSTEM_SLEEP_PM_OPS(omap8250_suspend, omap8250_resume)
+- SET_RUNTIME_PM_OPS(omap8250_runtime_suspend,
++ SYSTEM_SLEEP_PM_OPS(omap8250_suspend, omap8250_resume)
++ RUNTIME_PM_OPS(omap8250_runtime_suspend,
+ omap8250_runtime_resume, NULL)
+- .prepare = omap8250_prepare,
+- .complete = omap8250_complete,
++ .prepare = pm_sleep_ptr(omap8250_prepare),
++ .complete = pm_sleep_ptr(omap8250_complete),
+ };
+
+ static struct platform_driver omap8250_platform_driver = {
+ .driver = {
+ .name = "omap8250",
+- .pm = &omap8250_dev_pm_ops,
++ .pm = pm_ptr(&omap8250_dev_pm_ops),
+ .of_match_table = omap8250_dt_ids,
+ },
+ .probe = omap8250_probe,
--- /dev/null
+From c53aab20762255ee03e65dd66b3cba3887ad39d1 Mon Sep 17 00:00:00 2001
+From: Geert Uytterhoeven <geert@linux-m68k.org>
+Date: Mon, 15 May 2023 08:57:06 +0200
+Subject: serial: 8250: omap: Move uart_write() inside PM section
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Geert Uytterhoeven <geert@linux-m68k.org>
+
+commit c53aab20762255ee03e65dd66b3cba3887ad39d1 upstream.
+
+If CONFIG_PM is not set (e.g. m68k/allmodconfig):
+
+ drivers/tty/serial/8250/8250_omap.c:169:13: error: ‘uart_write’ defined but not used [-Werror=unused-function]
+ 169 | static void uart_write(struct omap8250_priv *priv, u32 reg, u32 val)
+ | ^~~~~~~~~~
+
+Fix tis by moving uart_write() inside the existing section protected
+by #ifdef CONFIG_PM.
+
+Reported-by: noreply@ellerman.id.au
+Link: http://kisskb.ellerman.id.au/kisskb/buildresult/14925095/
+Fixes: 398cecc24846e867 ("serial: 8250: omap: Fix imprecise external abort for omap_8250_pm()")
+Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
+Reviewed-by: Tony Lindgren <tony@atomide.com>
+Link: https://lore.kernel.org/r/20230515065706.1723477-1-geert@linux-m68k.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/tty/serial/8250/8250_omap.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+--- a/drivers/tty/serial/8250/8250_omap.c
++++ b/drivers/tty/serial/8250/8250_omap.c
+@@ -159,11 +159,6 @@ static u32 uart_read(struct omap8250_pri
+ return readl(priv->membase + (reg << OMAP_UART_REGSHIFT));
+ }
+
+-static void uart_write(struct omap8250_priv *priv, u32 reg, u32 val)
+-{
+- writel(val, priv->membase + (reg << OMAP_UART_REGSHIFT));
+-}
+-
+ /*
+ * Called on runtime PM resume path from omap8250_restore_regs(), and
+ * omap8250_set_mctrl().
+@@ -1589,6 +1584,11 @@ static int omap8250_lost_context(struct
+ return 0;
+ }
+
++static void uart_write(struct omap8250_priv *priv, u32 reg, u32 val)
++{
++ writel(val, priv->membase + (reg << OMAP_UART_REGSHIFT));
++}
++
+ /* TODO: in future, this should happen via API in drivers/reset/ */
+ static int omap8250_soft_reset(struct device *dev)
+ {