From 50085708b80f44ea2d1de3a2208f29146a5347a1 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Mon, 7 Apr 2025 20:42:39 -0400 Subject: [PATCH] Fixes for 6.1 Signed-off-by: Sasha Levin --- queue-6.1/drm-amdgpu-gfx11-fix-num_mec.patch | 35 ++++++++++ queue-6.1/series | 3 + ...puart-disable-transmitter-before-cha.patch | 64 +++++++++++++++++++ ...puart-use-uartmodir-register-bits-fo.patch | 61 ++++++++++++++++++ 4 files changed, 163 insertions(+) create mode 100644 queue-6.1/drm-amdgpu-gfx11-fix-num_mec.patch create mode 100644 queue-6.1/tty-serial-fsl_lpuart-disable-transmitter-before-cha.patch create mode 100644 queue-6.1/tty-serial-fsl_lpuart-use-uartmodir-register-bits-fo.patch diff --git a/queue-6.1/drm-amdgpu-gfx11-fix-num_mec.patch b/queue-6.1/drm-amdgpu-gfx11-fix-num_mec.patch new file mode 100644 index 0000000000..fe151b60c9 --- /dev/null +++ b/queue-6.1/drm-amdgpu-gfx11-fix-num_mec.patch @@ -0,0 +1,35 @@ +From 17cec6e226cc96f571217eff783ae61574e78697 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 26 Mar 2025 09:35:02 -0400 +Subject: drm/amdgpu/gfx11: fix num_mec + +From: Alex Deucher + +[ Upstream commit 4161050d47e1b083a7e1b0b875c9907e1a6f1f1f ] + +GC11 only has 1 mec. + +Fixes: 3d879e81f0f9 ("drm/amdgpu: add init support for GFX11 (v2)") +Reviewed-by: Sunil Khatri +Signed-off-by: Alex Deucher +Signed-off-by: Sasha Levin +--- + drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c +index c76895cca4d9a..61e869839641e 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c +@@ -1301,7 +1301,7 @@ static int gfx_v11_0_sw_init(void *handle) + adev->gfx.me.num_me = 1; + adev->gfx.me.num_pipe_per_me = 1; + adev->gfx.me.num_queue_per_pipe = 1; +- adev->gfx.mec.num_mec = 2; ++ adev->gfx.mec.num_mec = 1; + adev->gfx.mec.num_pipe_per_mec = 4; + adev->gfx.mec.num_queue_per_pipe = 4; + break; +-- +2.39.5 + diff --git a/queue-6.1/series b/queue-6.1/series index 61e0f62150..bdf0eb3194 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -167,3 +167,6 @@ ipv6-start-path-selection-from-the-first-nexthop.patch ipv6-do-not-consider-link-down-nexthops-in-path-sele.patch arcnet-add-null-check-in-com20020pci_probe.patch io_uring-filetable-ensure-node-switch-is-always-done-if-needed.patch +drm-amdgpu-gfx11-fix-num_mec.patch +tty-serial-fsl_lpuart-use-uartmodir-register-bits-fo.patch +tty-serial-fsl_lpuart-disable-transmitter-before-cha.patch diff --git a/queue-6.1/tty-serial-fsl_lpuart-disable-transmitter-before-cha.patch b/queue-6.1/tty-serial-fsl_lpuart-disable-transmitter-before-cha.patch new file mode 100644 index 0000000000..c921adffcb --- /dev/null +++ b/queue-6.1/tty-serial-fsl_lpuart-disable-transmitter-before-cha.patch @@ -0,0 +1,64 @@ +From c8a2feb2ebba20acafe1482a3cd59e6d6ed507f4 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 12 Mar 2025 10:25:03 +0800 +Subject: tty: serial: fsl_lpuart: disable transmitter before changing RS485 + related registers + +From: Sherry Sun + +[ 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 +Signed-off-by: Sherry Sun +Reviewed-by: Frank Li +Link: https://lore.kernel.org/r/20250312022503.1342990-1-sherry.sun@nxp.com +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Sasha Levin +--- + 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 e96354edff6e9..011f175936132 100644 +--- a/drivers/tty/serial/fsl_lpuart.c ++++ b/drivers/tty/serial/fsl_lpuart.c +@@ -1395,6 +1395,19 @@ static int lpuart32_config_rs485(struct uart_port *port, struct ktermios *termio + + 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); + + if (rs485->flags & SER_RS485_ENABLED) { +@@ -1414,6 +1427,10 @@ static int lpuart32_config_rs485(struct uart_port *port, struct ktermios *termio + } + + 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-6.1/tty-serial-fsl_lpuart-use-uartmodir-register-bits-fo.patch b/queue-6.1/tty-serial-fsl_lpuart-use-uartmodir-register-bits-fo.patch new file mode 100644 index 0000000000..0da5da2f3c --- /dev/null +++ b/queue-6.1/tty-serial-fsl_lpuart-use-uartmodir-register-bits-fo.patch @@ -0,0 +1,61 @@ +From ba320864b335b3037845cf34938a66e42a25e5be Mon Sep 17 00:00:00 2001 +From: Sasha Levin +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 + +[ 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 +Signed-off-by: Sherry Sun +Link: https://lore.kernel.org/r/20230414022111.20896-1-sherry.sun@nxp.com +Signed-off-by: Greg Kroah-Hartman +Stable-dep-of: f5cb528d6441 ("tty: serial: fsl_lpuart: disable transmitter before changing RS485 related registers") +Signed-off-by: Sasha Levin +--- + 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 f94c782638686..e96354edff6e9 100644 +--- a/drivers/tty/serial/fsl_lpuart.c ++++ b/drivers/tty/serial/fsl_lpuart.c +@@ -1394,12 +1394,12 @@ static int lpuart32_config_rs485(struct uart_port *port, struct ktermios *termio + 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); + + if (rs485->flags & SER_RS485_ENABLED) { + /* Enable auto RS-485 RTS mode */ +- modem |= UARTMODEM_TXRTSE; ++ modem |= UARTMODIR_TXRTSE; + + /* + * The hardware defaults to RTS logic HIGH while transfer. +@@ -1408,9 +1408,9 @@ static int lpuart32_config_rs485(struct uart_port *port, struct ktermios *termio + * 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; + } + + lpuart32_write(&sport->port, modem, UARTMODIR); +-- +2.39.5 + -- 2.47.3