* [PATCH v3 0/2] serial: 8250_dw: Add ti,tda54-uart support
@ 2026-09-18 10:03 Moteen Shah
2026-09-18 10:03 ` [PATCH v3 1/2] dt-bindings: serial: snps-dw-apb-uart: Add ti,tda54-uart Moteen Shah
2026-09-18 10:03 ` [PATCH v3 2/2] serial: 8250_dw: Add ti,tda54-uart quirk to skip empty FIFO read Moteen Shah
0 siblings, 2 replies; 3+ messages in thread
From: Moteen Shah @ 2026-09-18 10:03 UTC (permalink / raw)
To: ilpo.jarvinen, gregkh, krzk+dt, linux-serial, linux-kernel,
jirislaby, devicetree
Cc: u-kumar1, gehariprasath, m-shah, vigneshr, nm, a-limaye,
y-abhilashchandra
Add the ti,tda54-uart compatible string to the DW APB UART binding,
and add a quirk to skip the RX FIFO dummy read on TDA54.
Reading an empty FIFO on the IP version used in TDA54 triggers a
data abort. The interrupt storm this dummy read was meant to avoid
no longer occurs on this version of the IP, so skip the read via a
new quirk.
Changes since v2:
Link: https://lore.kernel.org/all/20260916085520.2259420-1-m-shah@ti.com/
- Drop the fixup being done for the clear_interrupts and
shutdown of port. Reading an empty FIFO (by RBR) will be fine
when the fifo is disabled[0]. In the case of clear_interrupts
the issue is fixed by the following
commit 7f8fdd4dbffc ("serial: 8250: fix panic due to PSLVERR")
- Base this series on top of the following series[3].
[0]https://lore.kernel.org/linux-serial/ab256e4a-a9cc-410e-b889-f75fb01e77c7@picoheart.com/
[1]https://lore.kernel.org/linux-serial/20260908141524.20302-1-yang.yicong@picoheart.com/
[3]https://lore.kernel.org/linux-serial/20260908141524.20302-1-yang.yicong@picoheart.com/
Moteen Shah (2):
dt-bindings: serial: snps-dw-apb-uart: Add ti,tda54-uart
serial: 8250_dw: Add ti,tda54-uart quirk to skip empty FIFO read
.../devicetree/bindings/serial/snps-dw-apb-uart.yaml | 1 +
drivers/tty/serial/8250/8250_dw.c | 9 ++++++++-
2 files changed, 9 insertions(+), 1 deletion(-)
--
2.34.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v3 1/2] dt-bindings: serial: snps-dw-apb-uart: Add ti,tda54-uart
2026-09-18 10:03 [PATCH v3 0/2] serial: 8250_dw: Add ti,tda54-uart support Moteen Shah
@ 2026-09-18 10:03 ` Moteen Shah
2026-09-18 10:03 ` [PATCH v3 2/2] serial: 8250_dw: Add ti,tda54-uart quirk to skip empty FIFO read Moteen Shah
1 sibling, 0 replies; 3+ messages in thread
From: Moteen Shah @ 2026-09-18 10:03 UTC (permalink / raw)
To: ilpo.jarvinen, gregkh, krzk+dt, linux-serial, linux-kernel,
jirislaby, devicetree
Cc: u-kumar1, gehariprasath, m-shah, vigneshr, nm, a-limaye,
y-abhilashchandra
The TDA54 UART is compatible with the existing DesignWare APB UART
binding. Add the ti,tda54-uart compatible string.
Signed-off-by: Udit Kumar <u-kumar1@ti.com>
Signed-off-by: Moteen Shah <m-shah@ti.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
---
Documentation/devicetree/bindings/serial/snps-dw-apb-uart.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.yaml b/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.yaml
index 664305de4986..86dc25919311 100644
--- a/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.yaml
+++ b/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.yaml
@@ -80,6 +80,7 @@ properties:
- starfive,jh7100-hsuart
- starfive,jh7100-uart
- starfive,jh7110-uart
+ - ti,tda54-uart
- ultrarisc,dp1000-uart
- const: snps,dw-apb-uart
- const: snps,dw-apb-uart
--
2.34.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v3 2/2] serial: 8250_dw: Add ti,tda54-uart quirk to skip empty FIFO read
2026-09-18 10:03 [PATCH v3 0/2] serial: 8250_dw: Add ti,tda54-uart support Moteen Shah
2026-09-18 10:03 ` [PATCH v3 1/2] dt-bindings: serial: snps-dw-apb-uart: Add ti,tda54-uart Moteen Shah
@ 2026-09-18 10:03 ` Moteen Shah
1 sibling, 0 replies; 3+ messages in thread
From: Moteen Shah @ 2026-09-18 10:03 UTC (permalink / raw)
To: ilpo.jarvinen, gregkh, krzk+dt, linux-serial, linux-kernel,
jirislaby, devicetree
Cc: u-kumar1, gehariprasath, m-shah, vigneshr, nm, a-limaye,
y-abhilashchandra
dw8250_handle_irq() does a bogus RX read on RX_TIMEOUT with no data
present, to avoid an interrupt storm. On the IP version used in
TDA54, that interrupt storm no longer occurs, but reading an empty
RX FIFO instead triggers a data abort.
Add a DW_UART_QUIRK_SKIP_EMPTY_FIFO_READ quirk for ti,tda54-uart to
skip that read and avoid the data abort.
Signed-off-by: Udit Kumar <u-kumar1@ti.com>
Signed-off-by: Moteen Shah <m-shah@ti.com>
---
drivers/tty/serial/8250/8250_dw.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c
index b8a0bca8b536..e7e219611e0b 100644
--- a/drivers/tty/serial/8250/8250_dw.c
+++ b/drivers/tty/serial/8250/8250_dw.c
@@ -51,6 +51,7 @@
#define DW_UART_QUIRK_APMC0D08 BIT(4)
#define DW_UART_QUIRK_CPR_VALUE BIT(5)
#define DW_UART_QUIRK_IER_KICK BIT(6)
+#define DW_UART_QUIRK_SKIP_EMPTY_FIFO_READ BIT(7)
/*
* Number of consecutive IIR_NO_INT interrupts required to trigger interrupt
@@ -436,7 +437,7 @@ static int dw8250_handle_irq(struct uart_port *p)
* This problem has only been observed so far when not in DMA mode
* so we limit the workaround only to non-DMA mode.
*/
- if (!up->dma && rx_timeout) {
+ if (!(quirks & DW_UART_QUIRK_SKIP_EMPTY_FIFO_READ) && !up->dma && rx_timeout) {
status = serial_lsr_in(up);
/*
@@ -895,6 +896,11 @@ static const struct dw8250_platform_data dw8250_ultrarisc_dp1000_data = {
.quirks = DW_UART_QUIRK_CPR_VALUE,
};
+static const struct dw8250_platform_data dw8250_tda54 = {
+ .usr_reg = DW_UART_USR,
+ .quirks = DW_UART_QUIRK_SKIP_EMPTY_FIFO_READ,
+};
+
static const struct of_device_id dw8250_of_match[] = {
{ .compatible = "snps,dw-apb-uart", .data = &dw8250_dw_apb },
{ .compatible = "cavium,octeon-3860-uart", .data = &dw8250_octeon_3860_data },
@@ -902,6 +908,7 @@ static const struct of_device_id dw8250_of_match[] = {
{ .compatible = "renesas,rzn1-uart", .data = &dw8250_renesas_rzn1_data },
{ .compatible = "sophgo,sg2044-uart", .data = &dw8250_skip_set_rate_data },
{ .compatible = "starfive,jh7100-uart", .data = &dw8250_skip_set_rate_data },
+ { .compatible = "ti,tda54-uart", .data = &dw8250_tda54 },
{ .compatible = "ultrarisc,dp1000-uart", .data = &dw8250_ultrarisc_dp1000_data },
{ /* Sentinel */ }
};
--
2.34.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-09-18 10:04 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-18 10:03 [PATCH v3 0/2] serial: 8250_dw: Add ti,tda54-uart support Moteen Shah
2026-09-18 10:03 ` [PATCH v3 1/2] dt-bindings: serial: snps-dw-apb-uart: Add ti,tda54-uart Moteen Shah
2026-09-18 10:03 ` [PATCH v3 2/2] serial: 8250_dw: Add ti,tda54-uart quirk to skip empty FIFO read Moteen Shah
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox