Lines Matching refs:mos7840_port
360 struct moschip_port *mos7840_port) in mos7840_dump_serial_port() argument
363 dev_dbg(&port->dev, "SpRegOffset is %2x\n", mos7840_port->SpRegOffset); in mos7840_dump_serial_port()
364 dev_dbg(&port->dev, "ControlRegOffset is %2x\n", mos7840_port->ControlRegOffset); in mos7840_dump_serial_port()
365 dev_dbg(&port->dev, "DCRRegOffset is %2x\n", mos7840_port->DcrRegOffset); in mos7840_dump_serial_port()
391 struct moschip_port *mos7840_port; in mos7840_handle_new_msr() local
393 mos7840_port = port; in mos7840_handle_new_msr()
397 icount = &mos7840_port->port->icount; in mos7840_handle_new_msr()
448 struct moschip_port *mos7840_port; in mos7840_control_callback() local
453 mos7840_port = urb->context; in mos7840_control_callback()
475 mos7840_port->MsrLsr, mos7840_port->port_num); in mos7840_control_callback()
479 if (mos7840_port->MsrLsr == 0) in mos7840_control_callback()
480 mos7840_handle_new_msr(mos7840_port, regval); in mos7840_control_callback()
481 else if (mos7840_port->MsrLsr == 1) in mos7840_control_callback()
482 mos7840_handle_new_lsr(mos7840_port, regval); in mos7840_control_callback()
484 clear_bit_unlock(MOS7840_FLAG_CTRL_BUSY, &mos7840_port->flags); in mos7840_control_callback()
580 struct moschip_port *mos7840_port = usb_get_serial_port_data(port); in mos7840_led_activity() local
582 if (test_and_set_bit_lock(MOS7840_FLAG_LED_BUSY, &mos7840_port->flags)) in mos7840_led_activity()
585 mos7840_set_led_async(mos7840_port, 0x0301, MODEM_CONTROL_REGISTER); in mos7840_led_activity()
586 mod_timer(&mos7840_port->led_timer1, in mos7840_led_activity()
600 struct moschip_port *mos7840_port; in mos7840_interrupt_callback() local
650 mos7840_port = mos7840_get_port_private(serial->port[i]); in mos7840_interrupt_callback()
652 if (mos7840_port->open) { in mos7840_interrupt_callback()
660 mos7840_port->MsrLsr = 1; in mos7840_interrupt_callback()
665 mos7840_port->MsrLsr = 0; in mos7840_interrupt_callback()
669 rv = mos7840_get_reg(mos7840_port, wval, wreg, &Data); in mos7840_interrupt_callback()
743 struct moschip_port *mos7840_port; in mos7840_bulk_in_callback() local
746 mos7840_port = urb->context; in mos7840_bulk_in_callback()
747 if (!mos7840_port) in mos7840_bulk_in_callback()
752 mos7840_port->read_urb_busy = false; in mos7840_bulk_in_callback()
756 port = mos7840_port->port; in mos7840_bulk_in_callback()
758 mos7840_port->read_urb_busy = false; in mos7840_bulk_in_callback()
764 mos7840_port->read_urb_busy = false; in mos7840_bulk_in_callback()
772 struct tty_port *tport = &mos7840_port->port->port; in mos7840_bulk_in_callback()
779 if (!mos7840_port->read_urb) { in mos7840_bulk_in_callback()
781 mos7840_port->read_urb_busy = false; in mos7840_bulk_in_callback()
785 if (mos7840_port->has_led) in mos7840_bulk_in_callback()
788 mos7840_port->read_urb_busy = true; in mos7840_bulk_in_callback()
789 retval = usb_submit_urb(mos7840_port->read_urb, GFP_ATOMIC); in mos7840_bulk_in_callback()
793 mos7840_port->read_urb_busy = false; in mos7840_bulk_in_callback()
805 struct moschip_port *mos7840_port; in mos7840_bulk_out_data_callback() local
811 mos7840_port = urb->context; in mos7840_bulk_out_data_callback()
812 port = mos7840_port->port; in mos7840_bulk_out_data_callback()
813 spin_lock_irqsave(&mos7840_port->pool_lock, flags); in mos7840_bulk_out_data_callback()
815 if (urb == mos7840_port->write_urb_pool[i]) { in mos7840_bulk_out_data_callback()
816 mos7840_port->busy[i] = 0; in mos7840_bulk_out_data_callback()
820 spin_unlock_irqrestore(&mos7840_port->pool_lock, flags); in mos7840_bulk_out_data_callback()
830 if (mos7840_port->open) in mos7840_bulk_out_data_callback()
854 struct moschip_port *mos7840_port; in mos7840_open() local
865 mos7840_port = mos7840_get_port_private(port); in mos7840_open()
868 if (mos7840_port == NULL || port0 == NULL) in mos7840_open()
878 mos7840_port->write_urb_pool[j] = urb; in mos7840_open()
886 mos7840_port->write_urb_pool[j] = NULL; in mos7840_open()
906 status = mos7840_get_reg_sync(port, mos7840_port->SpRegOffset, &Data); in mos7840_open()
912 status = mos7840_set_reg_sync(port, mos7840_port->SpRegOffset, Data); in mos7840_open()
919 status = mos7840_set_reg_sync(port, mos7840_port->SpRegOffset, Data); in mos7840_open()
927 status = mos7840_get_reg_sync(port, mos7840_port->ControlRegOffset, in mos7840_open()
936 mos7840_port->ControlRegOffset, Data); in mos7840_open()
969 mos7840_port->shadowLCR = Data; in mos7840_open()
973 mos7840_port->shadowMCR = Data; in mos7840_open()
977 mos7840_port->shadowLCR = Data; in mos7840_open()
993 mos7840_port->shadowLCR = Data; in mos7840_open()
997 status = mos7840_get_reg_sync(port, mos7840_port->SpRegOffset, &Data); in mos7840_open()
1000 status = mos7840_set_reg_sync(port, mos7840_port->SpRegOffset, Data); in mos7840_open()
1003 status = mos7840_set_reg_sync(port, mos7840_port->SpRegOffset, Data); in mos7840_open()
1010 status = mos7840_get_reg_sync(port, mos7840_port->ControlRegOffset, in mos7840_open()
1013 status = mos7840_set_reg_sync(port, mos7840_port->ControlRegOffset, in mos7840_open()
1018 status = mos7840_get_reg_sync(port, mos7840_port->ControlRegOffset, in mos7840_open()
1021 status = mos7840_set_reg_sync(port, mos7840_port->ControlRegOffset, in mos7840_open()
1064 dev_dbg(&port->dev, "port's number in the device is %d\n", mos7840_port->port_num); in mos7840_open()
1065 mos7840_port->read_urb = port->read_urb; in mos7840_open()
1069 usb_fill_bulk_urb(mos7840_port->read_urb, in mos7840_open()
1074 mos7840_port->read_urb->transfer_buffer_length, in mos7840_open()
1075 mos7840_bulk_in_callback, mos7840_port); in mos7840_open()
1077 usb_fill_bulk_urb(mos7840_port->read_urb, in mos7840_open()
1082 mos7840_port->read_urb->transfer_buffer_length, in mos7840_open()
1083 mos7840_bulk_in_callback, mos7840_port); in mos7840_open()
1087 mos7840_port->read_urb_busy = true; in mos7840_open()
1088 response = usb_submit_urb(mos7840_port->read_urb, GFP_KERNEL); in mos7840_open()
1092 mos7840_port->read_urb_busy = false; in mos7840_open()
1097 mos7840_port->shadowMCR = MCR_MASTER_IE; in mos7840_open()
1099 mos7840_port->open = 1; in mos7840_open()
1105 urb = mos7840_port->write_urb_pool[j]; in mos7840_open()
1130 struct moschip_port *mos7840_port; in mos7840_chars_in_buffer() local
1135 mos7840_port = mos7840_get_port_private(port); in mos7840_chars_in_buffer()
1136 if (mos7840_port == NULL) in mos7840_chars_in_buffer()
1139 spin_lock_irqsave(&mos7840_port->pool_lock, flags); in mos7840_chars_in_buffer()
1141 if (mos7840_port->busy[i]) { in mos7840_chars_in_buffer()
1142 struct urb *urb = mos7840_port->write_urb_pool[i]; in mos7840_chars_in_buffer()
1146 spin_unlock_irqrestore(&mos7840_port->pool_lock, flags); in mos7840_chars_in_buffer()
1160 struct moschip_port *mos7840_port; in mos7840_close() local
1172 mos7840_port = mos7840_get_port_private(port); in mos7840_close()
1175 if (mos7840_port == NULL || port0 == NULL) in mos7840_close()
1179 usb_kill_urb(mos7840_port->write_urb_pool[j]); in mos7840_close()
1183 if (mos7840_port->write_urb_pool[j]) { in mos7840_close()
1184 kfree(mos7840_port->write_urb_pool[j]->transfer_buffer); in mos7840_close()
1185 usb_free_urb(mos7840_port->write_urb_pool[j]); in mos7840_close()
1189 usb_kill_urb(mos7840_port->read_urb); in mos7840_close()
1190 mos7840_port->read_urb_busy = false; in mos7840_close()
1207 mos7840_port->open = 0; in mos7840_close()
1219 struct moschip_port *mos7840_port; in mos7840_break() local
1228 mos7840_port = mos7840_get_port_private(port); in mos7840_break()
1230 if (mos7840_port == NULL) in mos7840_break()
1234 data = mos7840_port->shadowLCR | LCR_SET_BREAK; in mos7840_break()
1236 data = mos7840_port->shadowLCR & ~LCR_SET_BREAK; in mos7840_break()
1239 mos7840_port->shadowLCR = data; in mos7840_break()
1240 dev_dbg(&port->dev, "%s mos7840_port->shadowLCR is %x\n", __func__, mos7840_port->shadowLCR); in mos7840_break()
1242 mos7840_port->shadowLCR); in mos7840_break()
1259 struct moschip_port *mos7840_port; in mos7840_write_room() local
1264 mos7840_port = mos7840_get_port_private(port); in mos7840_write_room()
1265 if (mos7840_port == NULL) in mos7840_write_room()
1268 spin_lock_irqsave(&mos7840_port->pool_lock, flags); in mos7840_write_room()
1270 if (!mos7840_port->busy[i]) in mos7840_write_room()
1273 spin_unlock_irqrestore(&mos7840_port->pool_lock, flags); in mos7840_write_room()
1276 dev_dbg(&mos7840_port->port->dev, "%s - returns %d\n", __func__, room); in mos7840_write_room()
1298 struct moschip_port *mos7840_port; in mos7840_write() local
1312 mos7840_port = mos7840_get_port_private(port); in mos7840_write()
1313 if (mos7840_port == NULL) in mos7840_write()
1319 spin_lock_irqsave(&mos7840_port->pool_lock, flags); in mos7840_write()
1321 if (!mos7840_port->busy[i]) { in mos7840_write()
1322 mos7840_port->busy[i] = 1; in mos7840_write()
1323 urb = mos7840_port->write_urb_pool[i]; in mos7840_write()
1328 spin_unlock_irqrestore(&mos7840_port->pool_lock, flags); in mos7840_write()
1353 mos7840_bulk_out_data_callback, mos7840_port); in mos7840_write()
1361 mos7840_bulk_out_data_callback, mos7840_port); in mos7840_write()
1367 if (mos7840_port->has_led) in mos7840_write()
1374 mos7840_port->busy[i] = 0; in mos7840_write()
1397 struct moschip_port *mos7840_port; in mos7840_throttle() local
1403 mos7840_port = mos7840_get_port_private(port); in mos7840_throttle()
1405 if (mos7840_port == NULL) in mos7840_throttle()
1408 if (!mos7840_port->open) { in mos7840_throttle()
1422 mos7840_port->shadowMCR &= ~MCR_RTS; in mos7840_throttle()
1424 mos7840_port->shadowMCR); in mos7840_throttle()
1440 struct moschip_port *mos7840_port = mos7840_get_port_private(port); in mos7840_unthrottle() local
1445 if (mos7840_port == NULL) in mos7840_unthrottle()
1448 if (!mos7840_port->open) { in mos7840_unthrottle()
1463 mos7840_port->shadowMCR |= MCR_RTS; in mos7840_unthrottle()
1465 mos7840_port->shadowMCR); in mos7840_unthrottle()
1474 struct moschip_port *mos7840_port; in mos7840_tiocmget() local
1479 mos7840_port = mos7840_get_port_private(port); in mos7840_tiocmget()
1481 if (mos7840_port == NULL) in mos7840_tiocmget()
1507 struct moschip_port *mos7840_port; in mos7840_tiocmset() local
1511 mos7840_port = mos7840_get_port_private(port); in mos7840_tiocmset()
1513 if (mos7840_port == NULL) in mos7840_tiocmset()
1517 mcr = mos7840_port->shadowMCR; in mos7840_tiocmset()
1532 mos7840_port->shadowMCR = mcr; in mos7840_tiocmset()
1589 static int mos7840_send_cmd_write_baud_rate(struct moschip_port *mos7840_port, in mos7840_send_cmd_write_baud_rate() argument
1599 if (mos7840_port == NULL) in mos7840_send_cmd_write_baud_rate()
1602 port = mos7840_port->port; in mos7840_send_cmd_write_baud_rate()
1609 number = mos7840_port->port->port_number; in mos7840_send_cmd_write_baud_rate()
1618 mos7840_port->shadowMCR = Data; in mos7840_send_cmd_write_baud_rate()
1631 mos7840_port->shadowMCR = Data; in mos7840_send_cmd_write_baud_rate()
1647 status = mos7840_get_reg_sync(port, mos7840_port->SpRegOffset, in mos7840_send_cmd_write_baud_rate()
1654 status = mos7840_set_reg_sync(port, mos7840_port->SpRegOffset, in mos7840_send_cmd_write_baud_rate()
1667 Data = mos7840_port->shadowLCR | SERIAL_LCR_DLAB; in mos7840_send_cmd_write_baud_rate()
1668 mos7840_port->shadowLCR = Data; in mos7840_send_cmd_write_baud_rate()
1681 Data = mos7840_port->shadowLCR & ~SERIAL_LCR_DLAB; in mos7840_send_cmd_write_baud_rate()
1682 mos7840_port->shadowLCR = Data; in mos7840_send_cmd_write_baud_rate()
1696 struct moschip_port *mos7840_port, struct ktermios *old_termios) in mos7840_change_port_settings() argument
1709 if (mos7840_port == NULL) in mos7840_change_port_settings()
1712 port = mos7840_port->port; in mos7840_change_port_settings()
1722 if (!mos7840_port->open) { in mos7840_change_port_settings()
1781 mos7840_port->shadowLCR &= in mos7840_change_port_settings()
1783 mos7840_port->shadowLCR |= (lData | lParity | lStop); in mos7840_change_port_settings()
1786 mos7840_port->shadowLCR); in mos7840_change_port_settings()
1798 Data = mos7840_port->shadowLCR; in mos7840_change_port_settings()
1803 mos7840_port->shadowMCR = Data; in mos7840_change_port_settings()
1810 mos7840_port->shadowMCR = MCR_MASTER_IE; in mos7840_change_port_settings()
1812 mos7840_port->shadowMCR |= (MCR_DTR | MCR_RTS); in mos7840_change_port_settings()
1815 mos7840_port->shadowMCR |= (MCR_XON_ANY); in mos7840_change_port_settings()
1817 mos7840_port->shadowMCR &= ~(MCR_XON_ANY); in mos7840_change_port_settings()
1819 Data = mos7840_port->shadowMCR; in mos7840_change_port_settings()
1832 status = mos7840_send_cmd_write_baud_rate(mos7840_port, baud); in mos7840_change_port_settings()
1838 if (!mos7840_port->read_urb_busy) { in mos7840_change_port_settings()
1839 mos7840_port->read_urb_busy = true; in mos7840_change_port_settings()
1840 status = usb_submit_urb(mos7840_port->read_urb, GFP_KERNEL); in mos7840_change_port_settings()
1844 mos7840_port->read_urb_busy = false; in mos7840_change_port_settings()
1848 mos7840_port->shadowLCR); in mos7840_change_port_settings()
1863 struct moschip_port *mos7840_port; in mos7840_set_termios() local
1873 mos7840_port = mos7840_get_port_private(port); in mos7840_set_termios()
1875 if (mos7840_port == NULL) in mos7840_set_termios()
1878 if (!mos7840_port->open) { in mos7840_set_termios()
1885 mos7840_change_port_settings(tty, mos7840_port, old_termios); in mos7840_set_termios()
1887 if (!mos7840_port->read_urb) { in mos7840_set_termios()
1892 if (!mos7840_port->read_urb_busy) { in mos7840_set_termios()
1893 mos7840_port->read_urb_busy = true; in mos7840_set_termios()
1894 status = usb_submit_urb(mos7840_port->read_urb, GFP_KERNEL); in mos7840_set_termios()
1898 mos7840_port->read_urb_busy = false; in mos7840_set_termios()
1934 static int mos7840_get_serial_info(struct moschip_port *mos7840_port, in mos7840_get_serial_info() argument
1939 if (mos7840_port == NULL) in mos7840_get_serial_info()
1945 tmp.line = mos7840_port->port->minor; in mos7840_get_serial_info()
1946 tmp.port = mos7840_port->port->port_number; in mos7840_get_serial_info()
1968 struct moschip_port *mos7840_port; in mos7840_ioctl() local
1973 mos7840_port = mos7840_get_port_private(port); in mos7840_ioctl()
1975 if (mos7840_port == NULL) in mos7840_ioctl()
1987 return mos7840_get_serial_info(mos7840_port, argp); in mos7840_ioctl()
2115 struct moschip_port *mos7840_port; in mos7840_port_probe() local
2126 mos7840_port = kzalloc(sizeof(struct moschip_port), GFP_KERNEL); in mos7840_port_probe()
2127 if (!mos7840_port) in mos7840_port_probe()
2134 mos7840_port->port = port; in mos7840_port_probe()
2135 mos7840_set_port_private(port, mos7840_port); in mos7840_port_probe()
2136 spin_lock_init(&mos7840_port->pool_lock); in mos7840_port_probe()
2141 mos7840_port->port_num = pnum + 1; in mos7840_port_probe()
2143 dev_dbg(&port->dev, "mos7840_port->port_num = %d\n", mos7840_port->port_num); in mos7840_port_probe()
2145 if (mos7840_port->port_num == 1) { in mos7840_port_probe()
2146 mos7840_port->SpRegOffset = 0x0; in mos7840_port_probe()
2147 mos7840_port->ControlRegOffset = 0x1; in mos7840_port_probe()
2148 mos7840_port->DcrRegOffset = 0x4; in mos7840_port_probe()
2149 } else if ((mos7840_port->port_num == 2) && (serial->num_ports == 4)) { in mos7840_port_probe()
2150 mos7840_port->SpRegOffset = 0x8; in mos7840_port_probe()
2151 mos7840_port->ControlRegOffset = 0x9; in mos7840_port_probe()
2152 mos7840_port->DcrRegOffset = 0x16; in mos7840_port_probe()
2153 } else if ((mos7840_port->port_num == 2) && (serial->num_ports == 2)) { in mos7840_port_probe()
2154 mos7840_port->SpRegOffset = 0xa; in mos7840_port_probe()
2155 mos7840_port->ControlRegOffset = 0xb; in mos7840_port_probe()
2156 mos7840_port->DcrRegOffset = 0x19; in mos7840_port_probe()
2157 } else if ((mos7840_port->port_num == 3) && (serial->num_ports == 4)) { in mos7840_port_probe()
2158 mos7840_port->SpRegOffset = 0xa; in mos7840_port_probe()
2159 mos7840_port->ControlRegOffset = 0xb; in mos7840_port_probe()
2160 mos7840_port->DcrRegOffset = 0x19; in mos7840_port_probe()
2161 } else if ((mos7840_port->port_num == 4) && (serial->num_ports == 4)) { in mos7840_port_probe()
2162 mos7840_port->SpRegOffset = 0xc; in mos7840_port_probe()
2163 mos7840_port->ControlRegOffset = 0xd; in mos7840_port_probe()
2164 mos7840_port->DcrRegOffset = 0x1c; in mos7840_port_probe()
2166 mos7840_dump_serial_port(port, mos7840_port); in mos7840_port_probe()
2167 mos7840_set_port_private(port, mos7840_port); in mos7840_port_probe()
2171 mos7840_port->ControlRegOffset, &Data); in mos7840_port_probe()
2183 mos7840_port->ControlRegOffset, Data); in mos7840_port_probe()
2194 (__u16) (mos7840_port->DcrRegOffset + 0), Data); in mos7840_port_probe()
2203 (__u16) (mos7840_port->DcrRegOffset + 1), Data); in mos7840_port_probe()
2212 (__u16) (mos7840_port->DcrRegOffset + 2), Data); in mos7840_port_probe()
2246 if ((mos7840_port->port_num != 1) && (serial->num_ports == 2)) { in mos7840_port_probe()
2250 ((__u16)mos7840_port->port_num)), Data); in mos7840_port_probe()
2252 (__u16)(ZLP_REG1 + ((__u16) mos7840_port->port_num))); in mos7840_port_probe()
2262 ((__u16)mos7840_port->port_num) - 0x1), Data); in mos7840_port_probe()
2264 (__u16)(ZLP_REG1 + ((__u16) mos7840_port->port_num) - 0x1)); in mos7840_port_probe()
2272 mos7840_port->control_urb = usb_alloc_urb(0, GFP_KERNEL); in mos7840_port_probe()
2273 mos7840_port->ctrl_buf = kmalloc(16, GFP_KERNEL); in mos7840_port_probe()
2274 mos7840_port->dr = kmalloc(sizeof(struct usb_ctrlrequest), in mos7840_port_probe()
2276 if (!mos7840_port->control_urb || !mos7840_port->ctrl_buf || in mos7840_port_probe()
2277 !mos7840_port->dr) { in mos7840_port_probe()
2282 mos7840_port->has_led = false; in mos7840_port_probe()
2286 mos7840_port->has_led = true; in mos7840_port_probe()
2288 mos7840_port->led_urb = usb_alloc_urb(0, GFP_KERNEL); in mos7840_port_probe()
2289 mos7840_port->led_dr = kmalloc(sizeof(*mos7840_port->led_dr), in mos7840_port_probe()
2291 if (!mos7840_port->led_urb || !mos7840_port->led_dr) { in mos7840_port_probe()
2296 timer_setup(&mos7840_port->led_timer1, mos7840_led_off, 0); in mos7840_port_probe()
2297 mos7840_port->led_timer1.expires = in mos7840_port_probe()
2299 timer_setup(&mos7840_port->led_timer2, mos7840_led_flag_off, in mos7840_port_probe()
2301 mos7840_port->led_timer2.expires = in mos7840_port_probe()
2325 kfree(mos7840_port->led_dr); in mos7840_port_probe()
2326 usb_free_urb(mos7840_port->led_urb); in mos7840_port_probe()
2327 kfree(mos7840_port->dr); in mos7840_port_probe()
2328 kfree(mos7840_port->ctrl_buf); in mos7840_port_probe()
2329 usb_free_urb(mos7840_port->control_urb); in mos7840_port_probe()
2330 kfree(mos7840_port); in mos7840_port_probe()
2337 struct moschip_port *mos7840_port; in mos7840_port_remove() local
2339 mos7840_port = mos7840_get_port_private(port); in mos7840_port_remove()
2341 if (mos7840_port->has_led) { in mos7840_port_remove()
2345 del_timer_sync(&mos7840_port->led_timer1); in mos7840_port_remove()
2346 del_timer_sync(&mos7840_port->led_timer2); in mos7840_port_remove()
2348 usb_kill_urb(mos7840_port->led_urb); in mos7840_port_remove()
2349 usb_free_urb(mos7840_port->led_urb); in mos7840_port_remove()
2350 kfree(mos7840_port->led_dr); in mos7840_port_remove()
2352 usb_kill_urb(mos7840_port->control_urb); in mos7840_port_remove()
2353 usb_free_urb(mos7840_port->control_urb); in mos7840_port_remove()
2354 kfree(mos7840_port->ctrl_buf); in mos7840_port_remove()
2355 kfree(mos7840_port->dr); in mos7840_port_remove()
2356 kfree(mos7840_port); in mos7840_port_remove()