Lines Matching refs:edge_port

221 static void stop_read(struct edgeport_port *edge_port);
222 static int restart_read(struct edgeport_port *edge_port);
1555 static void handle_new_msr(struct edgeport_port *edge_port, __u8 msr) in handle_new_msr() argument
1560 dev_dbg(&edge_port->port->dev, "%s - %02x\n", __func__, msr); in handle_new_msr()
1564 icount = &edge_port->port->icount; in handle_new_msr()
1575 wake_up_interruptible(&edge_port->port->port.delta_msr_wait); in handle_new_msr()
1579 edge_port->shadow_msr = msr & 0xf0; in handle_new_msr()
1581 tty = tty_port_tty_get(&edge_port->port->port); in handle_new_msr()
1590 static void handle_new_lsr(struct edgeport_port *edge_port, int lsr_data, in handle_new_lsr() argument
1597 dev_dbg(&edge_port->port->dev, "%s - %02x\n", __func__, new_lsr); in handle_new_lsr()
1599 edge_port->shadow_lsr = lsr; in handle_new_lsr()
1610 edge_tty_recv(edge_port->port, &data, 1); in handle_new_lsr()
1613 icount = &edge_port->port->icount; in handle_new_lsr()
1628 struct edgeport_port *edge_port; in edge_interrupt_callback() local
1680 edge_port = usb_get_serial_port_data(port); in edge_interrupt_callback()
1681 if (!edge_port) { in edge_interrupt_callback()
1694 edge_port->lsr_event = 1; in edge_interrupt_callback()
1695 edge_port->lsr_mask = lsr; in edge_interrupt_callback()
1699 handle_new_lsr(edge_port, 0, lsr, 0); in edge_interrupt_callback()
1708 handle_new_msr(edge_port, msr); in edge_interrupt_callback()
1729 struct edgeport_port *edge_port = urb->context; in edge_bulk_in_callback() local
1730 struct device *dev = &edge_port->port->dev; in edge_bulk_in_callback()
1759 port_number = edge_port->port->port_number; in edge_bulk_in_callback()
1761 if (urb->actual_length > 0 && edge_port->lsr_event) { in edge_bulk_in_callback()
1762 edge_port->lsr_event = 0; in edge_bulk_in_callback()
1764 __func__, port_number, edge_port->lsr_mask, *data); in edge_bulk_in_callback()
1765 handle_new_lsr(edge_port, 1, edge_port->lsr_mask, *data); in edge_bulk_in_callback()
1773 if (edge_port->close_pending) in edge_bulk_in_callback()
1777 edge_tty_recv(edge_port->port, data, in edge_bulk_in_callback()
1779 edge_port->port->icount.rx += urb->actual_length; in edge_bulk_in_callback()
1784 spin_lock_irqsave(&edge_port->ep_lock, flags); in edge_bulk_in_callback()
1785 if (edge_port->ep_read_urb_state == EDGE_READ_URB_RUNNING) in edge_bulk_in_callback()
1787 else if (edge_port->ep_read_urb_state == EDGE_READ_URB_STOPPING) in edge_bulk_in_callback()
1788 edge_port->ep_read_urb_state = EDGE_READ_URB_STOPPED; in edge_bulk_in_callback()
1790 spin_unlock_irqrestore(&edge_port->ep_lock, flags); in edge_bulk_in_callback()
1810 struct edgeport_port *edge_port = usb_get_serial_port_data(port); in edge_bulk_out_callback() local
1814 edge_port->ep_write_urb_in_use = 0; in edge_bulk_out_callback()
1840 struct edgeport_port *edge_port = usb_get_serial_port_data(port); in edge_open() local
1849 if (edge_port == NULL) in edge_open()
1857 status = ti_do_config(edge_port, UMPC_SET_CLR_LOOPBACK, 0); in edge_open()
1874 edge_port->ump_read_timeout = in edge_open()
1914 &edge_port->shadow_msr, 1); in edge_open()
1921 dev_dbg(&port->dev, "ShadowMSR 0x%X\n", edge_port->shadow_msr); in edge_open()
1924 edge_port->shadow_mcr = MCR_RTS | MCR_DTR; in edge_open()
1925 dev_dbg(&port->dev, "ShadowMCR 0x%X\n", edge_port->shadow_mcr); in edge_open()
1927 edge_serial = edge_port->edge_serial; in edge_open()
1952 edge_port->ep_read_urb_state = EDGE_READ_URB_RUNNING; in edge_open()
1953 urb->context = edge_port; in edge_open()
1967 if (edge_port->edge_serial->num_ports_open == 0) in edge_open()
1977 struct edgeport_port *edge_port; in edge_close() local
1983 edge_port = usb_get_serial_port_data(port); in edge_close()
1984 if (edge_serial == NULL || edge_port == NULL) in edge_close()
1991 edge_port->close_pending = 1; in edge_close()
1995 edge_port->ep_write_urb_in_use = 0; in edge_close()
1996 spin_lock_irqsave(&edge_port->ep_lock, flags); in edge_close()
1998 spin_unlock_irqrestore(&edge_port->ep_lock, flags); in edge_close()
2006 --edge_port->edge_serial->num_ports_open; in edge_close()
2007 if (edge_port->edge_serial->num_ports_open <= 0) { in edge_close()
2010 edge_port->edge_serial->num_ports_open = 0; in edge_close()
2013 edge_port->close_pending = 0; in edge_close()
2019 struct edgeport_port *edge_port = usb_get_serial_port_data(port); in edge_write() local
2026 if (edge_port == NULL) in edge_write()
2028 if (edge_port->close_pending == 1) in edge_write()
2032 &edge_port->ep_lock); in edge_write()
2041 struct edgeport_port *edge_port = usb_get_serial_port_data(port); in edge_send() local
2044 spin_lock_irqsave(&edge_port->ep_lock, flags); in edge_send()
2046 if (edge_port->ep_write_urb_in_use) { in edge_send()
2047 spin_unlock_irqrestore(&edge_port->ep_lock, flags); in edge_send()
2056 spin_unlock_irqrestore(&edge_port->ep_lock, flags); in edge_send()
2060 edge_port->ep_write_urb_in_use = 1; in edge_send()
2062 spin_unlock_irqrestore(&edge_port->ep_lock, flags); in edge_send()
2075 edge_port->ep_write_urb_in_use = 0; in edge_send()
2078 edge_port->port->icount.tx += count; in edge_send()
2091 struct edgeport_port *edge_port = usb_get_serial_port_data(port); in edge_write_room() local
2095 if (edge_port == NULL) in edge_write_room()
2097 if (edge_port->close_pending == 1) in edge_write_room()
2100 spin_lock_irqsave(&edge_port->ep_lock, flags); in edge_write_room()
2102 spin_unlock_irqrestore(&edge_port->ep_lock, flags); in edge_write_room()
2111 struct edgeport_port *edge_port = usb_get_serial_port_data(port); in edge_chars_in_buffer() local
2114 if (edge_port == NULL) in edge_chars_in_buffer()
2117 spin_lock_irqsave(&edge_port->ep_lock, flags); in edge_chars_in_buffer()
2119 spin_unlock_irqrestore(&edge_port->ep_lock, flags); in edge_chars_in_buffer()
2127 struct edgeport_port *edge_port = usb_get_serial_port_data(port); in edge_tx_empty() local
2130 ret = tx_active(edge_port); in edge_tx_empty()
2140 struct edgeport_port *edge_port = usb_get_serial_port_data(port); in edge_throttle() local
2143 if (edge_port == NULL) in edge_throttle()
2160 stop_read(edge_port); in edge_throttle()
2167 struct edgeport_port *edge_port = usb_get_serial_port_data(port); in edge_unthrottle() local
2170 if (edge_port == NULL) in edge_unthrottle()
2186 status = restart_read(edge_port); in edge_unthrottle()
2195 static void stop_read(struct edgeport_port *edge_port) in stop_read() argument
2199 spin_lock_irqsave(&edge_port->ep_lock, flags); in stop_read()
2201 if (edge_port->ep_read_urb_state == EDGE_READ_URB_RUNNING) in stop_read()
2202 edge_port->ep_read_urb_state = EDGE_READ_URB_STOPPING; in stop_read()
2203 edge_port->shadow_mcr &= ~MCR_RTS; in stop_read()
2205 spin_unlock_irqrestore(&edge_port->ep_lock, flags); in stop_read()
2208 static int restart_read(struct edgeport_port *edge_port) in restart_read() argument
2214 spin_lock_irqsave(&edge_port->ep_lock, flags); in restart_read()
2216 if (edge_port->ep_read_urb_state == EDGE_READ_URB_STOPPED) { in restart_read()
2217 urb = edge_port->port->read_urb; in restart_read()
2220 edge_port->ep_read_urb_state = EDGE_READ_URB_RUNNING; in restart_read()
2221 edge_port->shadow_mcr |= MCR_RTS; in restart_read()
2223 spin_unlock_irqrestore(&edge_port->ep_lock, flags); in restart_read()
2229 struct edgeport_port *edge_port, struct ktermios *old_termios) in change_port_settings() argument
2231 struct device *dev = &edge_port->port->dev; in change_port_settings()
2236 int port_number = edge_port->port->port_number; in change_port_settings()
2251 config->bUartMode = (__u8)(edge_port->bUartMode); in change_port_settings()
2303 restart_read(edge_port); in change_port_settings()
2342 edge_port->baud_rate = baud; in change_port_settings()
2362 status = send_cmd(edge_port->port->serial->dev, UMPC_SET_CONFIG, in change_port_settings()
2374 struct edgeport_port *edge_port = usb_get_serial_port_data(port); in edge_set_termios() local
2376 if (edge_port == NULL) in edge_set_termios()
2379 change_port_settings(tty, edge_port, old_termios); in edge_set_termios()
2386 struct edgeport_port *edge_port = usb_get_serial_port_data(port); in edge_tiocmset() local
2390 spin_lock_irqsave(&edge_port->ep_lock, flags); in edge_tiocmset()
2391 mcr = edge_port->shadow_mcr; in edge_tiocmset()
2406 edge_port->shadow_mcr = mcr; in edge_tiocmset()
2407 spin_unlock_irqrestore(&edge_port->ep_lock, flags); in edge_tiocmset()
2409 restore_mcr(edge_port, mcr); in edge_tiocmset()
2416 struct edgeport_port *edge_port = usb_get_serial_port_data(port); in edge_tiocmget() local
2422 spin_lock_irqsave(&edge_port->ep_lock, flags); in edge_tiocmget()
2424 msr = edge_port->shadow_msr; in edge_tiocmget()
2425 mcr = edge_port->shadow_mcr; in edge_tiocmget()
2435 spin_unlock_irqrestore(&edge_port->ep_lock, flags); in edge_tiocmget()
2440 static int get_serial_info(struct edgeport_port *edge_port, in get_serial_info() argument
2446 cwait = edge_port->port->port.closing_wait; in get_serial_info()
2453 tmp.line = edge_port->port->minor; in get_serial_info()
2454 tmp.port = edge_port->port->port_number; in get_serial_info()
2456 tmp.xmit_fifo_size = edge_port->port->bulk_out_size; in get_serial_info()
2470 struct edgeport_port *edge_port = usb_get_serial_port_data(port); in edge_ioctl() local
2475 return get_serial_info(edge_port, in edge_ioctl()
2484 struct edgeport_port *edge_port = usb_get_serial_port_data(port); in edge_break() local
2490 status = ti_do_config(edge_port, UMPC_SET_CLR_BREAK, bv); in edge_break()
2603 struct edgeport_port *edge_port; in edge_port_probe() local
2606 edge_port = kzalloc(sizeof(*edge_port), GFP_KERNEL); in edge_port_probe()
2607 if (!edge_port) in edge_port_probe()
2610 spin_lock_init(&edge_port->ep_lock); in edge_port_probe()
2611 edge_port->port = port; in edge_port_probe()
2612 edge_port->edge_serial = usb_get_serial_data(port->serial); in edge_port_probe()
2613 edge_port->bUartMode = default_uart_mode; in edge_port_probe()
2617 edge_port->uart_base = UMPMEM_BASE_UART1; in edge_port_probe()
2618 edge_port->dma_address = UMPD_OEDB1_ADDRESS; in edge_port_probe()
2621 edge_port->uart_base = UMPMEM_BASE_UART2; in edge_port_probe()
2622 edge_port->dma_address = UMPD_OEDB2_ADDRESS; in edge_port_probe()
2632 __func__, port->port_number, edge_port->uart_base, in edge_port_probe()
2633 edge_port->dma_address); in edge_port_probe()
2635 usb_set_serial_port_data(port, edge_port); in edge_port_probe()
2646 kfree(edge_port); in edge_port_probe()
2653 struct edgeport_port *edge_port; in edge_port_remove() local
2655 edge_port = usb_get_serial_port_data(port); in edge_port_remove()
2657 kfree(edge_port); in edge_port_remove()
2668 struct edgeport_port *edge_port = usb_get_serial_port_data(port); in uart_mode_show() local
2670 return sprintf(buf, "%d\n", edge_port->bUartMode); in uart_mode_show()
2677 struct edgeport_port *edge_port = usb_get_serial_port_data(port); in uart_mode_store() local
2683 edge_port->bUartMode = v; in uart_mode_store()