]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 5.15
authorSasha Levin <sashal@kernel.org>
Tue, 8 Apr 2025 00:42:39 +0000 (20:42 -0400)
committerSasha Levin <sashal@kernel.org>
Tue, 8 Apr 2025 00:42:39 +0000 (20:42 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-5.15/can-flexcan-disable-transceiver-during-system-pm.patch [new file with mode: 0644]
queue-5.15/can-flexcan-only-change-can-state-when-link-up-in-sy.patch [new file with mode: 0644]
queue-5.15/mmc-sdhci-brcmstb-add-ability-to-increase-max-clock-.patch [new file with mode: 0644]
queue-5.15/mmc-sdhci-brcmstb-add-cqhci-suspend-resume-to-pm-ops.patch [new file with mode: 0644]
queue-5.15/series
queue-5.15/tty-serial-fsl_lpuart-disable-transmitter-before-cha.patch [new file with mode: 0644]
queue-5.15/tty-serial-fsl_lpuart-use-uartmodir-register-bits-fo.patch [new file with mode: 0644]

diff --git a/queue-5.15/can-flexcan-disable-transceiver-during-system-pm.patch b/queue-5.15/can-flexcan-disable-transceiver-during-system-pm.patch
new file mode 100644 (file)
index 0000000..93392f7
--- /dev/null
@@ -0,0 +1,60 @@
+From 321caec66557a04b73cfd9f3f9e635a57026379b Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 14 Mar 2025 19:01:45 +0800
+Subject: can: flexcan: disable transceiver during system PM
+
+From: Haibo Chen <haibo.chen@nxp.com>
+
+[ Upstream commit 5a19143124be42900b3fbc9ada3c919632eb45eb ]
+
+During system PM, if no wakeup requirement, disable transceiver to
+save power.
+
+Fixes: 4de349e786a3 ("can: flexcan: fix resume function")
+Cc: stable@vger.kernel.org
+Reviewed-by: Frank Li <frank.li@nxp.com>
+Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
+Link: https://patch.msgid.link/20250314110145.899179-2-haibo.chen@nxp.com
+[mkl: add newlines]
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/can/flexcan.c | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
+index fc9cfe434ce4f..6f4e3e0330a45 100644
+--- a/drivers/net/can/flexcan.c
++++ b/drivers/net/can/flexcan.c
+@@ -2337,6 +2337,10 @@ static int __maybe_unused flexcan_suspend(struct device *device)
+                       flexcan_chip_interrupts_disable(dev);
++                      err = flexcan_transceiver_disable(priv);
++                      if (err)
++                              return err;
++
+                       err = pinctrl_pm_select_sleep_state(device);
+                       if (err)
+                               return err;
+@@ -2369,10 +2373,16 @@ static int __maybe_unused flexcan_resume(struct device *device)
+                       if (err)
+                               return err;
+-                      err = flexcan_chip_start(dev);
++                      err = flexcan_transceiver_enable(priv);
+                       if (err)
+                               return err;
++                      err = flexcan_chip_start(dev);
++                      if (err) {
++                              flexcan_transceiver_disable(priv);
++                              return err;
++                      }
++
+                       flexcan_chip_interrupts_enable(dev);
+               }
+-- 
+2.39.5
+
diff --git a/queue-5.15/can-flexcan-only-change-can-state-when-link-up-in-sy.patch b/queue-5.15/can-flexcan-only-change-can-state-when-link-up-in-sy.patch
new file mode 100644 (file)
index 0000000..f1b1eda
--- /dev/null
@@ -0,0 +1,75 @@
+From cd3b2593fac6cb023d2b8e1bc7848eaf3dafa270 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 14 Mar 2025 19:01:44 +0800
+Subject: can: flexcan: only change CAN state when link up in system PM
+
+From: Haibo Chen <haibo.chen@nxp.com>
+
+[ Upstream commit fd99d6ed20234b83d65b9c5417794343577cf3e5 ]
+
+After a suspend/resume cycle on a down interface, it will come up as
+ERROR-ACTIVE.
+
+$ ip -details -s -s a s dev flexcan0
+3: flexcan0: <NOARP,ECHO> mtu 16 qdisc pfifo_fast state DOWN group default qlen 10
+    link/can  promiscuity 0 allmulti 0 minmtu 0 maxmtu 0
+    can state STOPPED (berr-counter tx 0 rx 0) restart-ms 1000
+
+$ sudo systemctl suspend
+
+$ ip -details -s -s a s dev flexcan0
+3: flexcan0: <NOARP,ECHO> mtu 16 qdisc pfifo_fast state DOWN group default qlen 10
+    link/can  promiscuity 0 allmulti 0 minmtu 0 maxmtu 0
+    can state ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 1000
+
+And only set CAN state to CAN_STATE_ERROR_ACTIVE when resume process
+has no issue, otherwise keep in CAN_STATE_SLEEPING as suspend did.
+
+Fixes: 4de349e786a3 ("can: flexcan: fix resume function")
+Cc: stable@vger.kernel.org
+Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
+Link: https://patch.msgid.link/20250314110145.899179-1-haibo.chen@nxp.com
+Reported-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Closes: https://lore.kernel.org/all/20250314-married-polar-elephant-b15594-mkl@pengutronix.de
+[mkl: add newlines]
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/can/flexcan.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
+index 837bca7347594..fc9cfe434ce4f 100644
+--- a/drivers/net/can/flexcan.c
++++ b/drivers/net/can/flexcan.c
+@@ -2343,8 +2343,9 @@ static int __maybe_unused flexcan_suspend(struct device *device)
+               }
+               netif_stop_queue(dev);
+               netif_device_detach(dev);
++
++              priv->can.state = CAN_STATE_SLEEPING;
+       }
+-      priv->can.state = CAN_STATE_SLEEPING;
+       return 0;
+ }
+@@ -2355,7 +2356,6 @@ static int __maybe_unused flexcan_resume(struct device *device)
+       struct flexcan_priv *priv = netdev_priv(dev);
+       int err;
+-      priv->can.state = CAN_STATE_ERROR_ACTIVE;
+       if (netif_running(dev)) {
+               netif_device_attach(dev);
+               netif_start_queue(dev);
+@@ -2375,6 +2375,8 @@ static int __maybe_unused flexcan_resume(struct device *device)
+                       flexcan_chip_interrupts_enable(dev);
+               }
++
++              priv->can.state = CAN_STATE_ERROR_ACTIVE;
+       }
+       return 0;
+-- 
+2.39.5
+
diff --git a/queue-5.15/mmc-sdhci-brcmstb-add-ability-to-increase-max-clock-.patch b/queue-5.15/mmc-sdhci-brcmstb-add-ability-to-increase-max-clock-.patch
new file mode 100644 (file)
index 0000000..3a55fec
--- /dev/null
@@ -0,0 +1,148 @@
+From 5109b016cf0579e759d49ae3b89b52609e5da271 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 20 May 2022 14:31:08 -0400
+Subject: mmc: sdhci-brcmstb: Add ability to increase max clock rate for
+ 72116b0
+
+From: Kamal Dasu <kdasu.kdev@gmail.com>
+
+[ Upstream commit 97904a59855c7ac7c613085bc6bdc550d48524ff ]
+
+The 72116B0 has improved SDIO controllers that allow the max clock
+rate to be increased from a max of 100MHz to a max of 150MHz. The
+driver will need to get the clock and increase it's default rate
+and override the caps register, that still indicates a max of 100MHz.
+The new clock will be named "sdio_freq" in the DT node's "clock-names"
+list. The driver will use a DT property, "clock-frequency", to
+enable this functionality and will get the actual rate in MHz
+from the property to allow various speeds to be requested.
+
+Signed-off-by: Al Cooper <alcooperx@gmail.com>
+Signed-off-by: Kamal Dasu <kdasu.kdev@gmail.com>
+Acked-by: Florian Fainelli <f.fainelli@gmail.com>
+Link: https://lore.kernel.org/r/20220520183108.47358-3-kdasu.kdev@gmail.com
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+Stable-dep-of: 723ef0e20dbb ("mmc: sdhci-brcmstb: add cqhci suspend/resume to PM ops")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/mmc/host/sdhci-brcmstb.c | 69 +++++++++++++++++++++++++++++++-
+ 1 file changed, 68 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
+index 4d42b1810acea..8fb23b1228875 100644
+--- a/drivers/mmc/host/sdhci-brcmstb.c
++++ b/drivers/mmc/host/sdhci-brcmstb.c
+@@ -32,6 +32,8 @@
+ struct sdhci_brcmstb_priv {
+       void __iomem *cfg_regs;
+       unsigned int flags;
++      struct clk *base_clk;
++      u32 base_freq_hz;
+ };
+ struct brcmstb_match_priv {
+@@ -251,9 +253,11 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)
+       struct sdhci_pltfm_host *pltfm_host;
+       const struct of_device_id *match;
+       struct sdhci_brcmstb_priv *priv;
++      u32 actual_clock_mhz;
+       struct sdhci_host *host;
+       struct resource *iomem;
+       struct clk *clk;
++      struct clk *base_clk;
+       int res;
+       match = of_match_node(sdhci_brcm_of_match, pdev->dev.of_node);
+@@ -331,6 +335,35 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)
+       if (match_priv->flags & BRCMSTB_MATCH_FLAGS_BROKEN_TIMEOUT)
+               host->quirks |= SDHCI_QUIRK_BROKEN_TIMEOUT_VAL;
++      /* Change the base clock frequency if the DT property exists */
++      if (device_property_read_u32(&pdev->dev, "clock-frequency",
++                                   &priv->base_freq_hz) != 0)
++              goto add_host;
++
++      base_clk = devm_clk_get_optional(&pdev->dev, "sdio_freq");
++      if (IS_ERR(base_clk)) {
++              dev_warn(&pdev->dev, "Clock for \"sdio_freq\" not found\n");
++              goto add_host;
++      }
++
++      res = clk_prepare_enable(base_clk);
++      if (res)
++              goto err;
++
++      /* set improved clock rate */
++      clk_set_rate(base_clk, priv->base_freq_hz);
++      actual_clock_mhz = clk_get_rate(base_clk) / 1000000;
++
++      host->caps &= ~SDHCI_CLOCK_V3_BASE_MASK;
++      host->caps |= (actual_clock_mhz << SDHCI_CLOCK_BASE_SHIFT);
++      /* Disable presets because they are now incorrect */
++      host->quirks2 |= SDHCI_QUIRK2_PRESET_VALUE_BROKEN;
++
++      dev_dbg(&pdev->dev, "Base Clock Frequency changed to %dMHz\n",
++              actual_clock_mhz);
++      priv->base_clk = base_clk;
++
++add_host:
+       res = sdhci_brcmstb_add_host(host, priv);
+       if (res)
+               goto err;
+@@ -341,6 +374,7 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)
+ err:
+       sdhci_pltfm_free(pdev);
+ err_clk:
++      clk_disable_unprepare(base_clk);
+       clk_disable_unprepare(clk);
+       return res;
+ }
+@@ -352,11 +386,44 @@ static void sdhci_brcmstb_shutdown(struct platform_device *pdev)
+ MODULE_DEVICE_TABLE(of, sdhci_brcm_of_match);
++#ifdef CONFIG_PM_SLEEP
++static int sdhci_brcmstb_suspend(struct device *dev)
++{
++      struct sdhci_host *host = dev_get_drvdata(dev);
++      struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
++      struct sdhci_brcmstb_priv *priv = sdhci_pltfm_priv(pltfm_host);
++
++      clk_disable_unprepare(priv->base_clk);
++      return sdhci_pltfm_suspend(dev);
++}
++
++static int sdhci_brcmstb_resume(struct device *dev)
++{
++      struct sdhci_host *host = dev_get_drvdata(dev);
++      struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
++      struct sdhci_brcmstb_priv *priv = sdhci_pltfm_priv(pltfm_host);
++      int ret;
++
++      ret = sdhci_pltfm_resume(dev);
++      if (!ret && priv->base_freq_hz) {
++              ret = clk_prepare_enable(priv->base_clk);
++              if (!ret)
++                      ret = clk_set_rate(priv->base_clk, priv->base_freq_hz);
++      }
++
++      return ret;
++}
++#endif
++
++static const struct dev_pm_ops sdhci_brcmstb_pmops = {
++      SET_SYSTEM_SLEEP_PM_OPS(sdhci_brcmstb_suspend, sdhci_brcmstb_resume)
++};
++
+ static struct platform_driver sdhci_brcmstb_driver = {
+       .driver         = {
+               .name   = "sdhci-brcmstb",
+               .probe_type = PROBE_PREFER_ASYNCHRONOUS,
+-              .pm     = &sdhci_pltfm_pmops,
++              .pm     = &sdhci_brcmstb_pmops,
+               .of_match_table = of_match_ptr(sdhci_brcm_of_match),
+       },
+       .probe          = sdhci_brcmstb_probe,
+-- 
+2.39.5
+
diff --git a/queue-5.15/mmc-sdhci-brcmstb-add-cqhci-suspend-resume-to-pm-ops.patch b/queue-5.15/mmc-sdhci-brcmstb-add-cqhci-suspend-resume-to-pm-ops.patch
new file mode 100644 (file)
index 0000000..fdc7a5a
--- /dev/null
@@ -0,0 +1,62 @@
+From ab60e01bfd987def3a970750e9726a053bec2654 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 11 Mar 2025 12:59:35 -0400
+Subject: mmc: sdhci-brcmstb: add cqhci suspend/resume to PM ops
+
+From: Kamal Dasu <kamal.dasu@broadcom.com>
+
+[ Upstream commit 723ef0e20dbb2aa1b5406d2bb75374fc48187daa ]
+
+cqhci timeouts observed on brcmstb platforms during suspend:
+  ...
+  [  164.832853] mmc0: cqhci: timeout for tag 18
+  ...
+
+Adding cqhci_suspend()/resume() calls to disable cqe
+in sdhci_brcmstb_suspend()/resume() respectively to fix
+CQE timeouts seen on PM suspend.
+
+Fixes: d46ba2d17f90 ("mmc: sdhci-brcmstb: Add support for Command Queuing (CQE)")
+Cc: stable@vger.kernel.org
+Signed-off-by: Kamal Dasu <kamal.dasu@broadcom.com>
+Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
+Link: https://lore.kernel.org/r/20250311165946.28190-1-kamal.dasu@broadcom.com
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/mmc/host/sdhci-brcmstb.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
+index 8fb23b1228875..21574f0607f8b 100644
+--- a/drivers/mmc/host/sdhci-brcmstb.c
++++ b/drivers/mmc/host/sdhci-brcmstb.c
+@@ -392,8 +392,15 @@ static int sdhci_brcmstb_suspend(struct device *dev)
+       struct sdhci_host *host = dev_get_drvdata(dev);
+       struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
+       struct sdhci_brcmstb_priv *priv = sdhci_pltfm_priv(pltfm_host);
++      int ret;
+       clk_disable_unprepare(priv->base_clk);
++      if (host->mmc->caps2 & MMC_CAP2_CQE) {
++              ret = cqhci_suspend(host->mmc);
++              if (ret)
++                      return ret;
++      }
++
+       return sdhci_pltfm_suspend(dev);
+ }
+@@ -411,6 +418,9 @@ static int sdhci_brcmstb_resume(struct device *dev)
+                       ret = clk_set_rate(priv->base_clk, priv->base_freq_hz);
+       }
++      if (host->mmc->caps2 & MMC_CAP2_CQE)
++              ret = cqhci_resume(host->mmc);
++
+       return ret;
+ }
+ #endif
+-- 
+2.39.5
+
index 4f2dddc23cc96ea5a83b91c7282837898afd4df7..c9e20005bc9ece8d5e1b92210b2c783df8c8ebe3 100644 (file)
@@ -248,3 +248,9 @@ netfilter-nft_tunnel-fix-geneve_opt-type-confusion-a.patch
 ipv6-fix-omitted-netlink-attributes-when-using-rtext.patch
 net-fix-geneve_opt-length-integer-overflow.patch
 arcnet-add-null-check-in-com20020pci_probe.patch
