A non-trivial amount of RT288x/Au1xxx code is encapsulated into ifdeffery in 8250_port / 8250_early and some if/switch UPIO_AU blocks. Create a separate file from them and do a few additional cleanups. I kept the Kconfig entry as bool because the code has somewhat tricky dependency chain (mips arch code and 8250_of driver). v3: - Convert dl_read/write() to take u32 arg + name the args - Separatate the non-driver datastructure changes & document them better - Fix build when SERIAL_8250=m + SERIAL_8250_RT288X=y (+note reasoning in the commit message for future reference) - Use u8 for arrays that no longer have < 0 values v2: - Define register map array lengths explicitly to avoid creating declaration trap. Ilpo Järvinen (6): serial: 8250: Change dl_read/write to handle value as u32 serial: 8250: Document uart_8250_port's ->dl_read/write() serial: 8250: Add dl_read/write, bugs and mapsize into plat_serial8250_port serial: 8250: RT288x/Au1xxx code away from core serial: 8250_rt288x: Name non-standard divisor latch reg serial: 8250_rt288x: Remove unnecessary UART_REG_UNMAPPED arch/mips/alchemy/common/platform.c | 10 +- drivers/tty/serial/8250/8250.h | 4 +- drivers/tty/serial/8250/8250_core.c | 4 + drivers/tty/serial/8250/8250_early.c | 21 ---- drivers/tty/serial/8250/8250_em.c | 4 +- drivers/tty/serial/8250/8250_of.c | 4 +- drivers/tty/serial/8250/8250_port.c | 84 +-------------- drivers/tty/serial/8250/8250_pxa.c | 2 +- drivers/tty/serial/8250/8250_rt288x.c | 136 ++++++++++++++++++++++++ drivers/tty/serial/8250/8250_uniphier.c | 4 +- drivers/tty/serial/8250/Makefile | 1 + drivers/tty/serial/Makefile | 2 +- include/linux/serial_8250.h | 42 +++++++- 13 files changed, 200 insertions(+), 118 deletions(-) create mode 100644 drivers/tty/serial/8250/8250_rt288x.c -- 2.30.2