Lines Matching +full:cable +full:- +full:modem

1 // SPDX-License-Identifier: GPL-2.0+
127 dev_info(&icom_port->adapter->pci_dev->dev, ":%d:%s - %lx\n", in trace()
128 icom_port->port, trace_pt, trace_data); in trace()
137 struct pci_dev *dev = icom_port->adapter->pci_dev; in free_port_memory()
140 if (icom_port->recv_buf) { in free_port_memory()
141 dma_free_coherent(&dev->dev, 4096, icom_port->recv_buf, in free_port_memory()
142 icom_port->recv_buf_pci); in free_port_memory()
143 icom_port->recv_buf = NULL; in free_port_memory()
145 if (icom_port->xmit_buf) { in free_port_memory()
146 dma_free_coherent(&dev->dev, 4096, icom_port->xmit_buf, in free_port_memory()
147 icom_port->xmit_buf_pci); in free_port_memory()
148 icom_port->xmit_buf = NULL; in free_port_memory()
150 if (icom_port->statStg) { in free_port_memory()
151 dma_free_coherent(&dev->dev, 4096, icom_port->statStg, in free_port_memory()
152 icom_port->statStg_pci); in free_port_memory()
153 icom_port->statStg = NULL; in free_port_memory()
156 if (icom_port->xmitRestart) { in free_port_memory()
157 dma_free_coherent(&dev->dev, 4096, icom_port->xmitRestart, in free_port_memory()
158 icom_port->xmitRestart_pci); in free_port_memory()
159 icom_port->xmitRestart = NULL; in free_port_memory()
169 struct pci_dev *dev = icom_port->adapter->pci_dev; in get_port_memory()
171 icom_port->xmit_buf = in get_port_memory()
172 dma_alloc_coherent(&dev->dev, 4096, &icom_port->xmit_buf_pci, in get_port_memory()
174 if (!icom_port->xmit_buf) { in get_port_memory()
175 dev_err(&dev->dev, "Can not allocate Transmit buffer\n"); in get_port_memory()
176 return -ENOMEM; in get_port_memory()
180 (unsigned long) icom_port->xmit_buf); in get_port_memory()
182 icom_port->recv_buf = in get_port_memory()
183 dma_alloc_coherent(&dev->dev, 4096, &icom_port->recv_buf_pci, in get_port_memory()
185 if (!icom_port->recv_buf) { in get_port_memory()
186 dev_err(&dev->dev, "Can not allocate Receive buffer\n"); in get_port_memory()
188 return -ENOMEM; in get_port_memory()
191 (unsigned long) icom_port->recv_buf); in get_port_memory()
193 icom_port->statStg = in get_port_memory()
194 dma_alloc_coherent(&dev->dev, 4096, &icom_port->statStg_pci, in get_port_memory()
196 if (!icom_port->statStg) { in get_port_memory()
197 dev_err(&dev->dev, "Can not allocate Status buffer\n"); in get_port_memory()
199 return -ENOMEM; in get_port_memory()
202 (unsigned long) icom_port->statStg); in get_port_memory()
204 icom_port->xmitRestart = in get_port_memory()
205 dma_alloc_coherent(&dev->dev, 4096, &icom_port->xmitRestart_pci, in get_port_memory()
207 if (!icom_port->xmitRestart) { in get_port_memory()
208 dev_err(&dev->dev, in get_port_memory()
211 return -ENOMEM; in get_port_memory()
218 stgAddr = (unsigned long) icom_port->statStg; in get_port_memory()
221 stgAddr = stgAddr + sizeof(icom_port->statStg->xmit[0]); in get_port_memory()
222 if (index < (NUM_XBUFFS - 1)) { in get_port_memory()
223 memset(&icom_port->statStg->xmit[index], 0, sizeof(struct xmit_status_area)); in get_port_memory()
224 icom_port->statStg->xmit[index].leLengthASD = in get_port_memory()
228 (unsigned long) icom_port->xmit_buf); in get_port_memory()
229 icom_port->statStg->xmit[index].leBuffer = in get_port_memory()
230 cpu_to_le32(icom_port->xmit_buf_pci); in get_port_memory()
231 } else if (index == (NUM_XBUFFS - 1)) { in get_port_memory()
232 memset(&icom_port->statStg->xmit[index], 0, sizeof(struct xmit_status_area)); in get_port_memory()
233 icom_port->statStg->xmit[index].leLengthASD = in get_port_memory()
236 (unsigned long) icom_port->xmit_buf); in get_port_memory()
237 icom_port->statStg->xmit[index].leBuffer = in get_port_memory()
238 cpu_to_le32(icom_port->xmit_buf_pci); in get_port_memory()
240 memset(&icom_port->statStg->xmit[index], 0, sizeof(struct xmit_status_area)); in get_port_memory()
249 stgAddr = stgAddr + sizeof(icom_port->statStg->rcv[0]); in get_port_memory()
250 icom_port->statStg->rcv[index].leLength = 0; in get_port_memory()
251 icom_port->statStg->rcv[index].WorkingLength = in get_port_memory()
253 if (index < (NUM_RBUFFS - 1) ) { in get_port_memory()
254 offset = stgAddr - (unsigned long) icom_port->statStg; in get_port_memory()
255 icom_port->statStg->rcv[index].leNext = in get_port_memory()
256 cpu_to_le32(icom_port-> statStg_pci + offset); in get_port_memory()
258 (unsigned long) icom_port->recv_buf); in get_port_memory()
259 icom_port->statStg->rcv[index].leBuffer = in get_port_memory()
260 cpu_to_le32(icom_port->recv_buf_pci); in get_port_memory()
261 } else if (index == (NUM_RBUFFS -1) ) { in get_port_memory()
262 offset = startStgAddr - (unsigned long) icom_port->statStg; in get_port_memory()
263 icom_port->statStg->rcv[index].leNext = in get_port_memory()
264 cpu_to_le32(icom_port-> statStg_pci + offset); in get_port_memory()
266 (unsigned long) icom_port->recv_buf + 2048); in get_port_memory()
267 icom_port->statStg->rcv[index].leBuffer = in get_port_memory()
268 cpu_to_le32(icom_port->recv_buf_pci + 2048); in get_port_memory()
270 icom_port->statStg->rcv[index].leNext = 0; in get_port_memory()
271 icom_port->statStg->rcv[index].leBuffer = 0; in get_port_memory()
286 port = icom_port->port; in stop_processor()
288 dev_err(&icom_port->adapter->pci_dev->dev, in stop_processor()
294 stop_proc[port].global_control_reg = &icom_port->global_reg->control; in stop_processor()
296 stop_proc[port].global_control_reg = &icom_port->global_reg->control_2; in stop_processor()
317 port = icom_port->port; in start_processor()
319 dev_err(&icom_port->adapter->pci_dev->dev, in start_processor()
325 start_proc[port].global_control_reg = &icom_port->global_reg->control; in start_processor()
327 start_proc[port].global_control_reg = &icom_port->global_reg->control_2; in start_processor()
346 void __iomem *dram_ptr = icom_port->dram; in load_code()
350 struct pci_dev *dev = icom_port->adapter->pci_dev; in load_code()
353 writew(0x3FFF, icom_port->int_reg); in load_code()
364 if (request_firmware(&fw, "icom_call_setup.bin", &dev->dev) < 0) { in load_code()
365 dev_err(&dev->dev,"Unable to load icom_call_setup.bin firmware image\n"); in load_code()
366 status = -1; in load_code()
370 if (fw->size > ICOM_DCE_IRAM_OFFSET) { in load_code()
371 dev_err(&dev->dev, "Invalid firmware image for icom_call_setup.bin found.\n"); in load_code()
373 status = -1; in load_code()
377 iram_ptr = (char __iomem *)icom_port->dram + ICOM_IRAM_OFFSET; in load_code()
378 for (index = 0; index < fw->size; index++) in load_code()
379 writeb(fw->data[index], &iram_ptr[index]); in load_code()
384 if (request_firmware(&fw, "icom_res_dce.bin", &dev->dev) < 0) { in load_code()
385 dev_err(&dev->dev,"Unable to load icom_res_dce.bin firmware image\n"); in load_code()
386 status = -1; in load_code()
390 if (fw->size > ICOM_IRAM_SIZE) { in load_code()
391 dev_err(&dev->dev, "Invalid firmware image for icom_res_dce.bin found.\n"); in load_code()
393 status = -1; in load_code()
397 iram_ptr = (char __iomem *) icom_port->dram + ICOM_IRAM_OFFSET; in load_code()
398 for (index = ICOM_DCE_IRAM_OFFSET; index < fw->size; index++) in load_code()
399 writeb(fw->data[index], &iram_ptr[index]); in load_code()
404 if (icom_port->adapter->version == ADAPTER_V2) in load_code()
405 writeb(V2_HARDWARE, &(icom_port->dram->misc_flags)); in load_code()
411 &(icom_port->dram->HDLCConfigReg)); in load_code()
412 writeb(0x04, &(icom_port->dram->FlagFillIdleTimer)); /* 0.5 seconds */ in load_code()
413 writeb(0x00, &(icom_port->dram->CmdReg)); in load_code()
414 writeb(0x10, &(icom_port->dram->async_config3)); in load_code()
416 ICOM_ACFG_1STOP_BIT), &(icom_port->dram->async_config2)); in load_code()
421 new_page = dma_alloc_coherent(&dev->dev, 4096, &temp_pci, GFP_KERNEL); in load_code()
424 dev_err(&dev->dev, "Can not allocate DMA buffer\n"); in load_code()
425 status = -1; in load_code()
429 if (request_firmware(&fw, "icom_asc.bin", &dev->dev) < 0) { in load_code()
430 dev_err(&dev->dev,"Unable to load icom_asc.bin firmware image\n"); in load_code()
431 status = -1; in load_code()
435 if (fw->size > ICOM_DCE_IRAM_OFFSET) { in load_code()
436 dev_err(&dev->dev, "Invalid firmware image for icom_asc.bin found.\n"); in load_code()
438 status = -1; in load_code()
442 for (index = 0; index < fw->size; index++) in load_code()
443 new_page[index] = fw->data[index]; in load_code()
445 writeb((char) ((fw->size + 16)/16), &icom_port->dram->mac_length); in load_code()
446 writel(temp_pci, &icom_port->dram->mac_load_addr); in load_code()
459 writeb(START_DOWNLOAD, &icom_port->dram->sync); in load_code()
464 if (readb(&icom_port->dram->misc_flags) & ICOM_HDW_ACTIVE) in load_code()
469 status = -1; in load_code()
472 * check Cable ID in load_code()
474 cable_id = readb(&icom_port->dram->cable_id); in load_code()
477 /* Get cable ID into the lower 4 bits (standard form) */ in load_code()
479 icom_port->cable_id = cable_id; in load_code()
481 dev_err(&dev->dev,"Invalid or no cable attached\n"); in load_code()
482 icom_port->cable_id = NO_CABLE; in load_code()
489 writew(0x3FFF, icom_port->int_reg); in load_code()
492 writeb(ICOM_DISABLE, &(icom_port->dram->disable)); in load_code()
497 dev_err(&icom_port->adapter->pci_dev->dev,"Port not operational\n"); in load_code()
501 dma_free_coherent(&dev->dev, 4096, new_page, temp_pci); in load_code()
513 if (!icom_port->dram) { in startup()
515 dev_err(&icom_port->adapter->pci_dev->dev, in startup()
517 return -ENODEV; in startup()
521 * check Cable ID in startup()
523 raw_cable_id = readb(&icom_port->dram->cable_id); in startup()
526 /* Get cable ID into the lower 4 bits (standard form) */ in startup()
529 /* Check for valid Cable ID */ in startup()
531 (cable_id != icom_port->cable_id)) { in startup()
533 /* reload adapter code, pick up any potential changes in cable id */ in startup()
536 /* still no sign of cable, error out */ in startup()
537 raw_cable_id = readb(&icom_port->dram->cable_id); in startup()
540 (icom_port->cable_id == NO_CABLE)) in startup()
541 return -EIO; in startup()
548 port = icom_port->port; in startup()
550 dev_err(&icom_port->adapter->pci_dev->dev, in startup()
556 int_mask_tbl[port].global_int_mask = &icom_port->global_reg->int_mask; in startup()
558 int_mask_tbl[port].global_int_mask = &icom_port->global_reg->int_mask_2; in startup()
561 writew(0x00FF, icom_port->int_reg); in startup()
563 writew(0x3F00, icom_port->int_reg); in startup()
589 port = icom_port->port; in shutdown()
591 dev_err(&icom_port->adapter->pci_dev->dev, in shutdown()
596 int_mask_tbl[port].global_int_mask = &icom_port->global_reg->int_mask; in shutdown()
598 int_mask_tbl[port].global_int_mask = &icom_port->global_reg->int_mask_2; in shutdown()
612 cmdReg = readb(&icom_port->dram->CmdReg); in shutdown()
614 writeb(cmdReg & ~CMD_SND_BREAK, &icom_port->dram->CmdReg); in shutdown()
623 int temp_tail = port->state->xmit.tail; in icom_write()
627 if (cpu_to_le16(ICOM_PORT->statStg->xmit[0].flags) & in icom_write()
634 while ((port->state->xmit.head != temp_tail) && in icom_write()
637 ICOM_PORT->xmit_buf[data_count++] = in icom_write()
638 port->state->xmit.buf[temp_tail]; in icom_write()
641 temp_tail &= (UART_XMIT_SIZE - 1); in icom_write()
645 ICOM_PORT->statStg->xmit[0].flags = in icom_write()
647 ICOM_PORT->statStg->xmit[0].leLength = in icom_write()
650 (unsigned long) &ICOM_PORT->statStg->xmit[0] - in icom_write()
651 (unsigned long) ICOM_PORT->statStg; in icom_write()
652 *ICOM_PORT->xmitRestart = in icom_write()
653 cpu_to_le32(ICOM_PORT->statStg_pci + offset); in icom_write()
654 cmdReg = readb(&ICOM_PORT->dram->CmdReg); in icom_write()
656 &ICOM_PORT->dram->CmdReg); in icom_write()
657 writeb(START_XMIT, &ICOM_PORT->dram->StartXmitCmd); in icom_write()
660 readb(&ICOM_PORT->dram->StartXmitCmd); in icom_write()
672 spin_lock(&icom_port->uart_port.lock); in check_modem_status()
674 /*modem input register */ in check_modem_status()
675 status = readb(&icom_port->dram->isr); in check_modem_status()
680 icom_port->uart_port.icount.rng++; in check_modem_status()
682 icom_port->uart_port.icount.dsr++; in check_modem_status()
684 uart_handle_dcd_change(&icom_port->uart_port, in check_modem_status()
687 uart_handle_cts_change(&icom_port->uart_port, in check_modem_status()
690 wake_up_interruptible(&icom_port->uart_port.state-> in check_modem_status()
694 spin_unlock(&icom_port->uart_port.lock); in check_modem_status()
706 icom_port->statStg->xmit[0].flags &= in xmit_interrupt()
710 cpu_to_le16(icom_port->statStg->xmit[0].leLength); in xmit_interrupt()
711 icom_port->uart_port.icount.tx += count; in xmit_interrupt()
714 !uart_circ_empty(&icom_port->uart_port.state->xmit); i++) { in xmit_interrupt()
716 icom_port->uart_port.state->xmit.tail++; in xmit_interrupt()
717 icom_port->uart_port.state->xmit.tail &= in xmit_interrupt()
718 (UART_XMIT_SIZE - 1); in xmit_interrupt()
721 if (!icom_write(&icom_port->uart_port)) in xmit_interrupt()
723 uart_write_wakeup(&icom_port->uart_port); in xmit_interrupt()
731 struct tty_port *port = &icom_port->uart_port.state->port; in recv_interrupt()
738 rcv_buff = icom_port->next_rcv; in recv_interrupt()
740 status = cpu_to_le16(icom_port->statStg->rcv[rcv_buff].flags); in recv_interrupt()
742 int first = -1; in recv_interrupt()
745 count = cpu_to_le16(icom_port->statStg->rcv[rcv_buff].leLength); in recv_interrupt()
752 cpu_to_le32(icom_port->statStg->rcv[rcv_buff].leBuffer) - in recv_interrupt()
753 icom_port->recv_buf_pci; in recv_interrupt()
757 first = icom_port->recv_buf[offset]; in recv_interrupt()
758 tty_insert_flip_string(port, icom_port->recv_buf + offset, count - 1); in recv_interrupt()
761 icount = &icom_port->uart_port.icount; in recv_interrupt()
762 icount->rx += count; in recv_interrupt()
779 icount->brk++; in recv_interrupt()
781 icount->parity++; in recv_interrupt()
783 icount->frame++; in recv_interrupt()
785 icount->overrun++; in recv_interrupt()
792 if (status & icom_port->ignore_status_mask) { in recv_interrupt()
797 status &= icom_port->read_status_mask; in recv_interrupt()
809 tty_insert_flip_char(port, *(icom_port->recv_buf + offset + count - 1), flag); in recv_interrupt()
819 icom_port->statStg->rcv[rcv_buff].flags = 0; in recv_interrupt()
820 icom_port->statStg->rcv[rcv_buff].leLength = 0; in recv_interrupt()
821 icom_port->statStg->rcv[rcv_buff].WorkingLength = in recv_interrupt()
828 status = cpu_to_le16(icom_port->statStg->rcv[rcv_buff].flags); in recv_interrupt()
830 icom_port->next_rcv = rcv_buff; in recv_interrupt()
839 spin_lock(&icom_port->uart_port.lock); in process_interrupt()
848 spin_unlock(&icom_port->uart_port.lock); in process_interrupt()
862 if (icom_adapter->version == ADAPTER_V2) { in icom_interrupt()
863 int_reg = icom_adapter->base_addr + 0x8024; in icom_interrupt()
869 icom_port = &icom_adapter->port_info[2]; in icom_interrupt()
876 icom_port = &icom_adapter->port_info[3]; in icom_interrupt()
877 if (icom_port->status == ICOM_PORT_ACTIVE) { in icom_interrupt()
888 int_reg = icom_adapter->base_addr + 0x8004; in icom_interrupt()
890 int_reg = icom_adapter->base_addr + 0x4004; in icom_interrupt()
897 icom_port = &icom_adapter->port_info[0]; in icom_interrupt()
904 icom_port = &icom_adapter->port_info[1]; in icom_interrupt()
905 if (icom_port->status == ICOM_PORT_ACTIVE) { in icom_interrupt()
922 * ------------------------------------------------------------------
923 * Begin serial-core API
924 * ------------------------------------------------------------------
931 spin_lock_irqsave(&port->lock, flags); in icom_tx_empty()
932 if (cpu_to_le16(ICOM_PORT->statStg->xmit[0].flags) & in icom_tx_empty()
938 spin_unlock_irqrestore(&port->lock, flags); in icom_tx_empty()
947 local_osr = readb(&ICOM_PORT->dram->osr); in icom_set_mctrl()
965 writeb(local_osr, &ICOM_PORT->dram->osr); in icom_set_mctrl()
975 status = readb(&ICOM_PORT->dram->isr); in icom_get_mctrl()
989 cmdReg = readb(&ICOM_PORT->dram->CmdReg); in icom_stop_tx()
990 writeb(cmdReg | CMD_HOLD_XMIT, &ICOM_PORT->dram->CmdReg); in icom_stop_tx()
998 cmdReg = readb(&ICOM_PORT->dram->CmdReg); in icom_start_tx()
1001 &ICOM_PORT->dram->CmdReg); in icom_start_tx()
1016 spin_lock_irqsave(&port->lock, flags); in icom_send_xchar()
1017 xdata = readb(&ICOM_PORT->dram->xchar); in icom_send_xchar()
1020 writeb(ch, &ICOM_PORT->dram->xchar); in icom_send_xchar()
1023 xdata = readb(&ICOM_PORT->dram->xchar); in icom_send_xchar()
1024 spin_unlock_irqrestore(&port->lock, flags); in icom_send_xchar()
1027 spin_unlock_irqrestore(&port->lock, flags); in icom_send_xchar()
1036 cmdReg = readb(&ICOM_PORT->dram->CmdReg); in icom_stop_rx()
1037 writeb(cmdReg & ~CMD_RCV_ENABLE, &ICOM_PORT->dram->CmdReg); in icom_stop_rx()
1045 spin_lock_irqsave(&port->lock, flags); in icom_break()
1047 cmdReg = readb(&ICOM_PORT->dram->CmdReg); in icom_break()
1048 if (break_state == -1) { in icom_break()
1049 writeb(cmdReg | CMD_SND_BREAK, &ICOM_PORT->dram->CmdReg); in icom_break()
1051 writeb(cmdReg & ~CMD_SND_BREAK, &ICOM_PORT->dram->CmdReg); in icom_break()
1053 spin_unlock_irqrestore(&port->lock, flags); in icom_break()
1060 kref_get(&ICOM_PORT->adapter->kref); in icom_open()
1064 kref_put(&ICOM_PORT->adapter->kref, icom_kref_release); in icom_open()
1079 cmdReg = readb(&ICOM_PORT->dram->CmdReg); in icom_close()
1080 writeb(cmdReg & ~CMD_RCV_ENABLE, &ICOM_PORT->dram->CmdReg); in icom_close()
1084 kref_put(&ICOM_PORT->adapter->kref, icom_kref_release); in icom_close()
1101 spin_lock_irqsave(&port->lock, flags); in icom_set_termios()
1104 cflag = termios->c_cflag; in icom_set_termios()
1105 iflag = termios->c_iflag; in icom_set_termios()
1157 /* CTS flow control flag and modem status interrupts */ in icom_set_termios()
1158 tmp_byte = readb(&(ICOM_PORT->dram->HDLCConfigReg)); in icom_set_termios()
1163 writeb(tmp_byte, &(ICOM_PORT->dram->HDLCConfigReg)); in icom_set_termios()
1168 ICOM_PORT->read_status_mask = SA_FLAGS_OVERRUN | SA_FL_RCV_DONE; in icom_set_termios()
1170 ICOM_PORT->read_status_mask |= in icom_set_termios()
1174 ICOM_PORT->read_status_mask |= SA_FLAGS_BREAK_DET; in icom_set_termios()
1179 ICOM_PORT->ignore_status_mask = 0; in icom_set_termios()
1181 ICOM_PORT->ignore_status_mask |= in icom_set_termios()
1184 ICOM_PORT->ignore_status_mask |= SA_FLAGS_BREAK_DET; in icom_set_termios()
1190 ICOM_PORT->ignore_status_mask |= SA_FLAGS_OVERRUN; in icom_set_termios()
1197 ICOM_PORT->ignore_status_mask |= SA_FL_RCV_DONE; in icom_set_termios()
1200 writeb(CMD_RCV_DISABLE, &ICOM_PORT->dram->CmdReg); in icom_set_termios()
1203 if (readb(&ICOM_PORT->dram->PrevCmdReg) == 0x00) { in icom_set_termios()
1210 ICOM_PORT->statStg->rcv[rcv_buff].flags = 0; in icom_set_termios()
1211 ICOM_PORT->statStg->rcv[rcv_buff].leLength = 0; in icom_set_termios()
1212 ICOM_PORT->statStg->rcv[rcv_buff].WorkingLength = in icom_set_termios()
1217 ICOM_PORT->statStg->xmit[xmit_buff].flags = 0; in icom_set_termios()
1222 writeb(new_config3, &(ICOM_PORT->dram->async_config3)); in icom_set_termios()
1223 writeb(new_config2, &(ICOM_PORT->dram->async_config2)); in icom_set_termios()
1224 tmp_byte = readb(&(ICOM_PORT->dram->HDLCConfigReg)); in icom_set_termios()
1226 writeb(tmp_byte, &(ICOM_PORT->dram->HDLCConfigReg)); in icom_set_termios()
1227 writeb(0x04, &(ICOM_PORT->dram->FlagFillIdleTimer)); /* 0.5 seconds */ in icom_set_termios()
1228 writeb(0xFF, &(ICOM_PORT->dram->ier)); /* enable modem signal interrupts */ in icom_set_termios()
1231 writeb(CMD_RESTART, &ICOM_PORT->dram->CmdReg); in icom_set_termios()
1234 if (readb(&ICOM_PORT->dram->CmdReg) == 0x00) { in icom_set_termios()
1241 (unsigned long) &ICOM_PORT->statStg->rcv[0] - in icom_set_termios()
1242 (unsigned long) ICOM_PORT->statStg; in icom_set_termios()
1243 writel(ICOM_PORT->statStg_pci + offset, in icom_set_termios()
1244 &ICOM_PORT->dram->RcvStatusAddr); in icom_set_termios()
1245 ICOM_PORT->next_rcv = 0; in icom_set_termios()
1246 ICOM_PORT->put_length = 0; in icom_set_termios()
1247 *ICOM_PORT->xmitRestart = 0; in icom_set_termios()
1248 writel(ICOM_PORT->xmitRestart_pci, in icom_set_termios()
1249 &ICOM_PORT->dram->XmitStatusAddr); in icom_set_termios()
1251 writeb(CMD_XMIT_RCV_ENABLE, &ICOM_PORT->dram->CmdReg); in icom_set_termios()
1253 spin_unlock_irqrestore(&port->lock, flags); in icom_set_termios()
1272 port->type = PORT_ICOM; in icom_config_port()
1307 u32 subsystem_id = icom_adapter->subsystem_id; in icom_init_ports()
1311 if (icom_adapter->version == ADAPTER_V1) { in icom_init_ports()
1312 icom_adapter->numb_ports = 2; in icom_init_ports()
1315 icom_port = &icom_adapter->port_info[i]; in icom_init_ports()
1316 icom_port->port = i; in icom_init_ports()
1317 icom_port->status = ICOM_PORT_ACTIVE; in icom_init_ports()
1318 icom_port->imbed_modem = ICOM_UNKNOWN; in icom_init_ports()
1322 icom_adapter->numb_ports = 4; in icom_init_ports()
1325 icom_port = &icom_adapter->port_info[i]; in icom_init_ports()
1327 icom_port->port = i; in icom_init_ports()
1328 icom_port->status = ICOM_PORT_ACTIVE; in icom_init_ports()
1329 icom_port->imbed_modem = ICOM_IMBED_MODEM; in icom_init_ports()
1332 icom_adapter->numb_ports = 4; in icom_init_ports()
1334 icom_adapter->port_info[0].port = 0; in icom_init_ports()
1335 icom_adapter->port_info[0].status = ICOM_PORT_ACTIVE; in icom_init_ports()
1339 icom_adapter->port_info[0].imbed_modem = ICOM_IMBED_MODEM; in icom_init_ports()
1341 icom_adapter->port_info[0].imbed_modem = ICOM_RVX; in icom_init_ports()
1344 icom_adapter->port_info[1].status = ICOM_PORT_OFF; in icom_init_ports()
1346 icom_adapter->port_info[2].port = 2; in icom_init_ports()
1347 icom_adapter->port_info[2].status = ICOM_PORT_ACTIVE; in icom_init_ports()
1348 icom_adapter->port_info[2].imbed_modem = ICOM_RVX; in icom_init_ports()
1349 icom_adapter->port_info[3].status = ICOM_PORT_OFF; in icom_init_ports()
1358 if (icom_adapter->version == ADAPTER_V1) { in icom_port_active()
1359 icom_port->global_reg = icom_adapter->base_addr + 0x4000; in icom_port_active()
1360 icom_port->int_reg = icom_adapter->base_addr + in icom_port_active()
1361 0x4004 + 2 - 2 * port_num; in icom_port_active()
1363 icom_port->global_reg = icom_adapter->base_addr + 0x8000; in icom_port_active()
1364 if (icom_port->port < 2) in icom_port_active()
1365 icom_port->int_reg = icom_adapter->base_addr + in icom_port_active()
1366 0x8004 + 2 - 2 * icom_port->port; in icom_port_active()
1368 icom_port->int_reg = icom_adapter->base_addr + in icom_port_active()
1369 0x8024 + 2 - 2 * (icom_port->port - 2); in icom_port_active()
1377 for (port_num = 0; port_num < icom_adapter->numb_ports; port_num++) { in icom_load_ports()
1379 icom_port = &icom_adapter->port_info[port_num]; in icom_load_ports()
1381 if (icom_port->status == ICOM_PORT_ACTIVE) { in icom_load_ports()
1383 icom_port->dram = icom_adapter->base_addr + in icom_load_ports()
1384 0x2000 * icom_port->port; in icom_load_ports()
1386 icom_port->adapter = icom_adapter; in icom_load_ports()
1390 dev_err(&icom_port->adapter->pci_dev->dev, in icom_load_ports()
1409 return -ENOMEM; in icom_alloc_adapter()
1416 if (cur_adapter_entry->index != adapter_count) { in icom_alloc_adapter()
1422 icom_adapter->index = adapter_count; in icom_alloc_adapter()
1423 list_add_tail(&icom_adapter->icom_adapter_entry, tmp); in icom_alloc_adapter()
1431 list_del(&icom_adapter->icom_adapter_entry); in icom_free_adapter()
1440 for (index = 0; index < icom_adapter->numb_ports; index++) { in icom_remove_adapter()
1441 icom_port = &icom_adapter->port_info[index]; in icom_remove_adapter()
1443 if (icom_port->status == ICOM_PORT_ACTIVE) { in icom_remove_adapter()
1444 dev_info(&icom_adapter->pci_dev->dev, in icom_remove_adapter()
1448 &icom_port->uart_port); in icom_remove_adapter()
1451 writeb(0x00, &icom_port->dram->osr); in icom_remove_adapter()
1463 free_irq(icom_adapter->pci_dev->irq, (void *) icom_adapter); in icom_remove_adapter()
1464 iounmap(icom_adapter->base_addr); in icom_remove_adapter()
1465 pci_release_regions(icom_adapter->pci_dev); in icom_remove_adapter()
1488 dev_err(&dev->dev, "Device enable FAILED\n"); in icom_probe()
1494 dev_err(&dev->dev, "pci_request_regions FAILED\n"); in icom_probe()
1503 dev_err(&dev->dev, "PCI Config read FAILED\n"); in icom_probe()
1511 if (ent->driver_data == ADAPTER_V1) { in icom_probe()
1521 dev_err(&dev->dev, "icom_alloc_adapter FAILED\n"); in icom_probe()
1522 retval = -EIO; in icom_probe()
1526 icom_adapter->base_addr_pci = pci_resource_start(dev, 0); in icom_probe()
1527 icom_adapter->pci_dev = dev; in icom_probe()
1528 icom_adapter->version = ent->driver_data; in icom_probe()
1529 icom_adapter->subsystem_id = ent->subdevice; in icom_probe()
1534 dev_err(&dev->dev, "Port configuration failed\n"); in icom_probe()
1538 icom_adapter->base_addr = pci_ioremap_bar(dev, 0); in icom_probe()
1540 if (!icom_adapter->base_addr) { in icom_probe()
1541 retval = -ENOMEM; in icom_probe()
1546 …retval = request_irq(dev->irq, icom_interrupt, IRQF_SHARED, ICOM_DRIVER_NAME, (void *)icom_adapter… in icom_probe()
1553 for (index = 0; index < icom_adapter->numb_ports; index++) { in icom_probe()
1554 icom_port = &icom_adapter->port_info[index]; in icom_probe()
1556 if (icom_port->status == ICOM_PORT_ACTIVE) { in icom_probe()
1557 icom_port->uart_port.irq = icom_port->adapter->pci_dev->irq; in icom_probe()
1558 icom_port->uart_port.type = PORT_ICOM; in icom_probe()
1559 icom_port->uart_port.iotype = UPIO_MEM; in icom_probe()
1560 icom_port->uart_port.membase = in icom_probe()
1561 (unsigned char __iomem *)icom_adapter->base_addr_pci; in icom_probe()
1562 icom_port->uart_port.fifosize = 16; in icom_probe()
1563 icom_port->uart_port.ops = &icom_ops; in icom_probe()
1564 icom_port->uart_port.line = in icom_probe()
1565 icom_port->port + icom_adapter->index * 4; in icom_probe()
1566 if (uart_add_one_port (&icom_uart_driver, &icom_port->uart_port)) { in icom_probe()
1567 icom_port->status = ICOM_PORT_OFF; in icom_probe()
1568 dev_err(&dev->dev, "Device add failed\n"); in icom_probe()
1570 dev_info(&dev->dev, "Device added\n"); in icom_probe()
1574 kref_init(&icom_adapter->kref); in icom_probe()
1578 iounmap(icom_adapter->base_addr); in icom_probe()
1597 if (icom_adapter->pci_dev == dev) { in icom_remove()
1598 kref_put(&icom_adapter->kref, icom_kref_release); in icom_remove()
1603 dev_err(&dev->dev, "Unable to find device to remove\n"); in icom_remove()