+can-flexcan-only-change-can-state-when-link-up-in-sy.patch
+can-flexcan-disable-transceiver-during-system-pm.patch
+mmc-sdhci-brcmstb-add-ability-to-increase-max-clock-.patch
+mmc-sdhci-brcmstb-add-cqhci-suspend-resume-to-pm-ops.patch
+tty-serial-fsl_lpuart-use-uartmodir-register-bits-fo.patch
+tty-serial-fsl_lpuart-disable-transmitter-before-cha.patch
diff --git a/queue-5.15/tty-serial-fsl_lpuart-disable-transmitter-before-cha.patch b/queue-5.15/tty-serial-fsl_lpuart-disable-transmitter-before-cha.patch
new file mode 100644 (file)
index 0000000..9f5ad62
--- /dev/null
@@ -0,0 +1,64 @@
+From e79cbc148385527147a1c0c5d34b8b2661f3364e Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 12 Mar 2025 10:25:03 +0800
+Subject: tty: serial: fsl_lpuart: disable transmitter before changing RS485
+ related registers
+
+From: Sherry Sun <sherry.sun@nxp.com>
+
+[ Upstream commit f5cb528d6441eb860250a2f085773aac4f44085e ]
+
+According to the LPUART reference manual, TXRTSE and TXRTSPOL of MODIR
+register only can be changed when the transmitter is disabled.
+So disable the transmitter before changing RS485 related registers and
+re-enable it after the change is done.
+
+Fixes: 67b01837861c ("tty: serial: lpuart: Add RS485 support for 32-bit uart flavour")
+Cc: stable <stable@kernel.org>
+Signed-off-by: Sherry Sun <sherry.sun@nxp.com>
+Reviewed-by: Frank Li <Frank.Li@nxp.com>
+Link: https://lore.kernel.org/r/20250312022503.1342990-1-sherry.sun@nxp.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/tty/serial/fsl_lpuart.c | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c
+index fe1fba335483f..6684f6512fb16 100644
+--- a/drivers/tty/serial/fsl_lpuart.c
++++ b/drivers/tty/serial/fsl_lpuart.c
+@@ -1397,6 +1397,19 @@ static int lpuart32_config_rs485(struct uart_port *port,
+       unsigned long modem = lpuart32_read(&sport->port, UARTMODIR)
+                               & ~(UARTMODIR_TXRTSPOL | UARTMODIR_TXRTSE);
++      u32 ctrl;
++
++      /* TXRTSE and TXRTSPOL only can be changed when transmitter is disabled. */
++      ctrl = lpuart32_read(&sport->port, UARTCTRL);
++      if (ctrl & UARTCTRL_TE) {
++              /* wait for the transmit engine to complete */
++              lpuart32_wait_bit_set(&sport->port, UARTSTAT, UARTSTAT_TC);
++              lpuart32_write(&sport->port, ctrl & ~UARTCTRL_TE, UARTCTRL);
++
++              while (lpuart32_read(&sport->port, UARTCTRL) & UARTCTRL_TE)
++                      cpu_relax();
++      }
++
+       lpuart32_write(&sport->port, modem, UARTMODIR);
+       /* clear unsupported configurations */
+@@ -1437,6 +1450,10 @@ static int lpuart32_config_rs485(struct uart_port *port,
+       sport->port.rs485 = *rs485;
+       lpuart32_write(&sport->port, modem, UARTMODIR);
++
++      if (ctrl & UARTCTRL_TE)
++              lpuart32_write(&sport->port, ctrl, UARTCTRL);
++
+       return 0;
+ }
+-- 
+2.39.5
+
diff --git a/queue-5.15/tty-serial-fsl_lpuart-use-uartmodir-register-bits-fo.patch b/queue-5.15/tty-serial-fsl_lpuart-use-uartmodir-register-bits-fo.patch
new file mode 100644 (file)
index 0000000..4b70761
--- /dev/null
@@ -0,0 +1,64 @@
+From f5fcad19d4aa74ca69b84befa67f9d66f5b50c06 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 14 Apr 2023 10:21:11 +0800
+Subject: tty: serial: fsl_lpuart: use UARTMODIR register bits for lpuart32
+ platform
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Sherry Sun <sherry.sun@nxp.com>
+
+[ Upstream commit d57d56e4dddfb5c92cd81abf8922055bf0fb85a4 ]
+
+For lpuart32 platforms, UARTMODIR register is used instead of UARTMODEM.
+So here should configure the corresponding UARTMODIR register bits to
+avoid confusion.
+
+Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
+Signed-off-by: Sherry Sun <sherry.sun@nxp.com>
+Link: https://lore.kernel.org/r/20230414022111.20896-1-sherry.sun@nxp.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Stable-dep-of: f5cb528d6441 ("tty: serial: fsl_lpuart: disable transmitter before changing RS485 related registers")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/tty/serial/fsl_lpuart.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c
+index 9f1be9ce47e03..fe1fba335483f 100644
+--- a/drivers/tty/serial/fsl_lpuart.c
++++ b/drivers/tty/serial/fsl_lpuart.c
+@@ -1396,7 +1396,7 @@ static int lpuart32_config_rs485(struct uart_port *port,
+                       struct lpuart_port, port);
+       unsigned long modem = lpuart32_read(&sport->port, UARTMODIR)
+-                              & ~(UARTMODEM_TXRTSPOL | UARTMODEM_TXRTSE);
++                              & ~(UARTMODIR_TXRTSPOL | UARTMODIR_TXRTSE);
+       lpuart32_write(&sport->port, modem, UARTMODIR);
+       /* clear unsupported configurations */
+@@ -1406,7 +1406,7 @@ static int lpuart32_config_rs485(struct uart_port *port,
+       if (rs485->flags & SER_RS485_ENABLED) {
+               /* Enable auto RS-485 RTS mode */
+-              modem |= UARTMODEM_TXRTSE;
++              modem |= UARTMODIR_TXRTSE;
+               /*
+                * RTS needs to be logic HIGH either during transfer _or_ after
+@@ -1428,9 +1428,9 @@ static int lpuart32_config_rs485(struct uart_port *port,
+                * Note: UART is assumed to be active high.
+                */
+               if (rs485->flags & SER_RS485_RTS_ON_SEND)
+-                      modem |= UARTMODEM_TXRTSPOL;
++                      modem |= UARTMODIR_TXRTSPOL;
+               else if (rs485->flags & SER_RS485_RTS_AFTER_SEND)
+-                      modem &= ~UARTMODEM_TXRTSPOL;
++                      modem &= ~UARTMODIR_TXRTSPOL;
+       }
+       /* Store the new configuration */
+-- 
+2.39.5
+