Lines Matching refs:mos7840_port

335 				     struct moschip_port *mos7840_port)
338 dev_dbg(&port->dev, "SpRegOffset is %2x\n", mos7840_port->SpRegOffset);
339 dev_dbg(&port->dev, "ControlRegOffset is %2x\n", mos7840_port->ControlRegOffset);
340 dev_dbg(&port->dev, "DCRRegOffset is %2x\n", mos7840_port->DcrRegOffset);
416 struct moschip_port *mos7840_port = usb_get_serial_port_data(port);
418 if (test_and_set_bit_lock(MOS7840_FLAG_LED_BUSY, &mos7840_port->flags))
421 mos7840_set_led_async(mos7840_port, 0x0301, MODEM_CONTROL_REGISTER);
422 mod_timer(&mos7840_port->led_timer1,
434 struct moschip_port *mos7840_port = urb->context;
435 struct usb_serial_port *port = mos7840_port->port;
442 mos7840_port->read_urb_busy = false;
450 struct tty_port *tport = &mos7840_port->port->port;
457 if (mos7840_port->has_led)
460 mos7840_port->read_urb_busy = true;
461 retval = usb_submit_urb(mos7840_port->read_urb, GFP_ATOMIC);
465 mos7840_port->read_urb_busy = false;
477 struct moschip_port *mos7840_port = urb->context;
478 struct usb_serial_port *port = mos7840_port->port;
483 spin_lock_irqsave(&mos7840_port->pool_lock, flags);
485 if (urb == mos7840_port->write_urb_pool[i]) {
486 mos7840_port->busy[i] = 0;
490 spin_unlock_irqrestore(&mos7840_port->pool_lock, flags);
514 struct moschip_port *mos7840_port = usb_get_serial_port_data(port);
528 mos7840_port->write_urb_pool[j] = urb;
536 mos7840_port->write_urb_pool[j] = NULL;
556 status = mos7840_get_reg_sync(port, mos7840_port->SpRegOffset, &Data);
562 status = mos7840_set_reg_sync(port, mos7840_port->SpRegOffset, Data);
569 status = mos7840_set_reg_sync(port, mos7840_port->SpRegOffset, Data);
577 status = mos7840_get_reg_sync(port, mos7840_port->ControlRegOffset,
586 mos7840_port->ControlRegOffset, Data);
619 mos7840_port->shadowLCR = Data;
623 mos7840_port->shadowMCR = Data;
627 mos7840_port->shadowLCR = Data;
643 mos7840_port->shadowLCR = Data;
647 status = mos7840_get_reg_sync(port, mos7840_port->SpRegOffset, &Data);
650 status = mos7840_set_reg_sync(port, mos7840_port->SpRegOffset, Data);
653 status = mos7840_set_reg_sync(port, mos7840_port->SpRegOffset, Data);
660 status = mos7840_get_reg_sync(port, mos7840_port->ControlRegOffset,
663 status = mos7840_set_reg_sync(port, mos7840_port->ControlRegOffset,
668 status = mos7840_get_reg_sync(port, mos7840_port->ControlRegOffset,
671 status = mos7840_set_reg_sync(port, mos7840_port->ControlRegOffset,
679 dev_dbg(&port->dev, "port's number in the device is %d\n", mos7840_port->port_num);
680 mos7840_port->read_urb = port->read_urb;
684 usb_fill_bulk_urb(mos7840_port->read_urb,
689 mos7840_port->read_urb->transfer_buffer_length,
690 mos7840_bulk_in_callback, mos7840_port);
692 usb_fill_bulk_urb(mos7840_port->read_urb,
697 mos7840_port->read_urb->transfer_buffer_length,
698 mos7840_bulk_in_callback, mos7840_port);
702 mos7840_port->read_urb_busy = true;
703 response = usb_submit_urb(mos7840_port->read_urb, GFP_KERNEL);
707 mos7840_port->read_urb_busy = false;
712 mos7840_port->shadowMCR = MCR_MASTER_IE;
717 urb = mos7840_port->write_urb_pool[j];
736 struct moschip_port *mos7840_port = usb_get_serial_port_data(port);
741 spin_lock_irqsave(&mos7840_port->pool_lock, flags);
743 if (mos7840_port->busy[i]) {
744 struct urb *urb = mos7840_port->write_urb_pool[i];
748 spin_unlock_irqrestore(&mos7840_port->pool_lock, flags);
761 struct moschip_port *mos7840_port = usb_get_serial_port_data(port);
766 usb_kill_urb(mos7840_port->write_urb_pool[j]);
770 if (mos7840_port->write_urb_pool[j]) {
771 kfree(mos7840_port->write_urb_pool[j]->transfer_buffer);
772 usb_free_urb(mos7840_port->write_urb_pool[j]);
776 usb_kill_urb(mos7840_port->read_urb);
777 mos7840_port->read_urb_busy = false;
793 struct moschip_port *mos7840_port = usb_get_serial_port_data(port);
797 data = mos7840_port->shadowLCR | LCR_SET_BREAK;
799 data = mos7840_port->shadowLCR & ~LCR_SET_BREAK;
802 mos7840_port->shadowLCR = data;
803 dev_dbg(&port->dev, "%s mos7840_port->shadowLCR is %x\n", __func__, mos7840_port->shadowLCR);
806 mos7840_port->shadowLCR);
818 struct moschip_port *mos7840_port = usb_get_serial_port_data(port);
823 spin_lock_irqsave(&mos7840_port->pool_lock, flags);
825 if (!mos7840_port->busy[i])
828 spin_unlock_irqrestore(&mos7840_port->pool_lock, flags);
831 dev_dbg(&mos7840_port->port->dev, "%s - returns %u\n", __func__, room);
847 struct moschip_port *mos7840_port = usb_get_serial_port_data(port);
861 spin_lock_irqsave(&mos7840_port->pool_lock, flags);
863 if (!mos7840_port->busy[i]) {
864 mos7840_port->busy[i] = 1;
865 urb = mos7840_port->write_urb_pool[i];
870 spin_unlock_irqrestore(&mos7840_port->pool_lock, flags);
897 mos7840_bulk_out_data_callback, mos7840_port);
905 mos7840_bulk_out_data_callback, mos7840_port);
910 if (mos7840_port->has_led)
917 mos7840_port->busy[i] = 0;
940 struct moschip_port *mos7840_port = usb_get_serial_port_data(port);
952 mos7840_port->shadowMCR &= ~MCR_RTS;
954 mos7840_port->shadowMCR);
969 struct moschip_port *mos7840_port = usb_get_serial_port_data(port);
982 mos7840_port->shadowMCR |= MCR_RTS;
984 mos7840_port->shadowMCR);
1021 struct moschip_port *mos7840_port = usb_get_serial_port_data(port);
1026 mcr = mos7840_port->shadowMCR;
1041 mos7840_port->shadowMCR = mcr;
1098 static int mos7840_send_cmd_write_baud_rate(struct moschip_port *mos7840_port,
1101 struct usb_serial_port *port = mos7840_port->port;
1114 mos7840_port->shadowMCR = Data;
1127 mos7840_port->shadowMCR = Data;
1143 status = mos7840_get_reg_sync(port, mos7840_port->SpRegOffset,
1150 status = mos7840_set_reg_sync(port, mos7840_port->SpRegOffset,
1163 Data = mos7840_port->shadowLCR | SERIAL_LCR_DLAB;
1164 mos7840_port->shadowLCR = Data;
1177 Data = mos7840_port->shadowLCR & ~SERIAL_LCR_DLAB;
1178 mos7840_port->shadowLCR = Data;
1192 struct moschip_port *mos7840_port,
1195 struct usb_serial_port *port = mos7840_port->port;
1257 mos7840_port->shadowLCR &=
1259 mos7840_port->shadowLCR |= (lData | lParity | lStop);
1261 dev_dbg(&port->dev, "%s - mos7840_port->shadowLCR is %x\n", __func__,
1262 mos7840_port->shadowLCR);
1274 Data = mos7840_port->shadowLCR;
1279 mos7840_port->shadowMCR = Data;
1286 mos7840_port->shadowMCR = MCR_MASTER_IE;
1288 mos7840_port->shadowMCR |= (MCR_DTR | MCR_RTS);
1291 mos7840_port->shadowMCR |= (MCR_XON_ANY);
1293 mos7840_port->shadowMCR &= ~(MCR_XON_ANY);
1295 Data = mos7840_port->shadowMCR;
1308 status = mos7840_send_cmd_write_baud_rate(mos7840_port, baud);
1314 if (!mos7840_port->read_urb_busy) {
1315 mos7840_port->read_urb_busy = true;
1316 status = usb_submit_urb(mos7840_port->read_urb, GFP_KERNEL);
1320 mos7840_port->read_urb_busy = false;
1323 dev_dbg(&port->dev, "%s - mos7840_port->shadowLCR is End %x\n", __func__,
1324 mos7840_port->shadowLCR);
1337 struct moschip_port *mos7840_port = usb_get_serial_port_data(port);
1342 mos7840_change_port_settings(tty, mos7840_port, old_termios);
1344 if (!mos7840_port->read_urb_busy) {
1345 mos7840_port->read_urb_busy = true;
1346 status = usb_submit_urb(mos7840_port->read_urb, GFP_KERNEL);
1350 mos7840_port->read_urb_busy = false;
1537 struct moschip_port *mos7840_port;
1548 mos7840_port = kzalloc(sizeof(struct moschip_port), GFP_KERNEL);
1549 if (!mos7840_port)
1556 mos7840_port->port = port;
1557 spin_lock_init(&mos7840_port->pool_lock);
1562 mos7840_port->port_num = pnum + 1;
1564 dev_dbg(&port->dev, "mos7840_port->port_num = %d\n", mos7840_port->port_num);
1566 if (mos7840_port->port_num == 1) {
1567 mos7840_port->SpRegOffset = 0x0;
1568 mos7840_port->ControlRegOffset = 0x1;
1569 mos7840_port->DcrRegOffset = 0x4;
1571 u8 phy_num = mos7840_port->port_num;
1577 mos7840_port->SpRegOffset = 0x8 + 2 * (phy_num - 2);
1578 mos7840_port->ControlRegOffset = 0x9 + 2 * (phy_num - 2);
1579 mos7840_port->DcrRegOffset = 0x16 + 3 * (phy_num - 2);
1581 mos7840_dump_serial_port(port, mos7840_port);
1582 usb_set_serial_port_data(port, mos7840_port);
1586 mos7840_port->ControlRegOffset, &Data);
1598 mos7840_port->ControlRegOffset, Data);
1609 (__u16) (mos7840_port->DcrRegOffset + 0), Data);
1618 (__u16) (mos7840_port->DcrRegOffset + 1), Data);
1627 (__u16) (mos7840_port->DcrRegOffset + 2), Data);
1661 if ((mos7840_port->port_num != 1) && (serial->num_ports == 2)) {
1665 ((__u16)mos7840_port->port_num)), Data);
1667 (__u16)(ZLP_REG1 + ((__u16) mos7840_port->port_num)));
1677 ((__u16)mos7840_port->port_num) - 0x1), Data);
1679 (__u16)(ZLP_REG1 + ((__u16) mos7840_port->port_num) - 0x1));
1688 mos7840_port->has_led = device_flags & MCS_LED;
1691 if (mos7840_port->has_led) {
1692 mos7840_port->led_urb = usb_alloc_urb(0, GFP_KERNEL);
1693 mos7840_port->led_dr = kmalloc(sizeof(*mos7840_port->led_dr),
1695 if (!mos7840_port->led_urb || !mos7840_port->led_dr) {
1700 timer_setup(&mos7840_port->led_timer1, mos7840_led_off, 0);
1701 mos7840_port->led_timer1.expires =
1703 timer_setup(&mos7840_port->led_timer2, mos7840_led_flag_off,
1705 mos7840_port->led_timer2.expires =
1714 kfree(mos7840_port->led_dr);
1715 usb_free_urb(mos7840_port->led_urb);
1716 kfree(mos7840_port);
1723 struct moschip_port *mos7840_port = usb_get_serial_port_data(port);
1725 if (mos7840_port->has_led) {
1729 timer_shutdown_sync(&mos7840_port->led_timer1);
1730 timer_shutdown_sync(&mos7840_port->led_timer2);
1732 usb_kill_urb(mos7840_port->led_urb);
1733 usb_free_urb(mos7840_port->led_urb);
1734 kfree(mos7840_port->led_dr);
1737 kfree(mos7840_port);
1742 struct moschip_port *mos7840_port;
1751 mos7840_port = usb_get_serial_port_data(port);
1753 usb_kill_urb(mos7840_port->read_urb);
1754 mos7840_port->read_urb_busy = false;
1762 struct moschip_port *mos7840_port;
1772 mos7840_port = usb_get_serial_port_data(port);
1774 mos7840_port->read_urb_busy = true;
1775 res = usb_submit_urb(mos7840_port->read_urb, GFP_NOIO);
1777 mos7840_port->read_urb_busy = false;