• Home
  • Raw
  • Download

Lines Matching full:up

170 static inline unsigned int sio_in(struct uart_txx9_port *up, int offset)  in sio_in()  argument
172 switch (up->port.iotype) { in sio_in()
174 return __raw_readl(up->port.membase + offset); in sio_in()
176 return inl(up->port.iobase + offset); in sio_in()
181 sio_out(struct uart_txx9_port *up, int offset, int value) in sio_out() argument
183 switch (up->port.iotype) { in sio_out()
185 __raw_writel(value, up->port.membase + offset); in sio_out()
188 outl(value, up->port.iobase + offset); in sio_out()
194 sio_mask(struct uart_txx9_port *up, int offset, unsigned int value) in sio_mask() argument
196 sio_out(up, offset, sio_in(up, offset) & ~value); in sio_mask()
199 sio_set(struct uart_txx9_port *up, int offset, unsigned int value) in sio_set() argument
201 sio_out(up, offset, sio_in(up, offset) | value); in sio_set()
205 sio_quot_set(struct uart_txx9_port *up, int quot) in sio_quot_set() argument
209 sio_out(up, TXX9_SIBGR, quot | TXX9_SIBGR_BCLK_T0); in sio_quot_set()
211 sio_out(up, TXX9_SIBGR, (quot >> 2) | TXX9_SIBGR_BCLK_T2); in sio_quot_set()
213 sio_out(up, TXX9_SIBGR, (quot >> 4) | TXX9_SIBGR_BCLK_T4); in sio_quot_set()
215 sio_out(up, TXX9_SIBGR, (quot >> 6) | TXX9_SIBGR_BCLK_T6); in sio_quot_set()
217 sio_out(up, TXX9_SIBGR, 0xff | TXX9_SIBGR_BCLK_T6); in sio_quot_set()
227 struct uart_txx9_port *up = to_uart_txx9_port(port); in serial_txx9_stop_tx() local
228 sio_mask(up, TXX9_SIDICR, TXX9_SIDICR_TIE); in serial_txx9_stop_tx()
233 struct uart_txx9_port *up = to_uart_txx9_port(port); in serial_txx9_start_tx() local
234 sio_set(up, TXX9_SIDICR, TXX9_SIDICR_TIE); in serial_txx9_start_tx()
239 struct uart_txx9_port *up = to_uart_txx9_port(port); in serial_txx9_stop_rx() local
240 up->port.read_status_mask &= ~TXX9_SIDISR_RDIS; in serial_txx9_stop_rx()
245 struct uart_txx9_port *up = to_uart_txx9_port(port); in serial_txx9_initialize() local
248 sio_out(up, TXX9_SIFCR, TXX9_SIFCR_SWRST); in serial_txx9_initialize()
253 while ((sio_in(up, TXX9_SIFCR) & TXX9_SIFCR_SWRST) && --tmout) in serial_txx9_initialize()
256 sio_set(up, TXX9_SIFCR, in serial_txx9_initialize()
259 sio_out(up, TXX9_SILCR, in serial_txx9_initialize()
261 ((up->port.flags & UPF_TXX9_USE_SCLK) ? in serial_txx9_initialize()
263 sio_quot_set(up, uart_get_divisor(port, 9600)); in serial_txx9_initialize()
264 sio_out(up, TXX9_SIFLCR, TXX9_SIFLCR_RTSTL_MAX /* 15 */); in serial_txx9_initialize()
265 sio_out(up, TXX9_SIDICR, 0); in serial_txx9_initialize()
269 receive_chars(struct uart_txx9_port *up, unsigned int *status) in receive_chars() argument
278 ch = sio_in(up, TXX9_SIRFIFO); in receive_chars()
280 up->port.icount.rx++; in receive_chars()
284 up->port.ignore_status_mask & ~TXX9_SIDISR_RFDN_MASK; in receive_chars()
292 up->port.icount.brk++; in receive_chars()
299 if (uart_handle_break(&up->port)) in receive_chars()
302 up->port.icount.parity++; in receive_chars()
304 up->port.icount.frame++; in receive_chars()
306 up->port.icount.overrun++; in receive_chars()
320 disr &= up->port.read_status_mask; in receive_chars()
329 if (uart_handle_sysrq_char(&up->port, ch)) in receive_chars()
332 uart_insert_char(&up->port, disr, TXX9_SIDISR_UOER, ch, flag); in receive_chars()
335 up->port.ignore_status_mask = next_ignore_status_mask; in receive_chars()
336 disr = sio_in(up, TXX9_SIDISR); in receive_chars()
338 spin_unlock(&up->port.lock); in receive_chars()
339 tty_flip_buffer_push(&up->port.state->port); in receive_chars()
340 spin_lock(&up->port.lock); in receive_chars()
344 static inline void transmit_chars(struct uart_txx9_port *up) in transmit_chars() argument
346 struct circ_buf *xmit = &up->port.state->xmit; in transmit_chars()
349 if (up->port.x_char) { in transmit_chars()
350 sio_out(up, TXX9_SITFIFO, up->port.x_char); in transmit_chars()
351 up->port.icount.tx++; in transmit_chars()
352 up->port.x_char = 0; in transmit_chars()
355 if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) { in transmit_chars()
356 serial_txx9_stop_tx(&up->port); in transmit_chars()
362 sio_out(up, TXX9_SITFIFO, xmit->buf[xmit->tail]); in transmit_chars()
364 up->port.icount.tx++; in transmit_chars()
370 uart_write_wakeup(&up->port); in transmit_chars()
373 serial_txx9_stop_tx(&up->port); in transmit_chars()
379 struct uart_txx9_port *up = dev_id; in serial_txx9_interrupt() local
383 spin_lock(&up->port.lock); in serial_txx9_interrupt()
384 status = sio_in(up, TXX9_SIDISR); in serial_txx9_interrupt()
385 if (!(sio_in(up, TXX9_SIDICR) & TXX9_SIDICR_TIE)) in serial_txx9_interrupt()
389 spin_unlock(&up->port.lock); in serial_txx9_interrupt()
394 receive_chars(up, &status); in serial_txx9_interrupt()
396 transmit_chars(up); in serial_txx9_interrupt()
398 sio_mask(up, TXX9_SIDISR, in serial_txx9_interrupt()
401 spin_unlock(&up->port.lock); in serial_txx9_interrupt()
412 struct uart_txx9_port *up = to_uart_txx9_port(port); in serial_txx9_tx_empty() local
416 spin_lock_irqsave(&up->port.lock, flags); in serial_txx9_tx_empty()
417 ret = (sio_in(up, TXX9_SICISR) & TXX9_SICISR_TXALS) ? TIOCSER_TEMT : 0; in serial_txx9_tx_empty()
418 spin_unlock_irqrestore(&up->port.lock, flags); in serial_txx9_tx_empty()
425 struct uart_txx9_port *up = to_uart_txx9_port(port); in serial_txx9_get_mctrl() local
430 ret |= (sio_in(up, TXX9_SIFLCR) & TXX9_SIFLCR_RTSSC) ? 0 : TIOCM_RTS; in serial_txx9_get_mctrl()
431 ret |= (sio_in(up, TXX9_SICISR) & TXX9_SICISR_CTSS) ? 0 : TIOCM_CTS; in serial_txx9_get_mctrl()
438 struct uart_txx9_port *up = to_uart_txx9_port(port); in serial_txx9_set_mctrl() local
441 sio_mask(up, TXX9_SIFLCR, TXX9_SIFLCR_RTSSC); in serial_txx9_set_mctrl()
443 sio_set(up, TXX9_SIFLCR, TXX9_SIFLCR_RTSSC); in serial_txx9_set_mctrl()
448 struct uart_txx9_port *up = to_uart_txx9_port(port); in serial_txx9_break_ctl() local
451 spin_lock_irqsave(&up->port.lock, flags); in serial_txx9_break_ctl()
453 sio_set(up, TXX9_SIFLCR, TXX9_SIFLCR_TBRK); in serial_txx9_break_ctl()
455 sio_mask(up, TXX9_SIFLCR, TXX9_SIFLCR_TBRK); in serial_txx9_break_ctl()
456 spin_unlock_irqrestore(&up->port.lock, flags); in serial_txx9_break_ctl()
463 static void wait_for_xmitr(struct uart_txx9_port *up) in wait_for_xmitr() argument
467 /* Wait up to 10ms for the character(s) to be sent. */ in wait_for_xmitr()
469 !(sio_in(up, TXX9_SICISR) & TXX9_SICISR_TXALS)) in wait_for_xmitr()
472 /* Wait up to 1s for flow control if necessary */ in wait_for_xmitr()
473 if (up->port.flags & UPF_CONS_FLOW) { in wait_for_xmitr()
476 (sio_in(up, TXX9_SICISR) & TXX9_SICISR_CTSS)) in wait_for_xmitr()
492 struct uart_txx9_port *up = to_uart_txx9_port(port); in serial_txx9_get_poll_char() local
497 ier = sio_in(up, TXX9_SIDICR); in serial_txx9_get_poll_char()
498 sio_out(up, TXX9_SIDICR, 0); in serial_txx9_get_poll_char()
500 while (sio_in(up, TXX9_SIDISR) & TXX9_SIDISR_UVALID) in serial_txx9_get_poll_char()
503 c = sio_in(up, TXX9_SIRFIFO); in serial_txx9_get_poll_char()
509 sio_mask(up, TXX9_SIDISR, TXX9_SIDISR_RDIS); in serial_txx9_get_poll_char()
510 sio_out(up, TXX9_SIDICR, ier); in serial_txx9_get_poll_char()
518 struct uart_txx9_port *up = to_uart_txx9_port(port); in serial_txx9_put_poll_char() local
523 ier = sio_in(up, TXX9_SIDICR); in serial_txx9_put_poll_char()
524 sio_out(up, TXX9_SIDICR, 0); in serial_txx9_put_poll_char()
526 wait_for_xmitr(up); in serial_txx9_put_poll_char()
530 sio_out(up, TXX9_SITFIFO, c); in serial_txx9_put_poll_char()
536 wait_for_xmitr(up); in serial_txx9_put_poll_char()
537 sio_out(up, TXX9_SIDICR, ier); in serial_txx9_put_poll_char()
544 struct uart_txx9_port *up = to_uart_txx9_port(port); in serial_txx9_startup() local
552 sio_set(up, TXX9_SIFCR, in serial_txx9_startup()
555 sio_mask(up, TXX9_SIFCR, in serial_txx9_startup()
557 sio_out(up, TXX9_SIDICR, 0); in serial_txx9_startup()
562 sio_out(up, TXX9_SIDISR, 0); in serial_txx9_startup()
564 retval = request_irq(up->port.irq, serial_txx9_interrupt, in serial_txx9_startup()
565 IRQF_SHARED, "serial_txx9", up); in serial_txx9_startup()
572 spin_lock_irqsave(&up->port.lock, flags); in serial_txx9_startup()
573 serial_txx9_set_mctrl(&up->port, up->port.mctrl); in serial_txx9_startup()
574 spin_unlock_irqrestore(&up->port.lock, flags); in serial_txx9_startup()
577 sio_mask(up, TXX9_SIFLCR, TXX9_SIFLCR_RSDE | TXX9_SIFLCR_TSDE); in serial_txx9_startup()
582 sio_set(up, TXX9_SIDICR, TXX9_SIDICR_RIE); in serial_txx9_startup()
589 struct uart_txx9_port *up = to_uart_txx9_port(port); in serial_txx9_shutdown() local
595 sio_out(up, TXX9_SIDICR, 0); /* disable all intrs */ in serial_txx9_shutdown()
597 spin_lock_irqsave(&up->port.lock, flags); in serial_txx9_shutdown()
598 serial_txx9_set_mctrl(&up->port, up->port.mctrl); in serial_txx9_shutdown()
599 spin_unlock_irqrestore(&up->port.lock, flags); in serial_txx9_shutdown()
604 sio_mask(up, TXX9_SIFLCR, TXX9_SIFLCR_TBRK); in serial_txx9_shutdown()
607 if (up->port.cons && up->port.line == up->port.cons->index) { in serial_txx9_shutdown()
608 free_irq(up->port.irq, up); in serial_txx9_shutdown()
613 sio_set(up, TXX9_SIFCR, in serial_txx9_shutdown()
616 sio_mask(up, TXX9_SIFCR, in serial_txx9_shutdown()
620 sio_set(up, TXX9_SIFLCR, TXX9_SIFLCR_RSDE | TXX9_SIFLCR_TSDE); in serial_txx9_shutdown()
622 free_irq(up->port.irq, up); in serial_txx9_shutdown()
629 struct uart_txx9_port *up = to_uart_txx9_port(port); in serial_txx9_set_termios() local
640 cval = sio_in(up, TXX9_SILCR); in serial_txx9_set_termios()
672 /* Set up FIFOs */ in serial_txx9_set_termios()
680 spin_lock_irqsave(&up->port.lock, flags); in serial_txx9_set_termios()
687 up->port.read_status_mask = TXX9_SIDISR_UOER | in serial_txx9_set_termios()
690 up->port.read_status_mask |= TXX9_SIDISR_UFER | TXX9_SIDISR_UPER; in serial_txx9_set_termios()
692 up->port.read_status_mask |= TXX9_SIDISR_UBRK; in serial_txx9_set_termios()
697 up->port.ignore_status_mask = 0; in serial_txx9_set_termios()
699 up->port.ignore_status_mask |= TXX9_SIDISR_UPER | TXX9_SIDISR_UFER; in serial_txx9_set_termios()
701 up->port.ignore_status_mask |= TXX9_SIDISR_UBRK; in serial_txx9_set_termios()
707 up->port.ignore_status_mask |= TXX9_SIDISR_UOER; in serial_txx9_set_termios()
714 up->port.ignore_status_mask |= TXX9_SIDISR_RDIS; in serial_txx9_set_termios()
718 (up->port.flags & UPF_TXX9_HAVE_CTS_LINE)) { in serial_txx9_set_termios()
719 sio_set(up, TXX9_SIFLCR, in serial_txx9_set_termios()
722 sio_mask(up, TXX9_SIFLCR, in serial_txx9_set_termios()
726 sio_out(up, TXX9_SILCR, cval); in serial_txx9_set_termios()
727 sio_quot_set(up, quot); in serial_txx9_set_termios()
728 sio_out(up, TXX9_SIFCR, fcr); in serial_txx9_set_termios()
730 serial_txx9_set_mctrl(&up->port, up->port.mctrl); in serial_txx9_set_termios()
731 spin_unlock_irqrestore(&up->port.lock, flags); in serial_txx9_set_termios()
750 static int serial_txx9_request_resource(struct uart_txx9_port *up) in serial_txx9_request_resource() argument
755 switch (up->port.iotype) { in serial_txx9_request_resource()
757 if (!up->port.mapbase) in serial_txx9_request_resource()
760 if (!request_mem_region(up->port.mapbase, size, "serial_txx9")) { in serial_txx9_request_resource()
765 if (up->port.flags & UPF_IOREMAP) { in serial_txx9_request_resource()
766 up->port.membase = ioremap(up->port.mapbase, size); in serial_txx9_request_resource()
767 if (!up->port.membase) { in serial_txx9_request_resource()
768 release_mem_region(up->port.mapbase, size); in serial_txx9_request_resource()
775 if (!request_region(up->port.iobase, size, "serial_txx9")) in serial_txx9_request_resource()
782 static void serial_txx9_release_resource(struct uart_txx9_port *up) in serial_txx9_release_resource() argument
786 switch (up->port.iotype) { in serial_txx9_release_resource()
788 if (!up->port.mapbase) in serial_txx9_release_resource()
791 if (up->port.flags & UPF_IOREMAP) { in serial_txx9_release_resource()
792 iounmap(up->port.membase); in serial_txx9_release_resource()
793 up->port.membase = NULL; in serial_txx9_release_resource()
796 release_mem_region(up->port.mapbase, size); in serial_txx9_release_resource()
800 release_region(up->port.iobase, size); in serial_txx9_release_resource()
807 struct uart_txx9_port *up = to_uart_txx9_port(port); in serial_txx9_release_port() local
808 serial_txx9_release_resource(up); in serial_txx9_release_port()
813 struct uart_txx9_port *up = to_uart_txx9_port(port); in serial_txx9_request_port() local
814 return serial_txx9_request_resource(up); in serial_txx9_request_port()
819 struct uart_txx9_port *up = to_uart_txx9_port(port); in serial_txx9_config_port() local
826 ret = serial_txx9_request_resource(up); in serial_txx9_config_port()
830 up->port.fifosize = TXX9_SIO_TX_FIFO; in serial_txx9_config_port()
833 if (up->port.line == up->port.cons->index) in serial_txx9_config_port()
875 struct uart_txx9_port *up = &serial_txx9_ports[i]; in serial_txx9_register_ports() local
877 up->port.line = i; in serial_txx9_register_ports()
878 up->port.ops = &serial_txx9_pops; in serial_txx9_register_ports()
879 up->port.dev = dev; in serial_txx9_register_ports()
880 if (up->port.iobase || up->port.mapbase) in serial_txx9_register_ports()
881 uart_add_one_port(drv, &up->port); in serial_txx9_register_ports()
889 struct uart_txx9_port *up = to_uart_txx9_port(port); in serial_txx9_console_putchar() local
891 wait_for_xmitr(up); in serial_txx9_console_putchar()
892 sio_out(up, TXX9_SITFIFO, ch); in serial_txx9_console_putchar()
904 struct uart_txx9_port *up = &serial_txx9_ports[co->index]; in serial_txx9_console_write() local
910 ier = sio_in(up, TXX9_SIDICR); in serial_txx9_console_write()
911 sio_out(up, TXX9_SIDICR, 0); in serial_txx9_console_write()
915 flcr = sio_in(up, TXX9_SIFLCR); in serial_txx9_console_write()
916 if (!(up->port.flags & UPF_CONS_FLOW) && (flcr & TXX9_SIFLCR_TES)) in serial_txx9_console_write()
917 sio_out(up, TXX9_SIFLCR, flcr & ~TXX9_SIFLCR_TES); in serial_txx9_console_write()
919 uart_console_write(&up->port, s, count, serial_txx9_console_putchar); in serial_txx9_console_write()
925 wait_for_xmitr(up); in serial_txx9_console_write()
926 sio_out(up, TXX9_SIFLCR, flcr); in serial_txx9_console_write()
927 sio_out(up, TXX9_SIDICR, ier); in serial_txx9_console_write()
933 struct uart_txx9_port *up; in serial_txx9_console_setup() local
946 up = &serial_txx9_ports[co->index]; in serial_txx9_console_setup()
947 port = &up->port; in serial_txx9_console_setup()
951 serial_txx9_initialize(&up->port); in serial_txx9_console_setup()
1118 struct uart_txx9_port *up = &serial_txx9_ports[i]; in serial_txx9_remove() local
1120 if (up->port.dev == &dev->dev) in serial_txx9_remove()
1132 struct uart_txx9_port *up = &serial_txx9_ports[i]; in serial_txx9_suspend() local
1134 if (up->port.type != PORT_UNKNOWN && up->port.dev == &dev->dev) in serial_txx9_suspend()
1135 uart_suspend_port(&serial_txx9_reg, &up->port); in serial_txx9_suspend()
1146 struct uart_txx9_port *up = &serial_txx9_ports[i]; in serial_txx9_resume() local
1148 if (up->port.type != PORT_UNKNOWN && up->port.dev == &dev->dev) in serial_txx9_resume()
1149 uart_resume_port(&serial_txx9_reg, &up->port); in serial_txx9_resume()
1205 struct uart_txx9_port *up = pci_get_drvdata(dev); in pciserial_txx9_remove_one() local
1207 if (up) { in pciserial_txx9_remove_one()
1208 serial_txx9_unregister_port(up->port.line); in pciserial_txx9_remove_one()
1216 struct uart_txx9_port *up = pci_get_drvdata(dev); in pciserial_txx9_suspend_one() local
1218 if (up) in pciserial_txx9_suspend_one()
1219 uart_suspend_port(&serial_txx9_reg, &up->port); in pciserial_txx9_suspend_one()
1227 struct uart_txx9_port *up = pci_get_drvdata(dev); in pciserial_txx9_resume_one() local
1231 if (up) in pciserial_txx9_resume_one()
1232 uart_resume_port(&serial_txx9_reg, &up->port); in pciserial_txx9_resume_one()
1311 struct uart_txx9_port *up = &serial_txx9_ports[i]; in serial_txx9_exit() local
1312 if (up->port.iobase || up->port.mapbase) in serial_txx9_exit()
1313 uart_remove_one_port(&serial_txx9_reg, &up->port); in serial_txx9_exit()