[PATCH v3 0/4] serial: 8250_dw: describe the Allwinner H616 UART configuration

From: James Hilliard

Date: Sat Oct 24 2026 - 16:22:51 EST


H616 has 256-byte UART FIFOs, but lacks the DesignWare component parameter
register used to discover their capacity. Its debug-divisor and RS485
registers also overlap offsets used to probe optional DesignWare features.

Describe the FIFO capacity in DT and add an H616 compatible for the
integration-specific setup. Keep the existing 16550A port type, preserve
the firmware-provided depth and derive the Allwinner receive thresholds
from it. Configure automatic flow control, preserve the BUSY-safe integer
divisor path and keep the UART gate enabled during termios changes.

The series first introduces platform setup callbacks, then adds the
binding, H616 setup and SoC DTS changes. Based on tty-next at
1184f87e2790 with the posted RX trigger callback-lifetime fix [0], so the
custom trigger handlers follow the registered port's lifetime.

[0] https://lore.kernel.org/r/20261024-submit-serial-8250-rxtrig-lifetime-v1-v1-1-731b78d5003d@xxxxxxxxx

Assisted-by: Codex:gpt-6-astra
Signed-off-by: James Hilliard <james.hilliard1@xxxxxxxxx>
---
Changes in v3:
- Introduce a platform-data setup callback in a preparatory patch,
replacing skip_autocfg and preserving the existing Octeon setup.
- Describe each H616 UART's FIFO capacity with the standard fifo-size DT
property and use the value already read by uart_read_port_properties().
- Derive the Allwinner RX trigger thresholds from the FIFO depth.
- Use an unsigned trigger index and conditional runtime PM guard,
preserving error propagation when the device cannot resume.
- Rebase onto tty-next, replacing the earlier DMA prerequisites with the
posted RX trigger callback-lifetime fix.
- Separate DMA enablement into follow-up work, retaining PIO operation
for the H616 FIFO configuration.
- Link to v2: https://lore.kernel.org/r/20261023-submit-h616-uart-fifo-v1-v2-0-af0593504635@xxxxxxxxx

Changes in v2:
- Keep PORT_16550A and set the FIFO size, transmit load and capabilities
during setup, following Andy's review.
- Select H616 setup through the matched platform-data pointer and remove
the type and DMA burst-size platform-data members.
- Use get_rxtrig/set_rxtrig for the 1/64/128/254-byte receive thresholds,
with port locking and runtime PM around register updates. Keep the
standard half-full FCR default, selecting 128 bytes on H616.
- Advertise UART_CAP_AFE so CRTSCTS enables hardware automatic flow control.
- Rebase onto next-20261023 and declare the posted sun6i pause/lifetime
fixes and their prerequisites for DMA enablement.
- Link to v1: https://lore.kernel.org/r/20261023-submit-h616-uart-fifo-v1-v1-0-e4a3bae2eba8@xxxxxxxxx

---
James Hilliard (4):
serial: 8250_dw: select port setup through platform data
dt-bindings: serial: snps-dw-apb-uart: add Allwinner H616
serial: 8250_dw: configure the Allwinner H616 UART
arm64: dts: allwinner: h616: describe the UART integration and FIFO size

.../bindings/serial/snps-dw-apb-uart.yaml | 17 +++
arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 18 ++-
drivers/tty/serial/8250/8250_dw.c | 123 +++++++++++++++++++--
3 files changed, 142 insertions(+), 16 deletions(-)
---
base-commit: 1184f87e2790e8af9be3116f608d2e86b4792d7d
change-id: 20261022-submit-h616-uart-fifo-v1-c5afcdfe5cb0
prerequisite-message-id: <20261024-submit-serial-8250-rxtrig-lifetime-v1-v1-1-731b78d5003d@xxxxxxxxx>
prerequisite-patch-id: 9a9395c715c2bf7bbcae5bdd16a339d7f2af6269

Best regards,
--
James Hilliard <james.hilliard1@xxxxxxxxx>