Lines Matching refs:icom_port
253 struct icom_port { struct
281 struct icom_port port_info[4]; argument
308 static inline struct icom_port *to_icom_port(struct uart_port *port) in to_icom_port()
310 return container_of(port, struct icom_port, uart_port); in to_icom_port()
383 static inline void trace(struct icom_port *icom_port, char *trace_pt, in trace() argument
386 dev_info(&icom_port->adapter->pci_dev->dev, ":%d:%s - %lx\n", in trace()
387 icom_port->port, trace_pt, trace_data); in trace()
390 static inline void trace(struct icom_port *icom_port, char *trace_pt, unsigned long trace_data) {}; in trace() argument
394 static void free_port_memory(struct icom_port *icom_port) in free_port_memory() argument
396 struct pci_dev *dev = icom_port->adapter->pci_dev; in free_port_memory()
398 trace(icom_port, "RET_PORT_MEM", 0); in free_port_memory()
399 if (icom_port->recv_buf) { in free_port_memory()
400 dma_free_coherent(&dev->dev, 4096, icom_port->recv_buf, in free_port_memory()
401 icom_port->recv_buf_pci); in free_port_memory()
402 icom_port->recv_buf = NULL; in free_port_memory()
404 if (icom_port->xmit_buf) { in free_port_memory()
405 dma_free_coherent(&dev->dev, 4096, icom_port->xmit_buf, in free_port_memory()
406 icom_port->xmit_buf_pci); in free_port_memory()
407 icom_port->xmit_buf = NULL; in free_port_memory()
409 if (icom_port->statStg) { in free_port_memory()
410 dma_free_coherent(&dev->dev, 4096, icom_port->statStg, in free_port_memory()
411 icom_port->statStg_pci); in free_port_memory()
412 icom_port->statStg = NULL; in free_port_memory()
415 if (icom_port->xmitRestart) { in free_port_memory()
416 dma_free_coherent(&dev->dev, 4096, icom_port->xmitRestart, in free_port_memory()
417 icom_port->xmitRestart_pci); in free_port_memory()
418 icom_port->xmitRestart = NULL; in free_port_memory()
422 static int get_port_memory(struct icom_port *icom_port) in get_port_memory() argument
428 struct pci_dev *dev = icom_port->adapter->pci_dev; in get_port_memory()
430 icom_port->xmit_buf = in get_port_memory()
431 dma_alloc_coherent(&dev->dev, 4096, &icom_port->xmit_buf_pci, in get_port_memory()
433 if (!icom_port->xmit_buf) { in get_port_memory()
438 trace(icom_port, "GET_PORT_MEM", in get_port_memory()
439 (unsigned long) icom_port->xmit_buf); in get_port_memory()
441 icom_port->recv_buf = in get_port_memory()
442 dma_alloc_coherent(&dev->dev, 4096, &icom_port->recv_buf_pci, in get_port_memory()
444 if (!icom_port->recv_buf) { in get_port_memory()
446 free_port_memory(icom_port); in get_port_memory()
449 trace(icom_port, "GET_PORT_MEM", in get_port_memory()
450 (unsigned long) icom_port->recv_buf); in get_port_memory()
452 icom_port->statStg = in get_port_memory()
453 dma_alloc_coherent(&dev->dev, 4096, &icom_port->statStg_pci, in get_port_memory()
455 if (!icom_port->statStg) { in get_port_memory()
457 free_port_memory(icom_port); in get_port_memory()
460 trace(icom_port, "GET_PORT_MEM", in get_port_memory()
461 (unsigned long) icom_port->statStg); in get_port_memory()
463 icom_port->xmitRestart = in get_port_memory()
464 dma_alloc_coherent(&dev->dev, 4096, &icom_port->xmitRestart_pci, in get_port_memory()
466 if (!icom_port->xmitRestart) { in get_port_memory()
469 free_port_memory(icom_port); in get_port_memory()
477 stgAddr = (unsigned long) icom_port->statStg; in get_port_memory()
479 trace(icom_port, "FOD_ADDR", stgAddr); in get_port_memory()
480 stgAddr = stgAddr + sizeof(icom_port->statStg->xmit[0]); in get_port_memory()
482 memset(&icom_port->statStg->xmit[index], 0, sizeof(struct xmit_status_area)); in get_port_memory()
483 icom_port->statStg->xmit[index].leLengthASD = in get_port_memory()
485 trace(icom_port, "FOD_ADDR", stgAddr); in get_port_memory()
486 trace(icom_port, "FOD_XBUFF", in get_port_memory()
487 (unsigned long) icom_port->xmit_buf); in get_port_memory()
488 icom_port->statStg->xmit[index].leBuffer = in get_port_memory()
489 cpu_to_le32(icom_port->xmit_buf_pci); in get_port_memory()
491 memset(&icom_port->statStg->xmit[index], 0, sizeof(struct xmit_status_area)); in get_port_memory()
492 icom_port->statStg->xmit[index].leLengthASD = in get_port_memory()
494 trace(icom_port, "FOD_XBUFF", in get_port_memory()
495 (unsigned long) icom_port->xmit_buf); in get_port_memory()
496 icom_port->statStg->xmit[index].leBuffer = in get_port_memory()
497 cpu_to_le32(icom_port->xmit_buf_pci); in get_port_memory()
499 memset(&icom_port->statStg->xmit[index], 0, sizeof(struct xmit_status_area)); in get_port_memory()
507 trace(icom_port, "FID_ADDR", stgAddr); in get_port_memory()
508 stgAddr = stgAddr + sizeof(icom_port->statStg->rcv[0]); in get_port_memory()
509 icom_port->statStg->rcv[index].leLength = 0; in get_port_memory()
510 icom_port->statStg->rcv[index].WorkingLength = in get_port_memory()
513 offset = stgAddr - (unsigned long) icom_port->statStg; in get_port_memory()
514 icom_port->statStg->rcv[index].leNext = in get_port_memory()
515 cpu_to_le32(icom_port-> statStg_pci + offset); in get_port_memory()
516 trace(icom_port, "FID_RBUFF", in get_port_memory()
517 (unsigned long) icom_port->recv_buf); in get_port_memory()
518 icom_port->statStg->rcv[index].leBuffer = in get_port_memory()
519 cpu_to_le32(icom_port->recv_buf_pci); in get_port_memory()
521 offset = startStgAddr - (unsigned long) icom_port->statStg; in get_port_memory()
522 icom_port->statStg->rcv[index].leNext = in get_port_memory()
523 cpu_to_le32(icom_port-> statStg_pci + offset); in get_port_memory()
524 trace(icom_port, "FID_RBUFF", in get_port_memory()
525 (unsigned long) icom_port->recv_buf + 2048); in get_port_memory()
526 icom_port->statStg->rcv[index].leBuffer = in get_port_memory()
527 cpu_to_le32(icom_port->recv_buf_pci + 2048); in get_port_memory()
529 icom_port->statStg->rcv[index].leNext = 0; in get_port_memory()
530 icom_port->statStg->rcv[index].leBuffer = 0; in get_port_memory()
537 static void stop_processor(struct icom_port *icom_port) in stop_processor() argument
545 port = icom_port->port; in stop_processor()
547 dev_err(&icom_port->adapter->pci_dev->dev, in stop_processor()
553 stop_proc[port].global_control_reg = &icom_port->global_reg->control; in stop_processor()
555 stop_proc[port].global_control_reg = &icom_port->global_reg->control_2; in stop_processor()
568 static void start_processor(struct icom_port *icom_port) in start_processor() argument
576 port = icom_port->port; in start_processor()
578 dev_err(&icom_port->adapter->pci_dev->dev, in start_processor()
584 start_proc[port].global_control_reg = &icom_port->global_reg->control; in start_processor()
586 start_proc[port].global_control_reg = &icom_port->global_reg->control_2; in start_processor()
599 static void load_code(struct icom_port *icom_port) in load_code() argument
605 void __iomem *dram_ptr = icom_port->dram; in load_code()
609 struct pci_dev *dev = icom_port->adapter->pci_dev; in load_code()
612 writew(0x3FFF, icom_port->int_reg); in load_code()
614 trace(icom_port, "CLEAR_INTERRUPTS", 0); in load_code()
617 stop_processor(icom_port); in load_code()
636 iram_ptr = (char __iomem *)icom_port->dram + ICOM_IRAM_OFFSET; in load_code()
656 iram_ptr = (char __iomem *) icom_port->dram + ICOM_IRAM_OFFSET; in load_code()
663 if (icom_port->adapter->version == ADAPTER_V2) in load_code()
664 writeb(V2_HARDWARE, &(icom_port->dram->misc_flags)); in load_code()
667 start_processor(icom_port); in load_code()
670 &(icom_port->dram->HDLCConfigReg)); in load_code()
671 writeb(0x04, &(icom_port->dram->FlagFillIdleTimer)); /* 0.5 seconds */ in load_code()
672 writeb(0x00, &(icom_port->dram->CmdReg)); in load_code()
673 writeb(0x10, &(icom_port->dram->async_config3)); in load_code()
675 ICOM_ACFG_1STOP_BIT), &(icom_port->dram->async_config2)); in load_code()
704 writeb((char) ((fw->size + 16)/16), &icom_port->dram->mac_length); in load_code()
705 writel(temp_pci, &icom_port->dram->mac_load_addr); in load_code()
718 writeb(START_DOWNLOAD, &icom_port->dram->sync); in load_code()
723 if (readb(&icom_port->dram->misc_flags) & ICOM_HDW_ACTIVE) in load_code()
733 cable_id = readb(&icom_port->dram->cable_id); in load_code()
738 icom_port->cable_id = cable_id; in load_code()
741 icom_port->cable_id = NO_CABLE; in load_code()
748 writew(0x3FFF, icom_port->int_reg); in load_code()
751 writeb(ICOM_DISABLE, &(icom_port->dram->disable)); in load_code()
754 stop_processor(icom_port); in load_code()
756 dev_err(&icom_port->adapter->pci_dev->dev,"Port not operational\n"); in load_code()
763 static int startup(struct icom_port *icom_port) in startup() argument
770 trace(icom_port, "STARTUP", 0); in startup()
772 if (!icom_port->dram) { in startup()
774 dev_err(&icom_port->adapter->pci_dev->dev, in startup()
782 raw_cable_id = readb(&icom_port->dram->cable_id); in startup()
783 trace(icom_port, "CABLE_ID", raw_cable_id); in startup()
790 (cable_id != icom_port->cable_id)) { in startup()
793 load_code(icom_port); in startup()
796 raw_cable_id = readb(&icom_port->dram->cable_id); in startup()
799 (icom_port->cable_id == NO_CABLE)) in startup()
807 port = icom_port->port; in startup()
809 dev_err(&icom_port->adapter->pci_dev->dev, in startup()
815 int_mask_tbl[port].global_int_mask = &icom_port->global_reg->int_mask; in startup()
817 int_mask_tbl[port].global_int_mask = &icom_port->global_reg->int_mask_2; in startup()
820 writew(0x00FF, icom_port->int_reg); in startup()
822 writew(0x3F00, icom_port->int_reg); in startup()
835 static void shutdown(struct icom_port *icom_port) in shutdown() argument
843 trace(icom_port, "SHUTDOWN", 0); in shutdown()
848 port = icom_port->port; in shutdown()
850 dev_err(&icom_port->adapter->pci_dev->dev, in shutdown()
855 int_mask_tbl[port].global_int_mask = &icom_port->global_reg->int_mask; in shutdown()
857 int_mask_tbl[port].global_int_mask = &icom_port->global_reg->int_mask_2; in shutdown()
871 cmdReg = readb(&icom_port->dram->CmdReg); in shutdown()
873 writeb(cmdReg & ~CMD_SND_BREAK, &icom_port->dram->CmdReg); in shutdown()
879 struct icom_port *icom_port = to_icom_port(port); in icom_write() local
885 trace(icom_port, "WRITE", 0); in icom_write()
887 if (le16_to_cpu(icom_port->statStg->xmit[0].flags) & in icom_write()
889 trace(icom_port, "WRITE_FULL", 0); in icom_write()
897 icom_port->xmit_buf[data_count++] = in icom_write()
905 icom_port->statStg->xmit[0].flags = in icom_write()
907 icom_port->statStg->xmit[0].leLength = in icom_write()
910 (unsigned long) &icom_port->statStg->xmit[0] - in icom_write()
911 (unsigned long) icom_port->statStg; in icom_write()
912 *icom_port->xmitRestart = in icom_write()
913 cpu_to_le32(icom_port->statStg_pci + offset); in icom_write()
914 cmdReg = readb(&icom_port->dram->CmdReg); in icom_write()
916 &icom_port->dram->CmdReg); in icom_write()
917 writeb(START_XMIT, &icom_port->dram->StartXmitCmd); in icom_write()
918 trace(icom_port, "WRITE_START", data_count); in icom_write()
920 readb(&icom_port->dram->StartXmitCmd); in icom_write()
926 static inline void check_modem_status(struct icom_port *icom_port) in check_modem_status() argument
932 spin_lock(&icom_port->uart_port.lock); in check_modem_status()
935 status = readb(&icom_port->dram->isr); in check_modem_status()
936 trace(icom_port, "CHECK_MODEM", status); in check_modem_status()
940 icom_port->uart_port.icount.rng++; in check_modem_status()
942 icom_port->uart_port.icount.dsr++; in check_modem_status()
944 uart_handle_dcd_change(&icom_port->uart_port, in check_modem_status()
947 uart_handle_cts_change(&icom_port->uart_port, in check_modem_status()
950 wake_up_interruptible(&icom_port->uart_port.state-> in check_modem_status()
954 spin_unlock(&icom_port->uart_port.lock); in check_modem_status()
957 static void xmit_interrupt(u16 port_int_reg, struct icom_port *icom_port) in xmit_interrupt() argument
962 trace(icom_port, "XMIT_COMPLETE", 0); in xmit_interrupt()
965 icom_port->statStg->xmit[0].flags &= in xmit_interrupt()
968 count = le16_to_cpu(icom_port->statStg->xmit[0].leLength); in xmit_interrupt()
969 icom_port->uart_port.icount.tx += count; in xmit_interrupt()
972 !uart_circ_empty(&icom_port->uart_port.state->xmit); i++) { in xmit_interrupt()
974 icom_port->uart_port.state->xmit.tail++; in xmit_interrupt()
975 icom_port->uart_port.state->xmit.tail &= in xmit_interrupt()
979 if (!icom_write(&icom_port->uart_port)) in xmit_interrupt()
981 uart_write_wakeup(&icom_port->uart_port); in xmit_interrupt()
983 trace(icom_port, "XMIT_DISABLED", 0); in xmit_interrupt()
986 static void recv_interrupt(u16 port_int_reg, struct icom_port *icom_port) in recv_interrupt() argument
989 struct tty_port *port = &icom_port->uart_port.state->port; in recv_interrupt()
995 trace(icom_port, "RCV_COMPLETE", 0); in recv_interrupt()
996 rcv_buff = icom_port->next_rcv; in recv_interrupt()
998 status = le16_to_cpu(icom_port->statStg->rcv[rcv_buff].flags); in recv_interrupt()
1002 trace(icom_port, "FID_STATUS", status); in recv_interrupt()
1003 count = le16_to_cpu(icom_port->statStg->rcv[rcv_buff].leLength); in recv_interrupt()
1005 trace(icom_port, "RCV_COUNT", count); in recv_interrupt()
1007 trace(icom_port, "REAL_COUNT", count); in recv_interrupt()
1009 offset = le32_to_cpu(icom_port->statStg->rcv[rcv_buff].leBuffer) - in recv_interrupt()
1010 icom_port->recv_buf_pci; in recv_interrupt()
1014 first = icom_port->recv_buf[offset]; in recv_interrupt()
1015 tty_insert_flip_string(port, icom_port->recv_buf + offset, count - 1); in recv_interrupt()
1018 icount = &icom_port->uart_port.icount; in recv_interrupt()
1026 trace(icom_port, "BREAK_DET", 0); in recv_interrupt()
1049 if (status & icom_port->ignore_status_mask) { in recv_interrupt()
1050 trace(icom_port, "IGNORE_CHAR", 0); in recv_interrupt()
1054 status &= icom_port->read_status_mask; in recv_interrupt()
1059 trace(icom_port, "PARITY_ERROR", 0); in recv_interrupt()
1066 tty_insert_flip_char(port, *(icom_port->recv_buf + offset + count - 1), flag); in recv_interrupt()
1076 icom_port->statStg->rcv[rcv_buff].flags = 0; in recv_interrupt()
1077 icom_port->statStg->rcv[rcv_buff].leLength = 0; in recv_interrupt()
1078 icom_port->statStg->rcv[rcv_buff].WorkingLength = in recv_interrupt()
1085 status = le16_to_cpu(icom_port->statStg->rcv[rcv_buff].flags); in recv_interrupt()
1087 icom_port->next_rcv = rcv_buff; in recv_interrupt()
1093 struct icom_port *icom_port) in process_interrupt() argument
1096 spin_lock(&icom_port->uart_port.lock); in process_interrupt()
1097 trace(icom_port, "INTERRUPT", port_int_reg); in process_interrupt()
1100 xmit_interrupt(port_int_reg, icom_port); in process_interrupt()
1103 recv_interrupt(port_int_reg, icom_port); in process_interrupt()
1105 spin_unlock(&icom_port->uart_port.lock); in process_interrupt()
1114 struct icom_port *icom_port; in icom_interrupt() local
1126 icom_port = &icom_adapter->port_info[2]; in icom_interrupt()
1128 process_interrupt(port_int_reg, icom_port); in icom_interrupt()
1129 check_modem_status(icom_port); in icom_interrupt()
1133 icom_port = &icom_adapter->port_info[3]; in icom_interrupt()
1134 if (icom_port->status == ICOM_PORT_ACTIVE) { in icom_interrupt()
1137 process_interrupt(port_int_reg, icom_port); in icom_interrupt()
1138 check_modem_status(icom_port); in icom_interrupt()
1154 icom_port = &icom_adapter->port_info[0]; in icom_interrupt()
1156 process_interrupt(port_int_reg, icom_port); in icom_interrupt()
1157 check_modem_status(icom_port); in icom_interrupt()
1161 icom_port = &icom_adapter->port_info[1]; in icom_interrupt()
1162 if (icom_port->status == ICOM_PORT_ACTIVE) { in icom_interrupt()
1164 process_interrupt(port_int_reg, icom_port); in icom_interrupt()
1165 check_modem_status(icom_port); in icom_interrupt()
1185 struct icom_port *icom_port = to_icom_port(port); in icom_tx_empty() local
1190 if (le16_to_cpu(icom_port->statStg->xmit[0].flags) & in icom_tx_empty()
1202 struct icom_port *icom_port = to_icom_port(port); in icom_set_mctrl() local
1205 trace(icom_port, "SET_MODEM", 0); in icom_set_mctrl()
1206 local_osr = readb(&icom_port->dram->osr); in icom_set_mctrl()
1209 trace(icom_port, "RAISE_RTS", 0); in icom_set_mctrl()
1212 trace(icom_port, "LOWER_RTS", 0); in icom_set_mctrl()
1217 trace(icom_port, "RAISE_DTR", 0); in icom_set_mctrl()
1220 trace(icom_port, "LOWER_DTR", 0); in icom_set_mctrl()
1224 writeb(local_osr, &icom_port->dram->osr); in icom_set_mctrl()
1229 struct icom_port *icom_port = to_icom_port(port); in icom_get_mctrl() local
1233 trace(icom_port, "GET_MODEM", 0); in icom_get_mctrl()
1235 status = readb(&icom_port->dram->isr); in icom_get_mctrl()
1246 struct icom_port *icom_port = to_icom_port(port); in icom_stop_tx() local
1249 trace(icom_port, "STOP", 0); in icom_stop_tx()
1250 cmdReg = readb(&icom_port->dram->CmdReg); in icom_stop_tx()
1251 writeb(cmdReg | CMD_HOLD_XMIT, &icom_port->dram->CmdReg); in icom_stop_tx()
1256 struct icom_port *icom_port = to_icom_port(port); in icom_start_tx() local
1259 trace(icom_port, "START", 0); in icom_start_tx()
1260 cmdReg = readb(&icom_port->dram->CmdReg); in icom_start_tx()
1263 &icom_port->dram->CmdReg); in icom_start_tx()
1270 struct icom_port *icom_port = to_icom_port(port); in icom_send_xchar() local
1275 trace(icom_port, "SEND_XCHAR", ch); in icom_send_xchar()
1280 xdata = readb(&icom_port->dram->xchar); in icom_send_xchar()
1282 trace(icom_port, "QUICK_WRITE", 0); in icom_send_xchar()
1283 writeb(ch, &icom_port->dram->xchar); in icom_send_xchar()
1286 xdata = readb(&icom_port->dram->xchar); in icom_send_xchar()
1297 struct icom_port *icom_port = to_icom_port(port); in icom_stop_rx() local
1300 cmdReg = readb(&icom_port->dram->CmdReg); in icom_stop_rx()
1301 writeb(cmdReg & ~CMD_RCV_ENABLE, &icom_port->dram->CmdReg); in icom_stop_rx()
1306 struct icom_port *icom_port = to_icom_port(port); in icom_break() local
1311 trace(icom_port, "BREAK", 0); in icom_break()
1312 cmdReg = readb(&icom_port->dram->CmdReg); in icom_break()
1314 writeb(cmdReg | CMD_SND_BREAK, &icom_port->dram->CmdReg); in icom_break()
1316 writeb(cmdReg & ~CMD_SND_BREAK, &icom_port->dram->CmdReg); in icom_break()
1323 struct icom_port *icom_port = to_icom_port(port); in icom_open() local
1326 kref_get(&icom_port->adapter->kref); in icom_open()
1327 retval = startup(icom_port); in icom_open()
1330 kref_put(&icom_port->adapter->kref, icom_kref_release); in icom_open()
1331 trace(icom_port, "STARTUP_ERROR", 0); in icom_open()
1340 struct icom_port *icom_port = to_icom_port(port); in icom_close() local
1343 trace(icom_port, "CLOSE", 0); in icom_close()
1346 cmdReg = readb(&icom_port->dram->CmdReg); in icom_close()
1347 writeb(cmdReg & ~CMD_RCV_ENABLE, &icom_port->dram->CmdReg); in icom_close()
1349 shutdown(icom_port); in icom_close()
1351 kref_put(&icom_port->adapter->kref, icom_kref_release); in icom_close()
1357 struct icom_port *icom_port = to_icom_port(port); in icom_set_termios() local
1369 trace(icom_port, "CHANGE_SPEED", 0); in icom_set_termios()
1400 trace(icom_port, "PARENB", 0); in icom_set_termios()
1405 trace(icom_port, "PARODD", 0); in icom_set_termios()
1425 tmp_byte = readb(&(icom_port->dram->HDLCConfigReg)); in icom_set_termios()
1430 writeb(tmp_byte, &(icom_port->dram->HDLCConfigReg)); in icom_set_termios()
1435 icom_port->read_status_mask = SA_FLAGS_OVERRUN | SA_FL_RCV_DONE; in icom_set_termios()
1437 icom_port->read_status_mask |= in icom_set_termios()
1441 icom_port->read_status_mask |= SA_FLAGS_BREAK_DET; in icom_set_termios()
1446 icom_port->ignore_status_mask = 0; in icom_set_termios()
1448 icom_port->ignore_status_mask |= in icom_set_termios()
1451 icom_port->ignore_status_mask |= SA_FLAGS_BREAK_DET; in icom_set_termios()
1457 icom_port->ignore_status_mask |= SA_FLAGS_OVERRUN; in icom_set_termios()
1464 icom_port->ignore_status_mask |= SA_FL_RCV_DONE; in icom_set_termios()
1467 writeb(CMD_RCV_DISABLE, &icom_port->dram->CmdReg); in icom_set_termios()
1470 if (readb(&icom_port->dram->PrevCmdReg) == 0x00) { in icom_set_termios()
1477 icom_port->statStg->rcv[rcv_buff].flags = 0; in icom_set_termios()
1478 icom_port->statStg->rcv[rcv_buff].leLength = 0; in icom_set_termios()
1479 icom_port->statStg->rcv[rcv_buff].WorkingLength = in icom_set_termios()
1484 icom_port->statStg->xmit[xmit_buff].flags = 0; in icom_set_termios()
1489 writeb(new_config3, &(icom_port->dram->async_config3)); in icom_set_termios()
1490 writeb(new_config2, &(icom_port->dram->async_config2)); in icom_set_termios()
1491 tmp_byte = readb(&(icom_port->dram->HDLCConfigReg)); in icom_set_termios()
1493 writeb(tmp_byte, &(icom_port->dram->HDLCConfigReg)); in icom_set_termios()
1494 writeb(0x04, &(icom_port->dram->FlagFillIdleTimer)); /* 0.5 seconds */ in icom_set_termios()
1495 writeb(0xFF, &(icom_port->dram->ier)); /* enable modem signal interrupts */ in icom_set_termios()
1498 writeb(CMD_RESTART, &icom_port->dram->CmdReg); in icom_set_termios()
1501 if (readb(&icom_port->dram->CmdReg) == 0x00) { in icom_set_termios()
1508 (unsigned long) &icom_port->statStg->rcv[0] - in icom_set_termios()
1509 (unsigned long) icom_port->statStg; in icom_set_termios()
1510 writel(icom_port->statStg_pci + offset, in icom_set_termios()
1511 &icom_port->dram->RcvStatusAddr); in icom_set_termios()
1512 icom_port->next_rcv = 0; in icom_set_termios()
1513 *icom_port->xmitRestart = 0; in icom_set_termios()
1514 writel(icom_port->xmitRestart_pci, in icom_set_termios()
1515 &icom_port->dram->XmitStatusAddr); in icom_set_termios()
1516 trace(icom_port, "XR_ENAB", 0); in icom_set_termios()
1517 writeb(CMD_XMIT_RCV_ENABLE, &icom_port->dram->CmdReg); in icom_set_termios()
1564 struct icom_port *icom_port; in icom_init_ports() local
1570 icom_port = &icom_adapter->port_info[i]; in icom_init_ports()
1571 icom_port->port = i; in icom_init_ports()
1572 icom_port->status = ICOM_PORT_ACTIVE; in icom_init_ports()
1579 icom_port = &icom_adapter->port_info[i]; in icom_init_ports()
1581 icom_port->port = i; in icom_init_ports()
1582 icom_port->status = ICOM_PORT_ACTIVE; in icom_init_ports()
1599 static void icom_port_active(struct icom_port *icom_port, struct icom_adapter *icom_adapter, int po… in icom_port_active() argument
1602 icom_port->global_reg = icom_adapter->base_addr + 0x4000; in icom_port_active()
1603 icom_port->int_reg = icom_adapter->base_addr + in icom_port_active()
1606 icom_port->global_reg = icom_adapter->base_addr + 0x8000; in icom_port_active()
1607 if (icom_port->port < 2) in icom_port_active()
1608 icom_port->int_reg = icom_adapter->base_addr + in icom_port_active()
1609 0x8004 + 2 - 2 * icom_port->port; in icom_port_active()
1611 icom_port->int_reg = icom_adapter->base_addr + in icom_port_active()
1612 0x8024 + 2 - 2 * (icom_port->port - 2); in icom_port_active()
1617 struct icom_port *icom_port; in icom_load_ports() local
1622 icom_port = &icom_adapter->port_info[port_num]; in icom_load_ports()
1624 if (icom_port->status == ICOM_PORT_ACTIVE) { in icom_load_ports()
1625 icom_port_active(icom_port, icom_adapter, port_num); in icom_load_ports()
1626 icom_port->dram = icom_adapter->base_addr + in icom_load_ports()
1627 0x2000 * icom_port->port; in icom_load_ports()
1629 icom_port->adapter = icom_adapter; in icom_load_ports()
1632 if (get_port_memory(icom_port) != 0) { in icom_load_ports()
1633 dev_err(&icom_port->adapter->pci_dev->dev, in icom_load_ports()
1680 struct icom_port *icom_port; in icom_kref_release() local
1684 icom_port = &icom_adapter->port_info[index]; in icom_kref_release()
1686 if (icom_port->status == ICOM_PORT_ACTIVE) { in icom_kref_release()
1691 &icom_port->uart_port); in icom_kref_release()
1694 writeb(0x00, &icom_port->dram->osr); in icom_kref_release()
1700 stop_processor(icom_port); in icom_kref_release()
1702 free_port_memory(icom_port); in icom_kref_release()
1719 struct icom_port *icom_port; in icom_probe() local
1789 icom_port = &icom_adapter->port_info[index]; in icom_probe()
1791 if (icom_port->status == ICOM_PORT_ACTIVE) { in icom_probe()
1792 icom_port->uart_port.irq = icom_port->adapter->pci_dev->irq; in icom_probe()
1793 icom_port->uart_port.type = PORT_ICOM; in icom_probe()
1794 icom_port->uart_port.iotype = UPIO_MEM; in icom_probe()
1795 icom_port->uart_port.membase = in icom_probe()
1797 icom_port->uart_port.fifosize = 16; in icom_probe()
1798 icom_port->uart_port.ops = &icom_ops; in icom_probe()
1799 icom_port->uart_port.line = in icom_probe()
1800 icom_port->port + icom_adapter->index * 4; in icom_probe()
1801 if (uart_add_one_port (&icom_uart_driver, &icom_port->uart_port)) { in icom_probe()
1802 icom_port->status = ICOM_PORT_OFF; in icom_probe()