#define CHIP_ID2  0x21
 #define CHIP_ID_F81865 0x0407
 #define CHIP_ID_F81866 0x1010
+#define CHIP_ID_F81966 0x0215
 #define CHIP_ID_F81216AD 0x1602
 #define CHIP_ID_F81216H 0x0501
 #define CHIP_ID_F81216 0x0802
 #define F81216_LDN_HIGH        0x4
 
 /*
- * F81866 registers
+ * F81866/966 registers
  *
- * The IRQ setting mode of F81866 is not the same with F81216 series.
+ * The IRQ setting mode of F81866/966 is not the same with F81216 series.
  *     Level/Low: IRQ_MODE0:0, IRQ_MODE1:0
  *     Edge/High: IRQ_MODE0:1, IRQ_MODE1:0
  *
        switch (chip) {
        case CHIP_ID_F81865:
        case CHIP_ID_F81866:
+       case CHIP_ID_F81966:
        case CHIP_ID_F81216AD:
        case CHIP_ID_F81216H:
        case CHIP_ID_F81216:
                                     int *max)
 {
        switch (pdata->pid) {
+       case CHIP_ID_F81966:
        case CHIP_ID_F81865:
        case CHIP_ID_F81866:
                *min = F81866_LDN_LOW;
        sio_write_reg(pdata, LDN, pdata->index);
 
        switch (pdata->pid) {
+       case CHIP_ID_F81966:
        case CHIP_ID_F81866:
                sio_write_mask_reg(pdata, F81866_FIFO_CTRL, F81866_IRQ_MODE1,
                                   0);
 {
        switch (pdata->pid) {
        case CHIP_ID_F81216H: /* 128Bytes FIFO */
+       case CHIP_ID_F81966:
        case CHIP_ID_F81866:
                sio_write_mask_reg(pdata, FIFO_CTRL,
                                   FIFO_MODE_MASK | RXFTHR_MODE_MASK,
        sio_write_reg(pdata, LDN, pdata->index);
 
        switch (pdata->pid) {
+       case CHIP_ID_F81966:
        case CHIP_ID_F81866: /* set uart clock for high speed serial mode */
                sio_write_mask_reg(pdata, F81866_UART_CLK,
                        F81866_UART_CLK_MASK,
        case CHIP_ID_F81216H:
                reg = RS485;
                break;
+       case CHIP_ID_F81966:
        case CHIP_ID_F81866:
                reg = F81866_UART_CLK;
                break;
 
        switch (pdata->pid) {
        case CHIP_ID_F81216H:
+       case CHIP_ID_F81966:
        case CHIP_ID_F81866:
                uart->port.set_termios = fintek_8250_set_termios;
                break;
        switch (pdata->pid) {
        case CHIP_ID_F81216AD:
        case CHIP_ID_F81216H:
+       case CHIP_ID_F81966:
        case CHIP_ID_F81866:
        case CHIP_ID_F81865:
                uart->port.rs485_config = fintek_8250_rs485_config;