Lines Matching +full:ports +full:- +full:word +full:- +full:length
1 // SPDX-License-Identifier: GPL-2.0+
4 * moxa.c -- MOXA Intellio family multiport serial driver.
6 * Copyright (C) 1999-2000 Moxa Technologies (support@moxa.com).
59 #define C218_key (C218_ConfBase + 4) /* WORD (0x218 for C218) */
60 #define C218DLoad_len (C218_ConfBase + 6) /* WORD */
63 #define C218_TestRx (C218_ConfBase + 0x10) /* 8 bytes for 8 ports */
64 #define C218_TestTx (C218_ConfBase + 0x18) /* 8 bytes for 8 ports */
65 #define C218_RXerr (C218_ConfBase + 0x20) /* 8 bytes for 8 ports */
66 #define C218_ErrFlag (C218_ConfBase + 0x28) /* 8 bytes for 8 ports */
81 #define C320_key C320_ConfBase + 4 /* WORD (0320H for C320) */
82 #define C320DLoad_len C320_ConfBase + 6 /* WORD */
83 #define C320check_sum C320_ConfBase + 8 /* WORD */
84 #define C320chksum_ok C320_ConfBase + 0x0a /* WORD (1:ok) */
85 #define C320bapi_len C320_ConfBase + 0x0c /* WORD */
86 #define C320UART_no C320_ConfBase + 0x0e /* WORD */
152 * Dual-Ported RAM
205 /* | | +--- RTS flow */
206 /* | +------ TX Xon/Xoff */
207 /* +--------- RX Xon/Xoff */
209 #define CD180TXirq 0x10 /* if non-0: enable TX irq */
232 #define C218rx_mask (C218rx_size - 1)
233 #define C218tx_mask (C218tx_size - 1)
237 #define C320p8rx_mask (C320p8rx_size - 1)
238 #define C320p8tx_mask (C320p8tx_size - 1)
242 #define C320p16rx_mask (C320p16rx_size - 1)
243 #define C320p16tx_mask (C320p16tx_size - 1)
247 #define C320p24rx_mask (C320p24rx_size - 1)
248 #define C320p24tx_mask (C320p24tx_size - 1)
252 #define C320p32rx_mask (C320p32rx_size - 1)
253 #define C320p32tx_mask (C320p32tx_size - 1)
256 #define Page_mask (Page_size - 1)
349 #define MOXA_IS_320(brd) ((brd)->boardType == MOXA_BOARD_C320_PCI)
361 "CP-204J series",
383 struct moxa_port *ports; member
519 len = (wptr - rptr) & mask; in moxa_low_water_check()
531 struct moxa_port *port = tty->driver_data; in moxa_break_ctl()
533 moxafunc(port->tableAddr, state ? FC_SendBreak : FC_StopBreak, in moxa_break_ctl()
571 switch (brd->boardType) { in moxa_check_fw_model()
587 return -EINVAL; in moxa_check_fw_model()
595 return -EINVAL; in moxa_check_fw()
603 void __iomem *baseAddr = brd->basemem; in moxa_load_bios()
614 switch (brd->boardType) { in moxa_load_bios()
631 printk(KERN_ERR "MOXA: bios upload failed -- CPU/Basic " in moxa_load_bios()
633 return -EIO; in moxa_load_bios()
640 printk(KERN_ERR "MOXA: bios upload failed -- board not found\n"); in moxa_load_bios()
641 return -EIO; in moxa_load_bios()
647 void __iomem *baseAddr = brd->basemem; in moxa_load_320b()
650 printk(KERN_ERR "MOXA: invalid 320 bios -- too short\n"); in moxa_load_320b()
651 return -EINVAL; in moxa_load_320b()
654 writew(len - 7168 - 2, baseAddr + C320bapi_len); in moxa_load_320b()
658 memcpy_toio(baseAddr + DynPage_addr, ptr + 7168, len - 7168); in moxa_load_320b()
666 void __iomem *baseAddr = brd->basemem; in moxa_real_load_code()
673 keycode = (brd->boardType == MOXA_BOARD_CP204J) ? CP204J_KeyCode : in moxa_real_load_code()
676 switch (brd->boardType) { in moxa_real_load_code()
705 wlen -= len2; in moxa_real_load_code()
717 return -EIO; in moxa_real_load_code()
730 return -EIO; in moxa_real_load_code()
739 return -EIO; in moxa_real_load_code()
754 return -EIO; in moxa_real_load_code()
759 return -EIO; in moxa_real_load_code()
760 brd->numPorts = j * 8; in moxa_real_load_code()
769 return -EIO; in moxa_real_load_code()
771 brd->intNdx = baseAddr + IRQindex; in moxa_real_load_code()
772 brd->intPend = baseAddr + IRQpending; in moxa_real_load_code()
773 brd->intTable = baseAddr + IRQtable; in moxa_real_load_code()
781 void __iomem *ofsAddr, *baseAddr = brd->basemem; in moxa_load_code()
786 printk(KERN_ERR "MOXA: bios length is not even\n"); in moxa_load_code()
787 return -EINVAL; in moxa_load_code()
794 switch (brd->boardType) { in moxa_load_code()
797 port = brd->ports; in moxa_load_code()
798 for (i = 0; i < brd->numPorts; i++, port++) { in moxa_load_code()
799 port->board = brd; in moxa_load_code()
800 port->DCDState = 0; in moxa_load_code()
801 port->tableAddr = baseAddr + Extern_table + in moxa_load_code()
803 ofsAddr = port->tableAddr; in moxa_load_code()
815 port = brd->ports; in moxa_load_code()
816 for (i = 0; i < brd->numPorts; i++, port++) { in moxa_load_code()
817 port->board = brd; in moxa_load_code()
818 port->DCDState = 0; in moxa_load_code()
819 port->tableAddr = baseAddr + Extern_table + in moxa_load_code()
821 ofsAddr = port->tableAddr; in moxa_load_code()
822 switch (brd->numPorts) { in moxa_load_code()
867 const void *ptr = fw->data; in moxa_load_fw()
872 int ret = -EINVAL; in moxa_load_fw()
882 BUILD_BUG_ON(ARRAY_SIZE(hdr->len) != ARRAY_SIZE(lens)); in moxa_load_fw()
884 if (fw->size < MOXA_FW_HDRLEN) { in moxa_load_fw()
888 if (hdr->magic != cpu_to_le32(0x30343034)) { in moxa_load_fw()
889 sprintf(rsn, "bad magic: %.8x", le32_to_cpu(hdr->magic)); in moxa_load_fw()
892 if (hdr->type != 3) { in moxa_load_fw()
893 sprintf(rsn, "not for linux, type is %u", hdr->type); in moxa_load_fw()
896 if (moxa_check_fw_model(brd, hdr->model)) { in moxa_load_fw()
897 sprintf(rsn, "not for this card, model is %u", hdr->model); in moxa_load_fw()
902 lencnt = hdr->model == 2 ? 5 : 3; in moxa_load_fw()
904 lens[a] = le16_to_cpu(hdr->len[a]); in moxa_load_fw()
905 if (lens[a] && len + lens[a] <= fw->size && in moxa_load_fw()
906 moxa_check_fw(&fw->data[len])) in moxa_load_fw()
916 if (len != fw->size) { in moxa_load_fw()
917 sprintf(rsn, "bad length: %u (should be %u)", (u32)fw->size, in moxa_load_fw()
935 if (hdr->model == 2) { in moxa_load_fw()
962 brd->ports = kcalloc(MAX_PORTS_PER_BOARD, sizeof(*brd->ports), in moxa_init_board()
964 if (brd->ports == NULL) { in moxa_init_board()
965 printk(KERN_ERR "cannot allocate memory for ports\n"); in moxa_init_board()
966 ret = -ENOMEM; in moxa_init_board()
970 for (i = 0, p = brd->ports; i < MAX_PORTS_PER_BOARD; i++, p++) { in moxa_init_board()
971 tty_port_init(&p->port); in moxa_init_board()
972 p->port.ops = &moxa_port_ops; in moxa_init_board()
973 p->type = PORT_16550A; in moxa_init_board()
974 p->cflag = B9600 | CS8 | CREAD | CLOCAL | HUPCL; in moxa_init_board()
977 switch (brd->boardType) { in moxa_init_board()
1006 brd->ready = 1; in moxa_init_board()
1011 first_idx = (brd - moxa_boards) * MAX_PORTS_PER_BOARD; in moxa_init_board()
1012 for (i = 0; i < brd->numPorts; i++) in moxa_init_board()
1013 tty_port_register_device(&brd->ports[i].port, moxaDriver, in moxa_init_board()
1019 tty_port_destroy(&brd->ports[i].port); in moxa_init_board()
1020 kfree(brd->ports); in moxa_init_board()
1031 brd->ready = 0; in moxa_board_deinit()
1034 /* pci hot-un-plug support */ in moxa_board_deinit()
1035 for (a = 0; a < brd->numPorts; a++) in moxa_board_deinit()
1036 if (tty_port_initialized(&brd->ports[a].port)) in moxa_board_deinit()
1037 tty_port_tty_hangup(&brd->ports[a].port, false); in moxa_board_deinit()
1040 tty_port_destroy(&brd->ports[a].port); in moxa_board_deinit()
1044 for (a = 0; a < brd->numPorts; a++) in moxa_board_deinit()
1045 if (tty_port_initialized(&brd->ports[a].port)) in moxa_board_deinit()
1054 first_idx = (brd - moxa_boards) * MAX_PORTS_PER_BOARD; in moxa_board_deinit()
1055 for (a = 0; a < brd->numPorts; a++) in moxa_board_deinit()
1058 iounmap(brd->basemem); in moxa_board_deinit()
1059 brd->basemem = NULL; in moxa_board_deinit()
1060 kfree(brd->ports); in moxa_board_deinit()
1068 int board_type = ent->driver_data; in moxa_pci_probe()
1073 dev_err(&pdev->dev, "can't enable pci device\n"); in moxa_pci_probe()
1081 retval = -ENODEV; in moxa_pci_probe()
1083 dev_warn(&pdev->dev, "more than %u MOXA Intellio family boards " in moxa_pci_probe()
1090 retval = pci_request_region(pdev, 2, "moxa-base"); in moxa_pci_probe()
1092 dev_err(&pdev->dev, "can't request pci region 2\n"); in moxa_pci_probe()
1096 board->basemem = ioremap(pci_resource_start(pdev, 2), 0x4000); in moxa_pci_probe()
1097 if (board->basemem == NULL) { in moxa_pci_probe()
1098 dev_err(&pdev->dev, "can't remap io space 2\n"); in moxa_pci_probe()
1099 retval = -ENOMEM; in moxa_pci_probe()
1103 board->boardType = board_type; in moxa_pci_probe()
1106 board->numPorts = 8; in moxa_pci_probe()
1110 board->numPorts = 4; in moxa_pci_probe()
1113 board->numPorts = 0; in moxa_pci_probe()
1117 retval = moxa_init_board(board, &pdev->dev); in moxa_pci_probe()
1123 dev_info(&pdev->dev, "board '%s' ready (%u ports, firmware loaded)\n", in moxa_pci_probe()
1124 moxa_brdname[board_type - 1], board->numPorts); in moxa_pci_probe()
1128 iounmap(board->basemem); in moxa_pci_probe()
1129 board->basemem = NULL; in moxa_pci_probe()
1162 moxaDriver->name = "ttyMX"; in moxa_init()
1163 moxaDriver->major = ttymajor; in moxa_init()
1164 moxaDriver->minor_start = 0; in moxa_init()
1165 moxaDriver->type = TTY_DRIVER_TYPE_SERIAL; in moxa_init()
1166 moxaDriver->subtype = SERIAL_TYPE_NORMAL; in moxa_init()
1167 moxaDriver->init_termios = tty_std_termios; in moxa_init()
1168 moxaDriver->init_termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL | HUPCL; in moxa_init()
1169 moxaDriver->init_termios.c_ispeed = 9600; in moxa_init()
1170 moxaDriver->init_termios.c_ospeed = 9600; in moxa_init()
1176 return -1; in moxa_init()
1211 spin_lock_irq(&port->lock); in moxa_carrier_raised()
1212 dcd = ch->DCDState; in moxa_carrier_raised()
1213 spin_unlock_irq(&port->lock); in moxa_carrier_raised()
1230 port = tty->index; in moxa_open()
1232 return -ERESTARTSYS; in moxa_open()
1234 if (!brd->ready) { in moxa_open()
1236 return -ENODEV; in moxa_open()
1239 if (port % MAX_PORTS_PER_BOARD >= brd->numPorts) { in moxa_open()
1241 return -ENODEV; in moxa_open()
1244 ch = &brd->ports[port % MAX_PORTS_PER_BOARD]; in moxa_open()
1245 ch->port.count++; in moxa_open()
1246 tty->driver_data = ch; in moxa_open()
1247 tty_port_tty_set(&ch->port, tty); in moxa_open()
1248 mutex_lock(&ch->port.mutex); in moxa_open()
1249 if (!tty_port_initialized(&ch->port)) { in moxa_open()
1250 ch->statusflags = 0; in moxa_open()
1251 moxa_set_tty_param(tty, &tty->termios); in moxa_open()
1254 MoxaSetFifo(ch, ch->type == PORT_16550A); in moxa_open()
1255 tty_port_set_initialized(&ch->port, true); in moxa_open()
1257 mutex_unlock(&ch->port.mutex); in moxa_open()
1260 return tty_port_block_til_ready(&ch->port, tty, filp); in moxa_open()
1265 struct moxa_port *ch = tty->driver_data; in moxa_close()
1266 ch->cflag = tty->termios.c_cflag; in moxa_close()
1267 tty_port_close(&ch->port, tty, filp); in moxa_close()
1272 struct moxa_port *ch = tty->driver_data; in moxa_write()
1283 set_bit(LOWWAIT, &ch->statusflags); in moxa_write()
1291 if (tty->flow.stopped) in moxa_write_room()
1293 ch = tty->driver_data; in moxa_write_room()
1301 struct moxa_port *ch = tty->driver_data; in moxa_flush_buffer()
1311 struct moxa_port *ch = tty->driver_data; in moxa_chars_in_buffer()
1320 set_bit(EMPTYWAIT, &ch->statusflags); in moxa_chars_in_buffer()
1326 struct moxa_port *ch = tty->driver_data; in moxa_tiocmget()
1353 ch = tty->driver_data; in moxa_tiocmset()
1356 return -EINVAL; in moxa_tiocmset()
1376 struct moxa_port *ch = tty->driver_data; in moxa_set_termios()
1381 if (!(old_termios->c_cflag & CLOCAL) && C_CLOCAL(tty)) in moxa_set_termios()
1382 wake_up_interruptible(&ch->port.open_wait); in moxa_set_termios()
1387 struct moxa_port *ch = tty->driver_data; in moxa_stop()
1392 set_bit(TXSTOPPED, &ch->statusflags); in moxa_stop()
1398 struct moxa_port *ch = tty->driver_data; in moxa_start()
1403 if (!test_bit(TXSTOPPED, &ch->statusflags)) in moxa_start()
1407 clear_bit(TXSTOPPED, &ch->statusflags); in moxa_start()
1412 struct moxa_port *ch = tty->driver_data; in moxa_hangup()
1413 tty_port_hangup(&ch->port); in moxa_hangup()
1421 spin_lock_irqsave(&p->port.lock, flags); in moxa_new_dcdstate()
1422 if (dcd != p->DCDState) { in moxa_new_dcdstate()
1423 p->DCDState = dcd; in moxa_new_dcdstate()
1424 spin_unlock_irqrestore(&p->port.lock, flags); in moxa_new_dcdstate()
1426 tty_port_tty_hangup(&p->port, true); in moxa_new_dcdstate()
1429 spin_unlock_irqrestore(&p->port.lock, flags); in moxa_new_dcdstate()
1435 struct tty_struct *tty = tty_port_tty_get(&p->port); in moxa_poll_port()
1436 bool inited = tty_port_initialized(&p->port); in moxa_poll_port()
1441 if (test_bit(EMPTYWAIT, &p->statusflags) && in moxa_poll_port()
1443 clear_bit(EMPTYWAIT, &p->statusflags); in moxa_poll_port()
1446 if (test_bit(LOWWAIT, &p->statusflags) && !tty->flow.stopped && in moxa_poll_port()
1448 clear_bit(LOWWAIT, &p->statusflags); in moxa_poll_port()
1455 tty_flip_buffer_push(&p->port); in moxa_poll_port()
1458 clear_bit(EMPTYWAIT, &p->statusflags); in moxa_poll_port()
1470 ofsAddr = p->tableAddr; in moxa_poll_port()
1479 tty_insert_flip_char(&p->port, 0, TTY_BREAK); in moxa_poll_port()
1480 tty_flip_buffer_push(&p->port); in moxa_poll_port()
1500 if (!brd->ready) in moxa_poll()
1506 if (readb(brd->intPend) == 0xff) in moxa_poll()
1507 ip = brd->intTable + readb(brd->intNdx); in moxa_poll()
1509 for (port = 0; port < brd->numPorts; port++) in moxa_poll()
1510 moxa_poll_port(&brd->ports[port], !!ip, ip + port); in moxa_poll()
1513 writeb(0, brd->intPend); /* ACK */ in moxa_poll()
1516 struct moxa_port *p = brd->ports; in moxa_poll()
1517 for (port = 0; port < brd->numPorts; port++, p++) in moxa_poll()
1518 if (p->lowChkFlag) { in moxa_poll()
1519 p->lowChkFlag = 0; in moxa_poll()
1520 moxa_low_water_check(p->tableAddr); in moxa_poll()
1536 register struct ktermios *ts = &tty->termios; in moxa_set_tty_param()
1537 struct moxa_port *ch = tty->driver_data; in moxa_set_tty_param()
1541 if (ts->c_cflag & CRTSCTS) in moxa_set_tty_param()
1543 if (ts->c_iflag & IXON) in moxa_set_tty_param()
1545 if (ts->c_iflag & IXOFF) in moxa_set_tty_param()
1547 if (ts->c_iflag & IXANY) in moxa_set_tty_param()
1552 if (baud == -1) in moxa_set_tty_param()
1567 ofsAddr = port->tableAddr; in MoxaPortFlushData()
1570 port->lowChkFlag = 0; in MoxaPortFlushData()
1578 * MOXA serial driver supports up to 4 MOXA-C218/C320 boards. And,
1582 * first board is C218, second board is C320-16 and third board is
1583 * C320-32. The port number of first board (C218 - 8 ports) is from
1584 * 0 to 7. The port number of second board (C320 - 16 ports) is form
1585 * 32 to 47. The port number of third board (C320 - 32 ports) is from
1604 * int port : port number (0 - 127)
1607 * -EINVAL
1608 * -ENOIOCTLCMD
1614 * int port : port number (0 - 127)
1620 * int port : port number (0 - 127)
1626 * int port : port number (0 - 127)
1627 * long baud : baud rate (50 - 115200)
1630 * 50 - 115200 : the real baud rate set to the port, if
1639 * int port : port number (0 - 127)
1643 * return: -1 : this port is invalid or termio == NULL
1650 * int port : port number (0 - 127)
1658 * return: -1 : this port is invalid
1665 * int port : port number (0 - 127)
1674 * int port : port number (0 - 127)
1685 * int port : port number (0 - 127)
1687 * return: Bit 0 - CTS state (0: off, 1: on)
1688 * Bit 1 - DSR state (0: off, 1: on)
1689 * Bit 2 - DCD state (0: off, 1: on)
1695 * int port : port number (0 - 127)
1704 * ssize_t MoxaPortWriteData(int port, u8 *buffer, size_t length);
1705 * int port : port number (0 - 127)
1707 * size_t length : write data length
1709 * return: 0 - length : real write data length
1715 * int port : port number (0 - 127)
1718 * return: 0 - length : real read data length
1724 * int port : port number (0 - 127)
1732 * int port : port number (0 - 127)
1740 * int port : port number (0 - 127)
1748 * int port : port number (0 - 127)
1754 * int port : port number (0 - 127)
1760 * int port : port number (0 - 127)
1762 * return: 0 - .. : BREAK signal count
1772 ofsAddr = port->tableAddr; in MoxaPortEnable()
1774 if (MOXA_IS_320(port->board)) in MoxaPortEnable()
1789 void __iomem *ofsAddr = port->tableAddr; in MoxaPortDisable()
1799 void __iomem *ofsAddr = port->tableAddr; in MoxaPortSetBaud()
1803 max = MOXA_IS_320(port->board) ? 460800 : 921600; in MoxaPortSetBaud()
1821 ofsAddr = port->tableAddr; in MoxaPortSetTermio()
1823 mode = termio->c_cflag & CSIZE; in MoxaPortSetTermio()
1833 if (termio->c_cflag & CSTOPB) { in MoxaPortSetTermio()
1841 if (termio->c_cflag & PARENB) { in MoxaPortSetTermio()
1842 if (termio->c_cflag & PARODD) { in MoxaPortSetTermio()
1843 if (termio->c_cflag & CMSPAR) in MoxaPortSetTermio()
1848 if (termio->c_cflag & CMSPAR) in MoxaPortSetTermio()
1858 if (MOXA_IS_320(port->board) && baud >= 921600) in MoxaPortSetTermio()
1859 return -1; in MoxaPortSetTermio()
1863 if (termio->c_iflag & (IXON | IXOFF | IXANY)) { in MoxaPortSetTermio()
1865 writeb(termio->c_cc[VSTART], ofsAddr + FuncArg); in MoxaPortSetTermio()
1866 writeb(termio->c_cc[VSTOP], ofsAddr + FuncArg1); in MoxaPortSetTermio()
1879 *dtr_active = port->lineCtrl & DTR_ON; in MoxaPortGetLineOut()
1881 *rts_active = port->lineCtrl & RTS_ON; in MoxaPortGetLineOut()
1894 port->lineCtrl = mode; in MoxaPortLineCtrl()
1895 moxafunc(port->tableAddr, FC_LineControl, mode); in MoxaPortLineCtrl()
1913 moxafunc(port->tableAddr, FC_SetFlowCtl, mode); in MoxaPortFlowCtrl()
1921 ofsAddr = port->tableAddr; in MoxaPortLineStatus()
1922 if (MOXA_IS_320(port->board)) in MoxaPortLineStatus()
1937 struct moxa_port *port = tty->driver_data; in MoxaPortWriteData()
1943 ofsAddr = port->tableAddr; in MoxaPortWriteData()
1944 baseAddr = port->board->basemem; in MoxaPortWriteData()
1950 c = (head > tail) ? (head - tail - 1) : (head - tail + tx_mask); in MoxaPortWriteData()
1959 len = head - tail - 1; in MoxaPortWriteData()
1961 len = tx_mask + 1 - tail; in MoxaPortWriteData()
1967 c -= len; in MoxaPortWriteData()
1973 len = Page_size - pageofs; in MoxaPortWriteData()
1983 c -= len; in MoxaPortWriteData()
2000 ofsAddr = port->tableAddr; in MoxaPortReadData()
2001 baseAddr = port->board->basemem; in MoxaPortReadData()
2007 count = (tail >= head) ? (tail - head) : (tail - head + rx_mask + 1); in MoxaPortReadData()
2017 len = (tail >= head) ? (tail - head) : in MoxaPortReadData()
2018 (rx_mask + 1 - head); in MoxaPortReadData()
2019 len = tty_prepare_flip_string(&port->port, &dst, in MoxaPortReadData()
2023 count -= len; in MoxaPortReadData()
2031 len = tty_prepare_flip_string(&port->port, &dst, in MoxaPortReadData()
2032 min(Page_size - pageofs, count)); in MoxaPortReadData()
2035 count -= len; in MoxaPortReadData()
2045 port->lowChkFlag = 1; in MoxaPortReadData()
2053 void __iomem *ofsAddr = port->tableAddr; in MoxaPortTxQueue()
2059 return (wptr - rptr) & mask; in MoxaPortTxQueue()
2064 void __iomem *ofsAddr = port->tableAddr; in MoxaPortTxFree()
2070 return mask - ((wptr - rptr) & mask); in MoxaPortTxFree()
2075 void __iomem *ofsAddr = port->tableAddr; in MoxaPortRxQueue()
2081 return (wptr - rptr) & mask; in MoxaPortRxQueue()
2086 moxafunc(port->tableAddr, FC_SetXoffState, Magic_code); in MoxaPortTxDisable()
2091 moxafunc(port->tableAddr, FC_SetXonState, Magic_code); in MoxaPortTxEnable()
2097 struct moxa_port *info = tty->driver_data; in moxa_get_serial_info()
2100 return -ENODEV; in moxa_get_serial_info()
2101 mutex_lock(&info->port.mutex); in moxa_get_serial_info()
2102 ss->type = info->type; in moxa_get_serial_info()
2103 ss->line = info->port.tty->index; in moxa_get_serial_info()
2104 ss->flags = info->port.flags; in moxa_get_serial_info()
2105 ss->baud_base = 921600; in moxa_get_serial_info()
2106 ss->close_delay = jiffies_to_msecs(info->port.close_delay) / 10; in moxa_get_serial_info()
2107 mutex_unlock(&info->port.mutex); in moxa_get_serial_info()
2115 struct moxa_port *info = tty->driver_data; in moxa_set_serial_info()
2119 return -ENODEV; in moxa_set_serial_info()
2121 close_delay = msecs_to_jiffies(ss->close_delay * 10); in moxa_set_serial_info()
2123 mutex_lock(&info->port.mutex); in moxa_set_serial_info()
2125 if (close_delay != info->port.close_delay || in moxa_set_serial_info()
2126 ss->type != info->type || in moxa_set_serial_info()
2127 ((ss->flags & ~ASYNC_USR_MASK) != in moxa_set_serial_info()
2128 (info->port.flags & ~ASYNC_USR_MASK))) { in moxa_set_serial_info()
2129 mutex_unlock(&info->port.mutex); in moxa_set_serial_info()
2130 return -EPERM; in moxa_set_serial_info()
2133 info->port.close_delay = close_delay; in moxa_set_serial_info()
2135 MoxaSetFifo(info, ss->type == PORT_16550A); in moxa_set_serial_info()
2137 info->type = ss->type; in moxa_set_serial_info()
2139 mutex_unlock(&info->port.mutex); in moxa_set_serial_info()
2151 void __iomem *ofsAddr = port->tableAddr; in MoxaSetFifo()