[PATCH v2 0/2] serial: 8250_ingenic: Set UMR and UACR, add the X1600

From: Olivier Louvignes

Date: Sat Oct 24 2026 - 18:08:27 EST


Ingenic UARTs carry a bit clock count (UMR) and a per-bit adjustment
(UACR) that the driver never sets, so a UART runs with whatever was left
there. On the X1600 of a HiBy R1 neither the vendor's 8 nor the reset
value 0 gives the 16 clocks a bit the 8250 divisor assumes, and the
Bluetooth chip on UART0 fails to set up. Patch 2 sets 16 and 0 at probe.

Changes since v1:
- Set UMR and UACR on every Ingenic UART rather than in an X1600 entry,
as Nikolaus asked: the JZ4725, JZ4740, JZ4755, JZ4760, X1000, X1830,
X2000 and X1600 programming manuals all have them at 0x24 and 0x28.
- Write 16 rather than the reset value: with UMR at 0 the R1's Bluetooth
chip fails just as it does with 8.
- The binding keeps the X1600 compatible with the X1000's as fallback;
the driver needs no entry of its own.
- Rebased on tty-next.

I could only test the X1600. On the other SoCs this writes the value the
divisor already assumes.

v1: https://lore.kernel.org/all/20261024051515.55639-1-olivier@xxxxxxxxx/

Olivier Louvignes (2):
dt-bindings: serial: ingenic: Add the X1600
serial: 8250_ingenic: Set UMR and UACR at probe

.../devicetree/bindings/serial/ingenic,uart.yaml | 3 +++
drivers/tty/serial/8250/8250_ingenic.c | 12 ++++++++++++
2 files changed, 15 insertions(+)


base-commit: 1184f87e2790e8af9be3116f608d2e86b4792d7d
--
2.39.5