+++ /dev/null
-From f806eacaafd4c9acb429d6421d0ca06dd76e2db8 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 25 Apr 2022 17:33:58 +0300
-Subject: serial: Store character timing information to uart_port
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
-
-[ Upstream commit 31f6bd7fad3b149a1eb6f67fc2e742e4df369b3d ]
-
-Struct uart_port currently stores FIFO timeout. Having character timing
-information readily available is useful. Even serial core itself
-determines char_time from port->timeout using inverse calculation.
-
-Store frame_time directly into uart_port. Character time is stored in
-nanoseconds to have reasonable precision with high rates. To avoid
-overflow, 64-bit math is necessary.
-
-It might be possible to determine timeout from frame_time by
-multiplying it with fifosize as needed but only part of the users seem
-to be protected by a lock. Thus, this patch does not pursue storing
-only frame_time in uart_port.
-
-Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
-Link: https://lore.kernel.org/r/20220425143410.12703-2-ilpo.jarvinen@linux.intel.com
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/tty/serial/serial_core.c | 14 ++++++++------
- include/linux/serial_core.h | 1 +
- 2 files changed, 9 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
-index 82ddbb92d07d..cdc2f40ccd8b 100644
---- a/drivers/tty/serial/serial_core.c
-+++ b/drivers/tty/serial/serial_core.c
-@@ -24,6 +24,7 @@
- #include <linux/sysrq.h>
- #include <linux/delay.h>
- #include <linux/mutex.h>
-+#include <linux/math64.h>
- #include <linux/security.h>
-
- #include <linux/irq.h>
-@@ -333,15 +334,18 @@ void
- uart_update_timeout(struct uart_port *port, unsigned int cflag,
- unsigned int baud)
- {
-- unsigned int size;
-+ unsigned int size = tty_get_frame_size(cflag);
-+ u64 frame_time;
-
-- size = tty_get_frame_size(cflag) * port->fifosize;
-+ frame_time = (u64)size * NSEC_PER_SEC;
-+ size *= port->fifosize;
-
- /*
- * Figure the timeout to send the above number of bits.
- * Add .02 seconds of slop
- */
- port->timeout = (HZ * size) / baud + HZ/50;
-+ port->frame_time = DIV64_U64_ROUND_UP(frame_time, baud);
- }
-
- EXPORT_SYMBOL(uart_update_timeout);
-@@ -1614,10 +1618,8 @@ static void uart_wait_until_sent(struct tty_struct *tty, int timeout)
- * Note: we have to use pretty tight timings here to satisfy
- * the NIST-PCTS.
- */
-- char_time = (port->timeout - HZ/50) / port->fifosize;
-- char_time = char_time / 5;
-- if (char_time == 0)
-- char_time = 1;
-+ char_time = max(nsecs_to_jiffies(port->frame_time / 5), 1UL);
-+
- if (timeout && timeout < char_time)
- char_time = timeout;
-
-diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
-index 6d07b5f9e3b8..0b38d682d360 100644
---- a/include/linux/serial_core.h
-+++ b/include/linux/serial_core.h
-@@ -232,6 +232,7 @@ struct uart_port {
- int hw_stopped; /* sw-assisted CTS flow state */
- unsigned int mctrl; /* current modem ctrl settings */
- unsigned int timeout; /* character-based timeout */
-+ unsigned int frame_time; /* frame timing in ns */
- unsigned int type; /* port type */
- const struct uart_ops *ops;
- unsigned int custom_divisor;
---
-2.35.1
-
asoc-mt6797-mt6351-fix-refcount-leak-in-mt6797_mt635.patch
asoc-codecs-da7210-add-check-for-i2c_add_driver.patch
asoc-mediatek-mt8173-rt5650-fix-refcount-leak-in-mt8.patch
-serial-store-character-timing-information-to-uart_po.patch
serial-8250-export-icr-access-helpers-for-internal-u.patch
serial-8250-dma-allow-driver-operations-before-start.patch
serial-8250_dw-store-lsr-into-lsr_saved_flags-in-dw8.patch
+++ /dev/null
-From 5517053a2e0b30a1e35f90504446af4a2c4920e8 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 25 Apr 2022 17:33:58 +0300
-Subject: serial: Store character timing information to uart_port
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
-
-[ Upstream commit 31f6bd7fad3b149a1eb6f67fc2e742e4df369b3d ]
-
-Struct uart_port currently stores FIFO timeout. Having character timing
-information readily available is useful. Even serial core itself
-determines char_time from port->timeout using inverse calculation.
-
-Store frame_time directly into uart_port. Character time is stored in
-nanoseconds to have reasonable precision with high rates. To avoid
-overflow, 64-bit math is necessary.
-
-It might be possible to determine timeout from frame_time by
-multiplying it with fifosize as needed but only part of the users seem
-to be protected by a lock. Thus, this patch does not pursue storing
-only frame_time in uart_port.
-
-Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
-Link: https://lore.kernel.org/r/20220425143410.12703-2-ilpo.jarvinen@linux.intel.com
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/tty/serial/serial_core.c | 14 ++++++++------
- include/linux/serial_core.h | 1 +
- 2 files changed, 9 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
-index 95d8d1fcd543..6b07b7b41354 100644
---- a/drivers/tty/serial/serial_core.c
-+++ b/drivers/tty/serial/serial_core.c
-@@ -24,6 +24,7 @@
- #include <linux/sysrq.h>
- #include <linux/delay.h>
- #include <linux/mutex.h>
-+#include <linux/math64.h>
- #include <linux/security.h>
-
- #include <linux/irq.h>
-@@ -333,15 +334,18 @@ void
- uart_update_timeout(struct uart_port *port, unsigned int cflag,
- unsigned int baud)
- {
-- unsigned int size;
-+ unsigned int size = tty_get_frame_size(cflag);
-+ u64 frame_time;
-
-- size = tty_get_frame_size(cflag) * port->fifosize;
-+ frame_time = (u64)size * NSEC_PER_SEC;
-+ size *= port->fifosize;
-
- /*
- * Figure the timeout to send the above number of bits.
- * Add .02 seconds of slop
- */
- port->timeout = (HZ * size) / baud + HZ/50;
-+ port->frame_time = DIV64_U64_ROUND_UP(frame_time, baud);
- }
- EXPORT_SYMBOL(uart_update_timeout);
-
-@@ -1610,10 +1614,8 @@ static void uart_wait_until_sent(struct tty_struct *tty, int timeout)
- * Note: we have to use pretty tight timings here to satisfy
- * the NIST-PCTS.
- */
-- char_time = (port->timeout - HZ/50) / port->fifosize;
-- char_time = char_time / 5;
-- if (char_time == 0)
-- char_time = 1;
-+ char_time = max(nsecs_to_jiffies(port->frame_time / 5), 1UL);
-+
- if (timeout && timeout < char_time)
- char_time = timeout;
-
-diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
-index ca57d686d4d1..409573ea5ea4 100644
---- a/include/linux/serial_core.h
-+++ b/include/linux/serial_core.h
-@@ -232,6 +232,7 @@ struct uart_port {
- int hw_stopped; /* sw-assisted CTS flow state */
- unsigned int mctrl; /* current modem ctrl settings */
- unsigned int timeout; /* character-based timeout */
-+ unsigned int frame_time; /* frame timing in ns */
- unsigned int type; /* port type */
- const struct uart_ops *ops;
- unsigned int custom_divisor;
---
-2.35.1
-
serial-pic32-free-up-irq-names-correctly.patch
serial-pic32-fix-missing-clk_disable_unprepare-on-er.patch
serial-8250-export-icr-access-helpers-for-internal-u.patch
-serial-store-character-timing-information-to-uart_po.patch
asoc-sof-make-ctx_store-and-ctx_restore-as-optional.patch
asoc-codecs-msm8916-wcd-digital-move-gains-from-sx_t.patch
asoc-codecs-wcd9335-move-gains-from-sx_tlv-to-s8_tlv.patch