Lines Matching refs:tty

90 	struct ipw_tty *tty = get_tty(linux_tty->index);  in ipw_open()  local
92 if (!tty) in ipw_open()
95 mutex_lock(&tty->ipw_tty_mutex); in ipw_open()
96 if (tty->port.count == 0) in ipw_open()
97 tty->tx_bytes_queued = 0; in ipw_open()
99 tty->port.count++; in ipw_open()
101 tty->port.tty = linux_tty; in ipw_open()
102 linux_tty->driver_data = tty; in ipw_open()
103 tty->port.low_latency = 1; in ipw_open()
105 if (tty->tty_type == TTYTYPE_MODEM) in ipw_open()
106 ipwireless_ppp_open(tty->network); in ipw_open()
108 mutex_unlock(&tty->ipw_tty_mutex); in ipw_open()
113 static void do_ipw_close(struct ipw_tty *tty) in do_ipw_close() argument
115 tty->port.count--; in do_ipw_close()
117 if (tty->port.count == 0) { in do_ipw_close()
118 struct tty_struct *linux_tty = tty->port.tty; in do_ipw_close()
121 tty->port.tty = NULL; in do_ipw_close()
124 if (tty->tty_type == TTYTYPE_MODEM) in do_ipw_close()
125 ipwireless_ppp_close(tty->network); in do_ipw_close()
132 struct ipw_tty *tty = linux_tty->driver_data; in ipw_hangup() local
134 if (!tty) in ipw_hangup()
137 mutex_lock(&tty->ipw_tty_mutex); in ipw_hangup()
138 if (tty->port.count == 0) { in ipw_hangup()
139 mutex_unlock(&tty->ipw_tty_mutex); in ipw_hangup()
143 do_ipw_close(tty); in ipw_hangup()
145 mutex_unlock(&tty->ipw_tty_mutex); in ipw_hangup()
154 void ipwireless_tty_received(struct ipw_tty *tty, unsigned char *data, in ipwireless_tty_received() argument
159 mutex_lock(&tty->ipw_tty_mutex); in ipwireless_tty_received()
161 if (!tty->port.count) { in ipwireless_tty_received()
162 mutex_unlock(&tty->ipw_tty_mutex); in ipwireless_tty_received()
165 mutex_unlock(&tty->ipw_tty_mutex); in ipwireless_tty_received()
167 work = tty_insert_flip_string(&tty->port, data, length); in ipwireless_tty_received()
175 tty_flip_buffer_push(&tty->port); in ipwireless_tty_received()
181 struct ipw_tty *tty = callback_data; in ipw_write_packet_sent_callback() local
187 tty->tx_bytes_queued -= packet_length; in ipw_write_packet_sent_callback()
193 struct ipw_tty *tty = linux_tty->driver_data; in ipw_write() local
196 if (!tty) in ipw_write()
199 mutex_lock(&tty->ipw_tty_mutex); in ipw_write()
200 if (!tty->port.count) { in ipw_write()
201 mutex_unlock(&tty->ipw_tty_mutex); in ipw_write()
205 room = IPWIRELESS_TX_QUEUE_SIZE - tty->tx_bytes_queued; in ipw_write()
213 mutex_unlock(&tty->ipw_tty_mutex); in ipw_write()
217 ret = ipwireless_send_packet(tty->hardware, IPW_CHANNEL_RAS, in ipw_write()
219 ipw_write_packet_sent_callback, tty); in ipw_write()
221 mutex_unlock(&tty->ipw_tty_mutex); in ipw_write()
225 tty->tx_bytes_queued += count; in ipw_write()
226 mutex_unlock(&tty->ipw_tty_mutex); in ipw_write()
233 struct ipw_tty *tty = linux_tty->driver_data; in ipw_write_room() local
237 if (!tty) in ipw_write_room()
240 if (!tty->port.count) in ipw_write_room()
243 room = IPWIRELESS_TX_QUEUE_SIZE - tty->tx_bytes_queued; in ipw_write_room()
250 static int ipwireless_get_serial_info(struct ipw_tty *tty, in ipwireless_get_serial_info() argument
260 tmp.line = tty->index; in ipwireless_get_serial_info()
277 struct ipw_tty *tty = linux_tty->driver_data; in ipw_chars_in_buffer() local
279 if (!tty) in ipw_chars_in_buffer()
282 if (!tty->port.count) in ipw_chars_in_buffer()
285 return tty->tx_bytes_queued; in ipw_chars_in_buffer()
288 static int get_control_lines(struct ipw_tty *tty) in get_control_lines() argument
290 unsigned int my = tty->control_lines; in get_control_lines()
307 static int set_control_lines(struct ipw_tty *tty, unsigned int set, in set_control_lines() argument
313 ret = ipwireless_set_RTS(tty->hardware, tty->channel_idx, 1); in set_control_lines()
316 if (tty->secondary_channel_idx != -1) { in set_control_lines()
317 ret = ipwireless_set_RTS(tty->hardware, in set_control_lines()
318 tty->secondary_channel_idx, 1); in set_control_lines()
324 ret = ipwireless_set_DTR(tty->hardware, tty->channel_idx, 1); in set_control_lines()
327 if (tty->secondary_channel_idx != -1) { in set_control_lines()
328 ret = ipwireless_set_DTR(tty->hardware, in set_control_lines()
329 tty->secondary_channel_idx, 1); in set_control_lines()
335 ret = ipwireless_set_RTS(tty->hardware, tty->channel_idx, 0); in set_control_lines()
336 if (tty->secondary_channel_idx != -1) { in set_control_lines()
337 ret = ipwireless_set_RTS(tty->hardware, in set_control_lines()
338 tty->secondary_channel_idx, 0); in set_control_lines()
344 ret = ipwireless_set_DTR(tty->hardware, tty->channel_idx, 0); in set_control_lines()
345 if (tty->secondary_channel_idx != -1) { in set_control_lines()
346 ret = ipwireless_set_DTR(tty->hardware, in set_control_lines()
347 tty->secondary_channel_idx, 0); in set_control_lines()
357 struct ipw_tty *tty = linux_tty->driver_data; in ipw_tiocmget() local
360 if (!tty) in ipw_tiocmget()
363 if (!tty->port.count) in ipw_tiocmget()
366 return get_control_lines(tty); in ipw_tiocmget()
373 struct ipw_tty *tty = linux_tty->driver_data; in ipw_tiocmset() local
376 if (!tty) in ipw_tiocmset()
379 if (!tty->port.count) in ipw_tiocmset()
382 return set_control_lines(tty, set, clear); in ipw_tiocmset()
388 struct ipw_tty *tty = linux_tty->driver_data; in ipw_ioctl() local
390 if (!tty) in ipw_ioctl()
393 if (!tty->port.count) in ipw_ioctl()
400 return ipwireless_get_serial_info(tty, (void __user *) arg); in ipw_ioctl()
406 if (tty->tty_type == TTYTYPE_MODEM) { in ipw_ioctl()
411 tty->network); in ipw_ioctl()
423 tty->network); in ipw_ioctl()
524 void ipwireless_tty_free(struct ipw_tty *tty) in ipwireless_tty_free() argument
527 struct ipw_network *network = ttys[tty->index]->network; in ipwireless_tty_free()
529 for (j = tty->index; j < IPWIRELESS_PCMCIA_MINORS; in ipwireless_tty_free()
540 if (ttyj->port.tty != NULL) { in ipwireless_tty_free()
542 tty_vhangup(ttyj->port.tty); in ipwireless_tty_free()
617 int ipwireless_tty_is_modem(struct ipw_tty *tty) in ipwireless_tty_is_modem() argument
619 return tty->tty_type == TTYTYPE_MODEM; in ipwireless_tty_is_modem()
623 ipwireless_tty_notify_control_line_change(struct ipw_tty *tty, in ipwireless_tty_notify_control_line_change() argument
628 unsigned int old_control_lines = tty->control_lines; in ipwireless_tty_notify_control_line_change()
630 tty->control_lines = (tty->control_lines & ~changed_mask) in ipwireless_tty_notify_control_line_change()
638 && !(tty->control_lines & IPW_CONTROL_LINE_DCD) in ipwireless_tty_notify_control_line_change()
639 && tty->port.tty) { in ipwireless_tty_notify_control_line_change()
640 tty_hangup(tty->port.tty); in ipwireless_tty_notify_control_line_change()