Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

serial: 8250_fintek: Add F81865 Support

Fintek F81865 is a LPC to 6 UARTs SuperIO. It has less functional UARTs
likes F81866. It's also need check the IRQ mode with system assigned,
but the configuration is not the same with F81216 series.

F81865 IRQ Mode setting:
0xf0
Bit1: IRQ_MODE0
Bit0: Share mode (always on)

Level/Low: IRQ_MODE0:0
Edge/High: IRQ_MODE0:1

The following list is brief descriptions of F81865:

F81865 (0704)
9Bit(not implements with mainline)
RS485(implemented)

Suggested-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Signed-off-by: Ji-Ze Hong (Peter Hong) <hpeter+linux_kernel@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Ji-Ze Hong (Peter Hong) and committed by
Greg Kroah-Hartman
de48b099 da60d6af

+6
+6
drivers/tty/serial/8250/8250_fintek.c
··· 21 21 #define EXIT_KEY 0xAA 22 22 #define CHIP_ID1 0x20 23 23 #define CHIP_ID2 0x21 24 + #define CHIP_ID_F81865 0x0407 24 25 #define CHIP_ID_F81866 0x1010 25 26 #define CHIP_ID_F81216AD 0x1602 26 27 #define CHIP_ID_F81216H 0x0501 ··· 131 130 chip |= sio_read_reg(pdata, CHIP_ID2) << 8; 132 131 133 132 switch (chip) { 133 + case CHIP_ID_F81865: 134 134 case CHIP_ID_F81866: 135 135 case CHIP_ID_F81216AD: 136 136 case CHIP_ID_F81216H: ··· 149 147 int *max) 150 148 { 151 149 switch (pdata->pid) { 150 + case CHIP_ID_F81865: 152 151 case CHIP_ID_F81866: 153 152 *min = F81866_LDN_LOW; 154 153 *max = F81866_LDN_HIGH; ··· 222 219 case CHIP_ID_F81866: 223 220 sio_write_mask_reg(pdata, F81866_FIFO_CTRL, F81866_IRQ_MODE1, 224 221 0); 222 + /* fall through */ 223 + case CHIP_ID_F81865: 225 224 sio_write_mask_reg(pdata, F81866_IRQ_MODE, F81866_IRQ_SHARE, 226 225 F81866_IRQ_SHARE); 227 226 sio_write_mask_reg(pdata, F81866_IRQ_MODE, F81866_IRQ_MODE0, ··· 316 311 case CHIP_ID_F81216AD: 317 312 case CHIP_ID_F81216H: 318 313 case CHIP_ID_F81866: 314 + case CHIP_ID_F81865: 319 315 uart->port.rs485_config = fintek_8250_rs485_config; 320 316 break; 321 317