Lines Matching refs:sport
61 static inline int serial_in(struct pnx8xxx_port *sport, int offset) in serial_in() argument
63 return (__raw_readl(sport->port.membase + offset)); in serial_in()
66 static inline void serial_out(struct pnx8xxx_port *sport, int offset, int value) in serial_out() argument
68 __raw_writel(value, sport->port.membase + offset); in serial_out()
74 static void pnx8xxx_mctrl_check(struct pnx8xxx_port *sport) in pnx8xxx_mctrl_check() argument
78 status = sport->port.ops->get_mctrl(&sport->port); in pnx8xxx_mctrl_check()
79 changed = status ^ sport->old_status; in pnx8xxx_mctrl_check()
84 sport->old_status = status; in pnx8xxx_mctrl_check()
87 sport->port.icount.rng++; in pnx8xxx_mctrl_check()
89 sport->port.icount.dsr++; in pnx8xxx_mctrl_check()
91 uart_handle_dcd_change(&sport->port, status & TIOCM_CAR); in pnx8xxx_mctrl_check()
93 uart_handle_cts_change(&sport->port, status & TIOCM_CTS); in pnx8xxx_mctrl_check()
95 wake_up_interruptible(&sport->port.state->port.delta_msr_wait); in pnx8xxx_mctrl_check()
104 struct pnx8xxx_port *sport = from_timer(sport, t, timer); in pnx8xxx_timeout() local
107 if (sport->port.state) { in pnx8xxx_timeout()
108 spin_lock_irqsave(&sport->port.lock, flags); in pnx8xxx_timeout()
109 pnx8xxx_mctrl_check(sport); in pnx8xxx_timeout()
110 spin_unlock_irqrestore(&sport->port.lock, flags); in pnx8xxx_timeout()
112 mod_timer(&sport->timer, jiffies + MCTRL_TIMEOUT); in pnx8xxx_timeout()
121 struct pnx8xxx_port *sport = in pnx8xxx_stop_tx() local
126 ien = serial_in(sport, PNX8XXX_IEN); in pnx8xxx_stop_tx()
127 serial_out(sport, PNX8XXX_IEN, ien & ~PNX8XXX_UART_INT_ALLTX); in pnx8xxx_stop_tx()
130 serial_out(sport, PNX8XXX_ICLR, PNX8XXX_UART_INT_ALLTX); in pnx8xxx_stop_tx()
138 struct pnx8xxx_port *sport = in pnx8xxx_start_tx() local
143 serial_out(sport, PNX8XXX_ICLR, PNX8XXX_UART_INT_ALLTX); in pnx8xxx_start_tx()
146 ien = serial_in(sport, PNX8XXX_IEN); in pnx8xxx_start_tx()
147 serial_out(sport, PNX8XXX_IEN, ien | PNX8XXX_UART_INT_ALLTX); in pnx8xxx_start_tx()
155 struct pnx8xxx_port *sport = in pnx8xxx_stop_rx() local
160 ien = serial_in(sport, PNX8XXX_IEN); in pnx8xxx_stop_rx()
161 serial_out(sport, PNX8XXX_IEN, ien & ~PNX8XXX_UART_INT_ALLRX); in pnx8xxx_stop_rx()
164 serial_out(sport, PNX8XXX_ICLR, PNX8XXX_UART_INT_ALLRX); in pnx8xxx_stop_rx()
172 struct pnx8xxx_port *sport = in pnx8xxx_enable_ms() local
175 mod_timer(&sport->timer, jiffies); in pnx8xxx_enable_ms()
178 static void pnx8xxx_rx_chars(struct pnx8xxx_port *sport) in pnx8xxx_rx_chars() argument
182 status = FIFO_TO_SM(serial_in(sport, PNX8XXX_FIFO)) | in pnx8xxx_rx_chars()
183 ISTAT_TO_SM(serial_in(sport, PNX8XXX_ISTAT)); in pnx8xxx_rx_chars()
185 ch = serial_in(sport, PNX8XXX_FIFO) & 0xff; in pnx8xxx_rx_chars()
187 sport->port.icount.rx++; in pnx8xxx_rx_chars()
202 sport->port.icount.brk++; in pnx8xxx_rx_chars()
203 if (uart_handle_break(&sport->port)) in pnx8xxx_rx_chars()
206 sport->port.icount.parity++; in pnx8xxx_rx_chars()
208 sport->port.icount.frame++; in pnx8xxx_rx_chars()
210 sport->port.icount.overrun++; in pnx8xxx_rx_chars()
212 status &= sport->port.read_status_mask; in pnx8xxx_rx_chars()
219 sport->port.sysrq = 0; in pnx8xxx_rx_chars()
222 if (uart_handle_sysrq_char(&sport->port, ch)) in pnx8xxx_rx_chars()
225 uart_insert_char(&sport->port, status, in pnx8xxx_rx_chars()
229 serial_out(sport, PNX8XXX_LCR, serial_in(sport, PNX8XXX_LCR) | in pnx8xxx_rx_chars()
231 status = FIFO_TO_SM(serial_in(sport, PNX8XXX_FIFO)) | in pnx8xxx_rx_chars()
232 ISTAT_TO_SM(serial_in(sport, PNX8XXX_ISTAT)); in pnx8xxx_rx_chars()
235 spin_unlock(&sport->port.lock); in pnx8xxx_rx_chars()
236 tty_flip_buffer_push(&sport->port.state->port); in pnx8xxx_rx_chars()
237 spin_lock(&sport->port.lock); in pnx8xxx_rx_chars()
240 static void pnx8xxx_tx_chars(struct pnx8xxx_port *sport) in pnx8xxx_tx_chars() argument
242 struct circ_buf *xmit = &sport->port.state->xmit; in pnx8xxx_tx_chars()
244 if (sport->port.x_char) { in pnx8xxx_tx_chars()
245 serial_out(sport, PNX8XXX_FIFO, sport->port.x_char); in pnx8xxx_tx_chars()
246 sport->port.icount.tx++; in pnx8xxx_tx_chars()
247 sport->port.x_char = 0; in pnx8xxx_tx_chars()
255 pnx8xxx_mctrl_check(sport); in pnx8xxx_tx_chars()
257 if (uart_circ_empty(xmit) || uart_tx_stopped(&sport->port)) { in pnx8xxx_tx_chars()
258 pnx8xxx_stop_tx(&sport->port); in pnx8xxx_tx_chars()
265 while (((serial_in(sport, PNX8XXX_FIFO) & in pnx8xxx_tx_chars()
267 serial_out(sport, PNX8XXX_FIFO, xmit->buf[xmit->tail]); in pnx8xxx_tx_chars()
269 sport->port.icount.tx++; in pnx8xxx_tx_chars()
275 uart_write_wakeup(&sport->port); in pnx8xxx_tx_chars()
278 pnx8xxx_stop_tx(&sport->port); in pnx8xxx_tx_chars()
283 struct pnx8xxx_port *sport = dev_id; in pnx8xxx_int() local
286 spin_lock(&sport->port.lock); in pnx8xxx_int()
288 status = serial_in(sport, PNX8XXX_ISTAT) & serial_in(sport, PNX8XXX_IEN); in pnx8xxx_int()
292 pnx8xxx_rx_chars(sport); in pnx8xxx_int()
296 pnx8xxx_tx_chars(sport); in pnx8xxx_int()
299 serial_out(sport, PNX8XXX_ICLR, status); in pnx8xxx_int()
301 spin_unlock(&sport->port.lock); in pnx8xxx_int()
310 struct pnx8xxx_port *sport = in pnx8xxx_tx_empty() local
313 return serial_in(sport, PNX8XXX_FIFO) & PNX8XXX_UART_FIFO_TXFIFO_STA ? 0 : TIOCSER_TEMT; in pnx8xxx_tx_empty()
318 struct pnx8xxx_port *sport = in pnx8xxx_get_mctrl() local
325 msr = serial_in(sport, PNX8XXX_MCR); in pnx8xxx_get_mctrl()
336 struct pnx8xxx_port *sport = (struct pnx8xxx_port *)port; in pnx8xxx_set_mctrl()
346 struct pnx8xxx_port *sport = in pnx8xxx_break_ctl() local
351 spin_lock_irqsave(&sport->port.lock, flags); in pnx8xxx_break_ctl()
352 lcr = serial_in(sport, PNX8XXX_LCR); in pnx8xxx_break_ctl()
357 serial_out(sport, PNX8XXX_LCR, lcr); in pnx8xxx_break_ctl()
358 spin_unlock_irqrestore(&sport->port.lock, flags); in pnx8xxx_break_ctl()
363 struct pnx8xxx_port *sport = in pnx8xxx_startup() local
370 retval = request_irq(sport->port.irq, pnx8xxx_int, 0, in pnx8xxx_startup()
371 "pnx8xxx-uart", sport); in pnx8xxx_startup()
379 serial_out(sport, PNX8XXX_ICLR, PNX8XXX_UART_INT_ALLRX | in pnx8xxx_startup()
382 serial_out(sport, PNX8XXX_IEN, serial_in(sport, PNX8XXX_IEN) | in pnx8xxx_startup()
389 spin_lock_irq(&sport->port.lock); in pnx8xxx_startup()
390 pnx8xxx_enable_ms(&sport->port); in pnx8xxx_startup()
391 spin_unlock_irq(&sport->port.lock); in pnx8xxx_startup()
398 struct pnx8xxx_port *sport = in pnx8xxx_shutdown() local
405 del_timer_sync(&sport->timer); in pnx8xxx_shutdown()
410 serial_out(sport, PNX8XXX_IEN, 0); in pnx8xxx_shutdown()
415 lcr = serial_in(sport, PNX8XXX_LCR); in pnx8xxx_shutdown()
418 serial_out(sport, PNX8XXX_LCR, lcr); in pnx8xxx_shutdown()
423 serial_out(sport, PNX8XXX_ICLR, PNX8XXX_UART_INT_ALLRX | in pnx8xxx_shutdown()
429 free_irq(sport->port.irq, sport); in pnx8xxx_shutdown()
436 struct pnx8xxx_port *sport = in pnx8xxx_set_termios() local
471 spin_lock_irqsave(&sport->port.lock, flags); in pnx8xxx_set_termios()
473 sport->port.read_status_mask = ISTAT_TO_SM(PNX8XXX_UART_INT_RXOVRN) | in pnx8xxx_set_termios()
477 sport->port.read_status_mask |= in pnx8xxx_set_termios()
481 sport->port.read_status_mask |= in pnx8xxx_set_termios()
487 sport->port.ignore_status_mask = 0; in pnx8xxx_set_termios()
489 sport->port.ignore_status_mask |= in pnx8xxx_set_termios()
493 sport->port.ignore_status_mask |= in pnx8xxx_set_termios()
500 sport->port.ignore_status_mask |= in pnx8xxx_set_termios()
508 sport->port.ignore_status_mask |= in pnx8xxx_set_termios()
511 del_timer_sync(&sport->timer); in pnx8xxx_set_termios()
521 old_ien = serial_in(sport, PNX8XXX_IEN); in pnx8xxx_set_termios()
522 serial_out(sport, PNX8XXX_IEN, old_ien & ~(PNX8XXX_UART_INT_ALLTX | in pnx8xxx_set_termios()
525 while (serial_in(sport, PNX8XXX_FIFO) & PNX8XXX_UART_FIFO_TXFIFO_STA) in pnx8xxx_set_termios()
529 serial_out(sport, PNX8XXX_IEN, 0); in pnx8xxx_set_termios()
536 serial_out(sport, PNX8XXX_LCR, lcr_fcr); in pnx8xxx_set_termios()
540 serial_out(sport, PNX8XXX_BAUD, quot); in pnx8xxx_set_termios()
542 serial_out(sport, PNX8XXX_ICLR, -1); in pnx8xxx_set_termios()
544 serial_out(sport, PNX8XXX_IEN, old_ien); in pnx8xxx_set_termios()
546 if (UART_ENABLE_MS(&sport->port, termios->c_cflag)) in pnx8xxx_set_termios()
547 pnx8xxx_enable_ms(&sport->port); in pnx8xxx_set_termios()
549 spin_unlock_irqrestore(&sport->port.lock, flags); in pnx8xxx_set_termios()
554 struct pnx8xxx_port *sport = in pnx8xxx_type() local
557 return sport->port.type == PORT_PNX8XXX ? "PNX8XXX" : NULL; in pnx8xxx_type()
565 struct pnx8xxx_port *sport = in pnx8xxx_release_port() local
568 release_mem_region(sport->port.mapbase, UART_PORT_SIZE); in pnx8xxx_release_port()
576 struct pnx8xxx_port *sport = in pnx8xxx_request_port() local
578 return request_mem_region(sport->port.mapbase, UART_PORT_SIZE, in pnx8xxx_request_port()
587 struct pnx8xxx_port *sport = in pnx8xxx_config_port() local
591 pnx8xxx_request_port(&sport->port) == 0) in pnx8xxx_config_port()
592 sport->port.type = PORT_PNX8XXX; in pnx8xxx_config_port()
603 struct pnx8xxx_port *sport = in pnx8xxx_verify_port() local
609 if (sport->port.irq != ser->irq) in pnx8xxx_verify_port()
613 if (sport->port.uartclk / 16 != ser->baud_base) in pnx8xxx_verify_port()
615 if ((void *)sport->port.mapbase != ser->iomem_base) in pnx8xxx_verify_port()
617 if (sport->port.iobase != ser->port) in pnx8xxx_verify_port()
668 struct pnx8xxx_port *sport = in pnx8xxx_console_putchar() local
674 status = serial_in(sport, PNX8XXX_FIFO); in pnx8xxx_console_putchar()
676 serial_out(sport, PNX8XXX_FIFO, ch); in pnx8xxx_console_putchar()
684 struct pnx8xxx_port *sport = &pnx8xxx_ports[co->index]; in pnx8xxx_console_write() local
690 old_ien = serial_in(sport, PNX8XXX_IEN); in pnx8xxx_console_write()
691 serial_out(sport, PNX8XXX_IEN, old_ien & ~(PNX8XXX_UART_INT_ALLTX | in pnx8xxx_console_write()
694 uart_console_write(&sport->port, s, count, pnx8xxx_console_putchar); in pnx8xxx_console_write()
702 status = serial_in(sport, PNX8XXX_FIFO); in pnx8xxx_console_write()
706 serial_out(sport, PNX8XXX_ICLR, PNX8XXX_UART_INT_TX | in pnx8xxx_console_write()
709 serial_out(sport, PNX8XXX_IEN, old_ien); in pnx8xxx_console_write()
715 struct pnx8xxx_port *sport; in pnx8xxx_console_setup() local
728 sport = &pnx8xxx_ports[co->index]; in pnx8xxx_console_setup()
733 return uart_set_options(&sport->port, co, baud, parity, bits, flow); in pnx8xxx_console_setup()
772 struct pnx8xxx_port *sport = platform_get_drvdata(pdev); in pnx8xxx_serial_suspend() local
774 return uart_suspend_port(&pnx8xxx_reg, &sport->port); in pnx8xxx_serial_suspend()
779 struct pnx8xxx_port *sport = platform_get_drvdata(pdev); in pnx8xxx_serial_resume() local
781 return uart_resume_port(&pnx8xxx_reg, &sport->port); in pnx8xxx_serial_resume()
810 struct pnx8xxx_port *sport = platform_get_drvdata(pdev); in pnx8xxx_serial_remove() local
812 if (sport) in pnx8xxx_serial_remove()
813 uart_remove_one_port(&pnx8xxx_reg, &sport->port); in pnx8xxx_serial_remove()