Lines Matching refs:mos7840_port
335 struct moschip_port *mos7840_port) in mos7840_dump_serial_port() argument
338 dev_dbg(&port->dev, "SpRegOffset is %2x\n", mos7840_port->SpRegOffset); in mos7840_dump_serial_port()
339 dev_dbg(&port->dev, "ControlRegOffset is %2x\n", mos7840_port->ControlRegOffset); in mos7840_dump_serial_port()
340 dev_dbg(&port->dev, "DCRRegOffset is %2x\n", mos7840_port->DcrRegOffset); in mos7840_dump_serial_port()
416 struct moschip_port *mos7840_port = usb_get_serial_port_data(port); in mos7840_led_activity() local
418 if (test_and_set_bit_lock(MOS7840_FLAG_LED_BUSY, &mos7840_port->flags)) in mos7840_led_activity()
421 mos7840_set_led_async(mos7840_port, 0x0301, MODEM_CONTROL_REGISTER); in mos7840_led_activity()
422 mod_timer(&mos7840_port->led_timer1, in mos7840_led_activity()
434 struct moschip_port *mos7840_port = urb->context; in mos7840_bulk_in_callback() local
435 struct usb_serial_port *port = mos7840_port->port; in mos7840_bulk_in_callback()
442 mos7840_port->read_urb_busy = false; in mos7840_bulk_in_callback()
450 struct tty_port *tport = &mos7840_port->port->port; in mos7840_bulk_in_callback()
457 if (mos7840_port->has_led) in mos7840_bulk_in_callback()
460 mos7840_port->read_urb_busy = true; in mos7840_bulk_in_callback()
461 retval = usb_submit_urb(mos7840_port->read_urb, GFP_ATOMIC); in mos7840_bulk_in_callback()
465 mos7840_port->read_urb_busy = false; in mos7840_bulk_in_callback()
477 struct moschip_port *mos7840_port = urb->context; in mos7840_bulk_out_data_callback() local
478 struct usb_serial_port *port = mos7840_port->port; in mos7840_bulk_out_data_callback()
483 spin_lock_irqsave(&mos7840_port->pool_lock, flags); in mos7840_bulk_out_data_callback()
485 if (urb == mos7840_port->write_urb_pool[i]) { in mos7840_bulk_out_data_callback()
486 mos7840_port->busy[i] = 0; in mos7840_bulk_out_data_callback()
490 spin_unlock_irqrestore(&mos7840_port->pool_lock, flags); in mos7840_bulk_out_data_callback()
514 struct moschip_port *mos7840_port = usb_get_serial_port_data(port); in mos7840_open() local
528 mos7840_port->write_urb_pool[j] = urb; in mos7840_open()
536 mos7840_port->write_urb_pool[j] = NULL; in mos7840_open()
556 status = mos7840_get_reg_sync(port, mos7840_port->SpRegOffset, &Data); in mos7840_open()
562 status = mos7840_set_reg_sync(port, mos7840_port->SpRegOffset, Data); in mos7840_open()
569 status = mos7840_set_reg_sync(port, mos7840_port->SpRegOffset, Data); in mos7840_open()
577 status = mos7840_get_reg_sync(port, mos7840_port->ControlRegOffset, in mos7840_open()
586 mos7840_port->ControlRegOffset, Data); in mos7840_open()
619 mos7840_port->shadowLCR = Data; in mos7840_open()
623 mos7840_port->shadowMCR = Data; in mos7840_open()
627 mos7840_port->shadowLCR = Data; in mos7840_open()
643 mos7840_port->shadowLCR = Data; in mos7840_open()
647 status = mos7840_get_reg_sync(port, mos7840_port->SpRegOffset, &Data); in mos7840_open()
650 status = mos7840_set_reg_sync(port, mos7840_port->SpRegOffset, Data); in mos7840_open()
653 status = mos7840_set_reg_sync(port, mos7840_port->SpRegOffset, Data); in mos7840_open()
660 status = mos7840_get_reg_sync(port, mos7840_port->ControlRegOffset, in mos7840_open()
663 status = mos7840_set_reg_sync(port, mos7840_port->ControlRegOffset, in mos7840_open()
668 status = mos7840_get_reg_sync(port, mos7840_port->ControlRegOffset, in mos7840_open()
671 status = mos7840_set_reg_sync(port, mos7840_port->ControlRegOffset, in mos7840_open()
679 dev_dbg(&port->dev, "port's number in the device is %d\n", mos7840_port->port_num); in mos7840_open()
680 mos7840_port->read_urb = port->read_urb; in mos7840_open()
684 usb_fill_bulk_urb(mos7840_port->read_urb, in mos7840_open()
689 mos7840_port->read_urb->transfer_buffer_length, in mos7840_open()
690 mos7840_bulk_in_callback, mos7840_port); in mos7840_open()
692 usb_fill_bulk_urb(mos7840_port->read_urb, in mos7840_open()
697 mos7840_port->read_urb->transfer_buffer_length, in mos7840_open()
698 mos7840_bulk_in_callback, mos7840_port); in mos7840_open()
702 mos7840_port->read_urb_busy = true; in mos7840_open()
703 response = usb_submit_urb(mos7840_port->read_urb, GFP_KERNEL); in mos7840_open()
707 mos7840_port->read_urb_busy = false; in mos7840_open()
712 mos7840_port->shadowMCR = MCR_MASTER_IE; in mos7840_open()
717 urb = mos7840_port->write_urb_pool[j]; in mos7840_open()
739 struct moschip_port *mos7840_port = usb_get_serial_port_data(port); in mos7840_chars_in_buffer() local
744 spin_lock_irqsave(&mos7840_port->pool_lock, flags); in mos7840_chars_in_buffer()
746 if (mos7840_port->busy[i]) { in mos7840_chars_in_buffer()
747 struct urb *urb = mos7840_port->write_urb_pool[i]; in mos7840_chars_in_buffer()
751 spin_unlock_irqrestore(&mos7840_port->pool_lock, flags); in mos7840_chars_in_buffer()
764 struct moschip_port *mos7840_port = usb_get_serial_port_data(port); in mos7840_close() local
769 usb_kill_urb(mos7840_port->write_urb_pool[j]); in mos7840_close()
773 if (mos7840_port->write_urb_pool[j]) { in mos7840_close()
774 kfree(mos7840_port->write_urb_pool[j]->transfer_buffer); in mos7840_close()
775 usb_free_urb(mos7840_port->write_urb_pool[j]); in mos7840_close()
779 usb_kill_urb(mos7840_port->read_urb); in mos7840_close()
780 mos7840_port->read_urb_busy = false; in mos7840_close()
796 struct moschip_port *mos7840_port = usb_get_serial_port_data(port); in mos7840_break() local
800 data = mos7840_port->shadowLCR | LCR_SET_BREAK; in mos7840_break()
802 data = mos7840_port->shadowLCR & ~LCR_SET_BREAK; in mos7840_break()
805 mos7840_port->shadowLCR = data; in mos7840_break()
806 dev_dbg(&port->dev, "%s mos7840_port->shadowLCR is %x\n", __func__, mos7840_port->shadowLCR); in mos7840_break()
808 mos7840_port->shadowLCR); in mos7840_break()
822 struct moschip_port *mos7840_port = usb_get_serial_port_data(port); in mos7840_write_room() local
827 spin_lock_irqsave(&mos7840_port->pool_lock, flags); in mos7840_write_room()
829 if (!mos7840_port->busy[i]) in mos7840_write_room()
832 spin_unlock_irqrestore(&mos7840_port->pool_lock, flags); in mos7840_write_room()
835 dev_dbg(&mos7840_port->port->dev, "%s - returns %d\n", __func__, room); in mos7840_write_room()
851 struct moschip_port *mos7840_port = usb_get_serial_port_data(port); in mos7840_write() local
865 spin_lock_irqsave(&mos7840_port->pool_lock, flags); in mos7840_write()
867 if (!mos7840_port->busy[i]) { in mos7840_write()
868 mos7840_port->busy[i] = 1; in mos7840_write()
869 urb = mos7840_port->write_urb_pool[i]; in mos7840_write()
874 spin_unlock_irqrestore(&mos7840_port->pool_lock, flags); in mos7840_write()
901 mos7840_bulk_out_data_callback, mos7840_port); in mos7840_write()
909 mos7840_bulk_out_data_callback, mos7840_port); in mos7840_write()
914 if (mos7840_port->has_led) in mos7840_write()
921 mos7840_port->busy[i] = 0; in mos7840_write()
944 struct moschip_port *mos7840_port = usb_get_serial_port_data(port); in mos7840_throttle() local
956 mos7840_port->shadowMCR &= ~MCR_RTS; in mos7840_throttle()
958 mos7840_port->shadowMCR); in mos7840_throttle()
973 struct moschip_port *mos7840_port = usb_get_serial_port_data(port); in mos7840_unthrottle() local
986 mos7840_port->shadowMCR |= MCR_RTS; in mos7840_unthrottle()
988 mos7840_port->shadowMCR); in mos7840_unthrottle()
1025 struct moschip_port *mos7840_port = usb_get_serial_port_data(port); in mos7840_tiocmset() local
1030 mcr = mos7840_port->shadowMCR; in mos7840_tiocmset()
1045 mos7840_port->shadowMCR = mcr; in mos7840_tiocmset()
1102 static int mos7840_send_cmd_write_baud_rate(struct moschip_port *mos7840_port, in mos7840_send_cmd_write_baud_rate() argument
1105 struct usb_serial_port *port = mos7840_port->port; in mos7840_send_cmd_write_baud_rate()
1118 mos7840_port->shadowMCR = Data; in mos7840_send_cmd_write_baud_rate()
1131 mos7840_port->shadowMCR = Data; in mos7840_send_cmd_write_baud_rate()
1147 status = mos7840_get_reg_sync(port, mos7840_port->SpRegOffset, in mos7840_send_cmd_write_baud_rate()
1154 status = mos7840_set_reg_sync(port, mos7840_port->SpRegOffset, in mos7840_send_cmd_write_baud_rate()
1167 Data = mos7840_port->shadowLCR | SERIAL_LCR_DLAB; in mos7840_send_cmd_write_baud_rate()
1168 mos7840_port->shadowLCR = Data; in mos7840_send_cmd_write_baud_rate()
1181 Data = mos7840_port->shadowLCR & ~SERIAL_LCR_DLAB; in mos7840_send_cmd_write_baud_rate()
1182 mos7840_port->shadowLCR = Data; in mos7840_send_cmd_write_baud_rate()
1196 struct moschip_port *mos7840_port, struct ktermios *old_termios) in mos7840_change_port_settings() argument
1198 struct usb_serial_port *port = mos7840_port->port; in mos7840_change_port_settings()
1260 mos7840_port->shadowLCR &= in mos7840_change_port_settings()
1262 mos7840_port->shadowLCR |= (lData | lParity | lStop); in mos7840_change_port_settings()
1265 mos7840_port->shadowLCR); in mos7840_change_port_settings()
1277 Data = mos7840_port->shadowLCR; in mos7840_change_port_settings()
1282 mos7840_port->shadowMCR = Data; in mos7840_change_port_settings()
1289 mos7840_port->shadowMCR = MCR_MASTER_IE; in mos7840_change_port_settings()
1291 mos7840_port->shadowMCR |= (MCR_DTR | MCR_RTS); in mos7840_change_port_settings()
1294 mos7840_port->shadowMCR |= (MCR_XON_ANY); in mos7840_change_port_settings()
1296 mos7840_port->shadowMCR &= ~(MCR_XON_ANY); in mos7840_change_port_settings()
1298 Data = mos7840_port->shadowMCR; in mos7840_change_port_settings()
1311 status = mos7840_send_cmd_write_baud_rate(mos7840_port, baud); in mos7840_change_port_settings()
1317 if (!mos7840_port->read_urb_busy) { in mos7840_change_port_settings()
1318 mos7840_port->read_urb_busy = true; in mos7840_change_port_settings()
1319 status = usb_submit_urb(mos7840_port->read_urb, GFP_KERNEL); in mos7840_change_port_settings()
1323 mos7840_port->read_urb_busy = false; in mos7840_change_port_settings()
1327 mos7840_port->shadowLCR); in mos7840_change_port_settings()
1340 struct moschip_port *mos7840_port = usb_get_serial_port_data(port); in mos7840_set_termios() local
1345 mos7840_change_port_settings(tty, mos7840_port, old_termios); in mos7840_set_termios()
1347 if (!mos7840_port->read_urb_busy) { in mos7840_set_termios()
1348 mos7840_port->read_urb_busy = true; in mos7840_set_termios()
1349 status = usb_submit_urb(mos7840_port->read_urb, GFP_KERNEL); in mos7840_set_termios()
1353 mos7840_port->read_urb_busy = false; in mos7840_set_termios()
1393 struct moschip_port *mos7840_port = usb_get_serial_port_data(port); in mos7840_get_serial_info() local
1396 ss->line = mos7840_port->port->minor; in mos7840_get_serial_info()
1397 ss->port = mos7840_port->port->port_number; in mos7840_get_serial_info()
1562 struct moschip_port *mos7840_port; in mos7840_port_probe() local
1573 mos7840_port = kzalloc(sizeof(struct moschip_port), GFP_KERNEL); in mos7840_port_probe()
1574 if (!mos7840_port) in mos7840_port_probe()
1581 mos7840_port->port = port; in mos7840_port_probe()
1582 spin_lock_init(&mos7840_port->pool_lock); in mos7840_port_probe()
1587 mos7840_port->port_num = pnum + 1; in mos7840_port_probe()
1589 dev_dbg(&port->dev, "mos7840_port->port_num = %d\n", mos7840_port->port_num); in mos7840_port_probe()
1591 if (mos7840_port->port_num == 1) { in mos7840_port_probe()
1592 mos7840_port->SpRegOffset = 0x0; in mos7840_port_probe()
1593 mos7840_port->ControlRegOffset = 0x1; in mos7840_port_probe()
1594 mos7840_port->DcrRegOffset = 0x4; in mos7840_port_probe()
1596 u8 phy_num = mos7840_port->port_num; in mos7840_port_probe()
1602 mos7840_port->SpRegOffset = 0x8 + 2 * (phy_num - 2); in mos7840_port_probe()
1603 mos7840_port->ControlRegOffset = 0x9 + 2 * (phy_num - 2); in mos7840_port_probe()
1604 mos7840_port->DcrRegOffset = 0x16 + 3 * (phy_num - 2); in mos7840_port_probe()
1606 mos7840_dump_serial_port(port, mos7840_port); in mos7840_port_probe()
1607 usb_set_serial_port_data(port, mos7840_port); in mos7840_port_probe()
1611 mos7840_port->ControlRegOffset, &Data); in mos7840_port_probe()
1623 mos7840_port->ControlRegOffset, Data); in mos7840_port_probe()
1634 (__u16) (mos7840_port->DcrRegOffset + 0), Data); in mos7840_port_probe()
1643 (__u16) (mos7840_port->DcrRegOffset + 1), Data); in mos7840_port_probe()
1652 (__u16) (mos7840_port->DcrRegOffset + 2), Data); in mos7840_port_probe()
1686 if ((mos7840_port->port_num != 1) && (serial->num_ports == 2)) { in mos7840_port_probe()
1690 ((__u16)mos7840_port->port_num)), Data); in mos7840_port_probe()
1692 (__u16)(ZLP_REG1 + ((__u16) mos7840_port->port_num))); in mos7840_port_probe()
1702 ((__u16)mos7840_port->port_num) - 0x1), Data); in mos7840_port_probe()
1704 (__u16)(ZLP_REG1 + ((__u16) mos7840_port->port_num) - 0x1)); in mos7840_port_probe()
1713 mos7840_port->has_led = device_flags & MCS_LED; in mos7840_port_probe()
1716 if (mos7840_port->has_led) { in mos7840_port_probe()
1717 mos7840_port->led_urb = usb_alloc_urb(0, GFP_KERNEL); in mos7840_port_probe()
1718 mos7840_port->led_dr = kmalloc(sizeof(*mos7840_port->led_dr), in mos7840_port_probe()
1720 if (!mos7840_port->led_urb || !mos7840_port->led_dr) { in mos7840_port_probe()
1725 timer_setup(&mos7840_port->led_timer1, mos7840_led_off, 0); in mos7840_port_probe()
1726 mos7840_port->led_timer1.expires = in mos7840_port_probe()
1728 timer_setup(&mos7840_port->led_timer2, mos7840_led_flag_off, in mos7840_port_probe()
1730 mos7840_port->led_timer2.expires = in mos7840_port_probe()
1739 kfree(mos7840_port->led_dr); in mos7840_port_probe()
1740 usb_free_urb(mos7840_port->led_urb); in mos7840_port_probe()
1741 kfree(mos7840_port); in mos7840_port_probe()
1748 struct moschip_port *mos7840_port = usb_get_serial_port_data(port); in mos7840_port_remove() local
1750 if (mos7840_port->has_led) { in mos7840_port_remove()
1754 del_timer_sync(&mos7840_port->led_timer1); in mos7840_port_remove()
1755 del_timer_sync(&mos7840_port->led_timer2); in mos7840_port_remove()
1757 usb_kill_urb(mos7840_port->led_urb); in mos7840_port_remove()
1758 usb_free_urb(mos7840_port->led_urb); in mos7840_port_remove()
1759 kfree(mos7840_port->led_dr); in mos7840_port_remove()
1762 kfree(mos7840_port); in mos7840_port_remove()