Lines Matching full:up

120 		struct uart_8250_port *up;  in serial8250_interrupt()  local
123 up = list_entry(l, struct uart_8250_port, list); in serial8250_interrupt()
124 port = &up->port; in serial8250_interrupt()
152 static void serial_do_unlink(struct irq_info *i, struct uart_8250_port *up) in serial_do_unlink() argument
157 if (i->head == &up->list) in serial_do_unlink()
159 list_del(&up->list); in serial_do_unlink()
161 BUG_ON(i->head != &up->list); in serial_do_unlink()
172 static int serial_link_irq_chain(struct uart_8250_port *up) in serial_link_irq_chain() argument
181 h = &irq_lists[up->port.irq % NR_IRQ_HASH]; in serial_link_irq_chain()
185 if (i->irq == up->port.irq) in serial_link_irq_chain()
196 i->irq = up->port.irq; in serial_link_irq_chain()
204 list_add(&up->list, i->head); in serial_link_irq_chain()
209 INIT_LIST_HEAD(&up->list); in serial_link_irq_chain()
210 i->head = &up->list; in serial_link_irq_chain()
212 ret = request_irq(up->port.irq, serial8250_interrupt, in serial_link_irq_chain()
213 up->port.irqflags, up->port.name, i); in serial_link_irq_chain()
215 serial_do_unlink(i, up); in serial_link_irq_chain()
221 static void serial_unlink_irq_chain(struct uart_8250_port *up) in serial_unlink_irq_chain() argument
233 h = &irq_lists[up->port.irq % NR_IRQ_HASH]; in serial_unlink_irq_chain()
237 if (i->irq == up->port.irq) in serial_unlink_irq_chain()
245 free_irq(up->port.irq, i); in serial_unlink_irq_chain()
247 serial_do_unlink(i, up); in serial_unlink_irq_chain()
259 struct uart_8250_port *up = from_timer(up, t, timer); in serial8250_timeout() local
261 up->port.handle_irq(&up->port); in serial8250_timeout()
262 mod_timer(&up->timer, jiffies + uart_poll_timeout(&up->port)); in serial8250_timeout()
267 struct uart_8250_port *up = from_timer(up, t, timer); in serial8250_backup_timeout() local
271 spin_lock_irqsave(&up->port.lock, flags); in serial8250_backup_timeout()
277 if (up->port.irq) { in serial8250_backup_timeout()
278 ier = serial_in(up, UART_IER); in serial8250_backup_timeout()
279 serial_out(up, UART_IER, 0); in serial8250_backup_timeout()
282 iir = serial_in(up, UART_IIR); in serial8250_backup_timeout()
290 lsr = serial_in(up, UART_LSR); in serial8250_backup_timeout()
291 up->lsr_saved_flags |= lsr & LSR_SAVE_FLAGS; in serial8250_backup_timeout()
292 if ((iir & UART_IIR_NO_INT) && (up->ier & UART_IER_THRI) && in serial8250_backup_timeout()
293 (!uart_circ_empty(&up->port.state->xmit) || up->port.x_char) && in serial8250_backup_timeout()
300 serial8250_tx_chars(up); in serial8250_backup_timeout()
302 if (up->port.irq) in serial8250_backup_timeout()
303 serial_out(up, UART_IER, ier); in serial8250_backup_timeout()
305 spin_unlock_irqrestore(&up->port.lock, flags); in serial8250_backup_timeout()
308 mod_timer(&up->timer, in serial8250_backup_timeout()
309 jiffies + uart_poll_timeout(&up->port) + HZ / 5); in serial8250_backup_timeout()
312 static int univ8250_setup_irq(struct uart_8250_port *up) in univ8250_setup_irq() argument
314 struct uart_port *port = &up->port; in univ8250_setup_irq()
321 if (up->bugs & UART_BUG_THRE) { in univ8250_setup_irq()
324 up->timer.function = serial8250_backup_timeout; in univ8250_setup_irq()
325 mod_timer(&up->timer, jiffies + in univ8250_setup_irq()
335 mod_timer(&up->timer, jiffies + uart_poll_timeout(port)); in univ8250_setup_irq()
337 retval = serial_link_irq_chain(up); in univ8250_setup_irq()
342 static void univ8250_release_irq(struct uart_8250_port *up) in univ8250_release_irq() argument
344 struct uart_port *port = &up->port; in univ8250_release_irq()
346 del_timer_sync(&up->timer); in univ8250_release_irq()
347 up->timer.function = serial8250_timeout; in univ8250_release_irq()
349 serial_unlink_irq_chain(up); in univ8250_release_irq()
353 static int serial8250_request_rsa_resource(struct uart_8250_port *up) in serial8250_request_rsa_resource() argument
355 unsigned long start = UART_RSA_BASE << up->port.regshift; in serial8250_request_rsa_resource()
356 unsigned int size = 8 << up->port.regshift; in serial8250_request_rsa_resource()
357 struct uart_port *port = &up->port; in serial8250_request_rsa_resource()
374 static void serial8250_release_rsa_resource(struct uart_8250_port *up) in serial8250_release_rsa_resource() argument
376 unsigned long offset = UART_RSA_BASE << up->port.regshift; in serial8250_release_rsa_resource()
377 unsigned int size = 8 << up->port.regshift; in serial8250_release_rsa_resource()
378 struct uart_port *port = &up->port; in serial8250_release_rsa_resource()
417 static void (*serial8250_isa_config)(int port, struct uart_port *up,
421 void (*v)(int port, struct uart_port *up, u32 *capabilities)) in serial8250_set_isa_configurator() argument
431 struct uart_8250_port *up = up_to_u8250p(port); in univ8250_config_port() local
433 up->probe &= ~UART_PROBE_RSA; in univ8250_config_port()
435 if (serial8250_request_rsa_resource(up) == 0) in univ8250_config_port()
436 up->probe |= UART_PROBE_RSA; in univ8250_config_port()
441 if (probe_rsa[i] == up->port.iobase) { in univ8250_config_port()
442 if (serial8250_request_rsa_resource(up) == 0) in univ8250_config_port()
443 up->probe |= UART_PROBE_RSA; in univ8250_config_port()
451 if (port->type != PORT_RSA && up->probe & UART_PROBE_RSA) in univ8250_config_port()
452 serial8250_release_rsa_resource(up); in univ8250_config_port()
457 struct uart_8250_port *up = up_to_u8250p(port); in univ8250_request_port() local
462 ret = serial8250_request_rsa_resource(up); in univ8250_request_port()
472 struct uart_8250_port *up = up_to_u8250p(port); in univ8250_release_port() local
475 serial8250_release_rsa_resource(up); in univ8250_release_port()
490 static inline void serial8250_apply_quirks(struct uart_8250_port *up) in serial8250_apply_quirks() argument
492 up->port.quirks |= skip_txen_test ? UPQ_NO_TXEN_TEST : 0; in serial8250_apply_quirks()
497 struct uart_8250_port *up; in serial8250_isa_init_ports() local
509 struct uart_8250_port *up = &serial8250_ports[i]; in serial8250_isa_init_ports() local
510 struct uart_port *port = &up->port; in serial8250_isa_init_ports()
513 serial8250_init_port(up); in serial8250_isa_init_ports()
518 timer_setup(&up->timer, serial8250_timeout, 0); in serial8250_isa_init_ports()
520 up->ops = &univ8250_driver_ops; in serial8250_isa_init_ports()
525 up->mcr_mask = ~ALPHA_KLUDGE_MCR; in serial8250_isa_init_ports()
526 up->mcr_force = ALPHA_KLUDGE_MCR; in serial8250_isa_init_ports()
527 serial8250_set_defaults(up); in serial8250_isa_init_ports()
537 for (i = 0, up = serial8250_ports; in serial8250_isa_init_ports()
539 i++, up++) { in serial8250_isa_init_ports()
540 struct uart_port *port = &up->port; in serial8250_isa_init_ports()
554 serial8250_isa_config(i, &up->port, &up->capabilities); in serial8250_isa_init_ports()
564 struct uart_8250_port *up = &serial8250_ports[i]; in serial8250_register_ports() local
566 if (up->port.type == PORT_8250_CIR) in serial8250_register_ports()
569 if (up->port.dev) in serial8250_register_ports()
572 up->port.dev = dev; in serial8250_register_ports()
574 serial8250_apply_quirks(up); in serial8250_register_ports()
575 uart_add_one_port(drv, &up->port); in serial8250_register_ports()
584 struct uart_8250_port *up = &serial8250_ports[co->index]; in univ8250_console_write() local
586 serial8250_console_write(up, s, count); in univ8250_console_write()
759 struct uart_8250_port *up = &serial8250_ports[line]; in serial8250_suspend_port() local
760 struct uart_port *port = &up->port; in serial8250_suspend_port()
765 serial_out(up, UART_SCR, canary); in serial8250_suspend_port()
766 if (serial_in(up, UART_SCR) == canary) in serial8250_suspend_port()
767 up->canary = canary; in serial8250_suspend_port()
782 struct uart_8250_port *up = &serial8250_ports[line]; in serial8250_resume_port() local
783 struct uart_port *port = &up->port; in serial8250_resume_port()
785 up->canary = 0; in serial8250_resume_port()
787 if (up->capabilities & UART_NATSEMI) { in serial8250_resume_port()
791 ns16550a_goto_highspeed(up); in serial8250_resume_port()
859 struct uart_8250_port *up = &serial8250_ports[i]; in serial8250_remove() local
861 if (up->port.dev == &dev->dev) in serial8250_remove()
872 struct uart_8250_port *up = &serial8250_ports[i]; in serial8250_suspend() local
874 if (up->port.type != PORT_UNKNOWN && up->port.dev == &dev->dev) in serial8250_suspend()
875 uart_suspend_port(&serial8250_reg, &up->port); in serial8250_suspend()
886 struct uart_8250_port *up = &serial8250_ports[i]; in serial8250_resume() local
888 if (up->port.type != PORT_UNKNOWN && up->port.dev == &dev->dev) in serial8250_resume()
957 struct uart_8250_port *up = in serial_8250_overrun_backoff_work() local
960 struct uart_port *port = &up->port; in serial_8250_overrun_backoff_work()
964 up->ier |= UART_IER_RLSI | UART_IER_RDI; in serial_8250_overrun_backoff_work()
965 up->port.read_status_mask |= UART_LSR_DR; in serial_8250_overrun_backoff_work()
966 serial_out(up, UART_IER, up->ier); in serial_8250_overrun_backoff_work()
972 * @up: serial port template
975 * port exists and is in use, it is hung up and unregistered
983 int serial8250_register_8250_port(struct uart_8250_port *up) in serial8250_register_8250_port() argument
988 if (up->port.uartclk == 0) in serial8250_register_8250_port()
993 uart = serial8250_find_match_or_unused(&up->port); in serial8250_register_8250_port()
1000 uart->port.iobase = up->port.iobase; in serial8250_register_8250_port()
1001 uart->port.membase = up->port.membase; in serial8250_register_8250_port()
1002 uart->port.irq = up->port.irq; in serial8250_register_8250_port()
1003 uart->port.irqflags = up->port.irqflags; in serial8250_register_8250_port()
1004 uart->port.uartclk = up->port.uartclk; in serial8250_register_8250_port()
1005 uart->port.fifosize = up->port.fifosize; in serial8250_register_8250_port()
1006 uart->port.regshift = up->port.regshift; in serial8250_register_8250_port()
1007 uart->port.iotype = up->port.iotype; in serial8250_register_8250_port()
1008 uart->port.flags = up->port.flags | UPF_BOOT_AUTOCONF; in serial8250_register_8250_port()
1009 uart->bugs = up->bugs; in serial8250_register_8250_port()
1010 uart->port.mapbase = up->port.mapbase; in serial8250_register_8250_port()
1011 uart->port.mapsize = up->port.mapsize; in serial8250_register_8250_port()
1012 uart->port.private_data = up->port.private_data; in serial8250_register_8250_port()
1013 uart->tx_loadsz = up->tx_loadsz; in serial8250_register_8250_port()
1014 uart->capabilities = up->capabilities; in serial8250_register_8250_port()
1015 uart->port.throttle = up->port.throttle; in serial8250_register_8250_port()
1016 uart->port.unthrottle = up->port.unthrottle; in serial8250_register_8250_port()
1017 uart->port.rs485_config = up->port.rs485_config; in serial8250_register_8250_port()
1018 uart->port.rs485 = up->port.rs485; in serial8250_register_8250_port()
1019 uart->rs485_start_tx = up->rs485_start_tx; in serial8250_register_8250_port()
1020 uart->rs485_stop_tx = up->rs485_stop_tx; in serial8250_register_8250_port()
1021 uart->dma = up->dma; in serial8250_register_8250_port()
1027 if (up->port.dev) { in serial8250_register_8250_port()
1028 uart->port.dev = up->port.dev; in serial8250_register_8250_port()
1034 if (up->port.flags & UPF_FIXED_TYPE) in serial8250_register_8250_port()
1035 uart->port.type = up->port.type; in serial8250_register_8250_port()
1054 if (up->port.serial_in) in serial8250_register_8250_port()
1055 uart->port.serial_in = up->port.serial_in; in serial8250_register_8250_port()
1056 if (up->port.serial_out) in serial8250_register_8250_port()
1057 uart->port.serial_out = up->port.serial_out; in serial8250_register_8250_port()
1058 if (up->port.handle_irq) in serial8250_register_8250_port()
1059 uart->port.handle_irq = up->port.handle_irq; in serial8250_register_8250_port()
1061 if (up->port.set_termios) in serial8250_register_8250_port()
1062 uart->port.set_termios = up->port.set_termios; in serial8250_register_8250_port()
1063 if (up->port.set_ldisc) in serial8250_register_8250_port()
1064 uart->port.set_ldisc = up->port.set_ldisc; in serial8250_register_8250_port()
1065 if (up->port.get_mctrl) in serial8250_register_8250_port()
1066 uart->port.get_mctrl = up->port.get_mctrl; in serial8250_register_8250_port()
1067 if (up->port.set_mctrl) in serial8250_register_8250_port()
1068 uart->port.set_mctrl = up->port.set_mctrl; in serial8250_register_8250_port()
1069 if (up->port.get_divisor) in serial8250_register_8250_port()
1070 uart->port.get_divisor = up->port.get_divisor; in serial8250_register_8250_port()
1071 if (up->port.set_divisor) in serial8250_register_8250_port()
1072 uart->port.set_divisor = up->port.set_divisor; in serial8250_register_8250_port()
1073 if (up->port.startup) in serial8250_register_8250_port()
1074 uart->port.startup = up->port.startup; in serial8250_register_8250_port()
1075 if (up->port.shutdown) in serial8250_register_8250_port()
1076 uart->port.shutdown = up->port.shutdown; in serial8250_register_8250_port()
1077 if (up->port.pm) in serial8250_register_8250_port()
1078 uart->port.pm = up->port.pm; in serial8250_register_8250_port()
1079 if (up->port.handle_break) in serial8250_register_8250_port()
1080 uart->port.handle_break = up->port.handle_break; in serial8250_register_8250_port()
1081 if (up->dl_read) in serial8250_register_8250_port()
1082 uart->dl_read = up->dl_read; in serial8250_register_8250_port()
1083 if (up->dl_write) in serial8250_register_8250_port()
1084 uart->dl_write = up->dl_write; in serial8250_register_8250_port()
1109 if (up->overrun_backoff_time_ms > 0) { in serial8250_register_8250_port()
1111 up->overrun_backoff_time_ms; in serial8250_register_8250_port()