Lines Matching refs:sport

69 static inline int serial_in(struct pnx8xxx_port *sport, int offset)  in serial_in()  argument
71 return (__raw_readl(sport->port.membase + offset)); in serial_in()
74 static inline void serial_out(struct pnx8xxx_port *sport, int offset, int value) in serial_out() argument
76 __raw_writel(value, sport->port.membase + offset); in serial_out()
82 static void pnx8xxx_mctrl_check(struct pnx8xxx_port *sport) in pnx8xxx_mctrl_check() argument
86 status = sport->port.ops->get_mctrl(&sport->port); in pnx8xxx_mctrl_check()
87 changed = status ^ sport->old_status; in pnx8xxx_mctrl_check()
92 sport->old_status = status; in pnx8xxx_mctrl_check()
95 sport->port.icount.rng++; in pnx8xxx_mctrl_check()
97 sport->port.icount.dsr++; in pnx8xxx_mctrl_check()
99 uart_handle_dcd_change(&sport->port, status & TIOCM_CAR); in pnx8xxx_mctrl_check()
101 uart_handle_cts_change(&sport->port, status & TIOCM_CTS); in pnx8xxx_mctrl_check()
103 wake_up_interruptible(&sport->port.state->port.delta_msr_wait); in pnx8xxx_mctrl_check()
112 struct pnx8xxx_port *sport = (struct pnx8xxx_port *)data; in pnx8xxx_timeout() local
115 if (sport->port.state) { in pnx8xxx_timeout()
116 spin_lock_irqsave(&sport->port.lock, flags); in pnx8xxx_timeout()
117 pnx8xxx_mctrl_check(sport); in pnx8xxx_timeout()
118 spin_unlock_irqrestore(&sport->port.lock, flags); in pnx8xxx_timeout()
120 mod_timer(&sport->timer, jiffies + MCTRL_TIMEOUT); in pnx8xxx_timeout()
129 struct pnx8xxx_port *sport = in pnx8xxx_stop_tx() local
134 ien = serial_in(sport, PNX8XXX_IEN); in pnx8xxx_stop_tx()
135 serial_out(sport, PNX8XXX_IEN, ien & ~PNX8XXX_UART_INT_ALLTX); in pnx8xxx_stop_tx()
138 serial_out(sport, PNX8XXX_ICLR, PNX8XXX_UART_INT_ALLTX); in pnx8xxx_stop_tx()
146 struct pnx8xxx_port *sport = in pnx8xxx_start_tx() local
151 serial_out(sport, PNX8XXX_ICLR, PNX8XXX_UART_INT_ALLTX); in pnx8xxx_start_tx()
154 ien = serial_in(sport, PNX8XXX_IEN); in pnx8xxx_start_tx()
155 serial_out(sport, PNX8XXX_IEN, ien | PNX8XXX_UART_INT_ALLTX); in pnx8xxx_start_tx()
163 struct pnx8xxx_port *sport = in pnx8xxx_stop_rx() local
168 ien = serial_in(sport, PNX8XXX_IEN); in pnx8xxx_stop_rx()
169 serial_out(sport, PNX8XXX_IEN, ien & ~PNX8XXX_UART_INT_ALLRX); in pnx8xxx_stop_rx()
172 serial_out(sport, PNX8XXX_ICLR, PNX8XXX_UART_INT_ALLRX); in pnx8xxx_stop_rx()
180 struct pnx8xxx_port *sport = in pnx8xxx_enable_ms() local
183 mod_timer(&sport->timer, jiffies); in pnx8xxx_enable_ms()
186 static void pnx8xxx_rx_chars(struct pnx8xxx_port *sport) in pnx8xxx_rx_chars() argument
190 status = FIFO_TO_SM(serial_in(sport, PNX8XXX_FIFO)) | in pnx8xxx_rx_chars()
191 ISTAT_TO_SM(serial_in(sport, PNX8XXX_ISTAT)); in pnx8xxx_rx_chars()
193 ch = serial_in(sport, PNX8XXX_FIFO) & 0xff; in pnx8xxx_rx_chars()
195 sport->port.icount.rx++; in pnx8xxx_rx_chars()
210 sport->port.icount.brk++; in pnx8xxx_rx_chars()
211 if (uart_handle_break(&sport->port)) in pnx8xxx_rx_chars()
214 sport->port.icount.parity++; in pnx8xxx_rx_chars()
216 sport->port.icount.frame++; in pnx8xxx_rx_chars()
218 sport->port.icount.overrun++; in pnx8xxx_rx_chars()
220 status &= sport->port.read_status_mask; in pnx8xxx_rx_chars()
228 sport->port.sysrq = 0; in pnx8xxx_rx_chars()
232 if (uart_handle_sysrq_char(&sport->port, ch)) in pnx8xxx_rx_chars()
235 uart_insert_char(&sport->port, status, in pnx8xxx_rx_chars()
239 serial_out(sport, PNX8XXX_LCR, serial_in(sport, PNX8XXX_LCR) | in pnx8xxx_rx_chars()
241 status = FIFO_TO_SM(serial_in(sport, PNX8XXX_FIFO)) | in pnx8xxx_rx_chars()
242 ISTAT_TO_SM(serial_in(sport, PNX8XXX_ISTAT)); in pnx8xxx_rx_chars()
245 spin_unlock(&sport->port.lock); in pnx8xxx_rx_chars()
246 tty_flip_buffer_push(&sport->port.state->port); in pnx8xxx_rx_chars()
247 spin_lock(&sport->port.lock); in pnx8xxx_rx_chars()
250 static void pnx8xxx_tx_chars(struct pnx8xxx_port *sport) in pnx8xxx_tx_chars() argument
252 struct circ_buf *xmit = &sport->port.state->xmit; in pnx8xxx_tx_chars()
254 if (sport->port.x_char) { in pnx8xxx_tx_chars()
255 serial_out(sport, PNX8XXX_FIFO, sport->port.x_char); in pnx8xxx_tx_chars()
256 sport->port.icount.tx++; in pnx8xxx_tx_chars()
257 sport->port.x_char = 0; in pnx8xxx_tx_chars()
265 pnx8xxx_mctrl_check(sport); in pnx8xxx_tx_chars()
267 if (uart_circ_empty(xmit) || uart_tx_stopped(&sport->port)) { in pnx8xxx_tx_chars()
268 pnx8xxx_stop_tx(&sport->port); in pnx8xxx_tx_chars()
275 while (((serial_in(sport, PNX8XXX_FIFO) & in pnx8xxx_tx_chars()
277 serial_out(sport, PNX8XXX_FIFO, xmit->buf[xmit->tail]); in pnx8xxx_tx_chars()
279 sport->port.icount.tx++; in pnx8xxx_tx_chars()
285 uart_write_wakeup(&sport->port); in pnx8xxx_tx_chars()
288 pnx8xxx_stop_tx(&sport->port); in pnx8xxx_tx_chars()
293 struct pnx8xxx_port *sport = dev_id; in pnx8xxx_int() local
296 spin_lock(&sport->port.lock); in pnx8xxx_int()
298 status = serial_in(sport, PNX8XXX_ISTAT) & serial_in(sport, PNX8XXX_IEN); in pnx8xxx_int()
302 pnx8xxx_rx_chars(sport); in pnx8xxx_int()
306 pnx8xxx_tx_chars(sport); in pnx8xxx_int()
309 serial_out(sport, PNX8XXX_ICLR, status); in pnx8xxx_int()
311 spin_unlock(&sport->port.lock); in pnx8xxx_int()
320 struct pnx8xxx_port *sport = in pnx8xxx_tx_empty() local
323 return serial_in(sport, PNX8XXX_FIFO) & PNX8XXX_UART_FIFO_TXFIFO_STA ? 0 : TIOCSER_TEMT; in pnx8xxx_tx_empty()
328 struct pnx8xxx_port *sport = in pnx8xxx_get_mctrl() local
335 msr = serial_in(sport, PNX8XXX_MCR); in pnx8xxx_get_mctrl()
346 struct pnx8xxx_port *sport = (struct pnx8xxx_port *)port; in pnx8xxx_set_mctrl()
356 struct pnx8xxx_port *sport = in pnx8xxx_break_ctl() local
361 spin_lock_irqsave(&sport->port.lock, flags); in pnx8xxx_break_ctl()
362 lcr = serial_in(sport, PNX8XXX_LCR); in pnx8xxx_break_ctl()
367 serial_out(sport, PNX8XXX_LCR, lcr); in pnx8xxx_break_ctl()
368 spin_unlock_irqrestore(&sport->port.lock, flags); in pnx8xxx_break_ctl()
373 struct pnx8xxx_port *sport = in pnx8xxx_startup() local
380 retval = request_irq(sport->port.irq, pnx8xxx_int, 0, in pnx8xxx_startup()
381 "pnx8xxx-uart", sport); in pnx8xxx_startup()
389 serial_out(sport, PNX8XXX_ICLR, PNX8XXX_UART_INT_ALLRX | in pnx8xxx_startup()
392 serial_out(sport, PNX8XXX_IEN, serial_in(sport, PNX8XXX_IEN) | in pnx8xxx_startup()
399 spin_lock_irq(&sport->port.lock); in pnx8xxx_startup()
400 pnx8xxx_enable_ms(&sport->port); in pnx8xxx_startup()
401 spin_unlock_irq(&sport->port.lock); in pnx8xxx_startup()
408 struct pnx8xxx_port *sport = in pnx8xxx_shutdown() local
415 del_timer_sync(&sport->timer); in pnx8xxx_shutdown()
420 serial_out(sport, PNX8XXX_IEN, 0); in pnx8xxx_shutdown()
425 lcr = serial_in(sport, PNX8XXX_LCR); in pnx8xxx_shutdown()
428 serial_out(sport, PNX8XXX_LCR, lcr); in pnx8xxx_shutdown()
433 serial_out(sport, PNX8XXX_ICLR, PNX8XXX_UART_INT_ALLRX | in pnx8xxx_shutdown()
439 free_irq(sport->port.irq, sport); in pnx8xxx_shutdown()
446 struct pnx8xxx_port *sport = in pnx8xxx_set_termios() local
481 spin_lock_irqsave(&sport->port.lock, flags); in pnx8xxx_set_termios()
483 sport->port.read_status_mask = ISTAT_TO_SM(PNX8XXX_UART_INT_RXOVRN) | in pnx8xxx_set_termios()
487 sport->port.read_status_mask |= in pnx8xxx_set_termios()
491 sport->port.read_status_mask |= in pnx8xxx_set_termios()
497 sport->port.ignore_status_mask = 0; in pnx8xxx_set_termios()
499 sport->port.ignore_status_mask |= in pnx8xxx_set_termios()
503 sport->port.ignore_status_mask |= in pnx8xxx_set_termios()
510 sport->port.ignore_status_mask |= in pnx8xxx_set_termios()
518 sport->port.ignore_status_mask |= in pnx8xxx_set_termios()
521 del_timer_sync(&sport->timer); in pnx8xxx_set_termios()
531 old_ien = serial_in(sport, PNX8XXX_IEN); in pnx8xxx_set_termios()
532 serial_out(sport, PNX8XXX_IEN, old_ien & ~(PNX8XXX_UART_INT_ALLTX | in pnx8xxx_set_termios()
535 while (serial_in(sport, PNX8XXX_FIFO) & PNX8XXX_UART_FIFO_TXFIFO_STA) in pnx8xxx_set_termios()
539 serial_out(sport, PNX8XXX_IEN, 0); in pnx8xxx_set_termios()
546 serial_out(sport, PNX8XXX_LCR, lcr_fcr); in pnx8xxx_set_termios()
550 serial_out(sport, PNX8XXX_BAUD, quot); in pnx8xxx_set_termios()
552 serial_out(sport, PNX8XXX_ICLR, -1); in pnx8xxx_set_termios()
554 serial_out(sport, PNX8XXX_IEN, old_ien); in pnx8xxx_set_termios()
556 if (UART_ENABLE_MS(&sport->port, termios->c_cflag)) in pnx8xxx_set_termios()
557 pnx8xxx_enable_ms(&sport->port); in pnx8xxx_set_termios()
559 spin_unlock_irqrestore(&sport->port.lock, flags); in pnx8xxx_set_termios()
564 struct pnx8xxx_port *sport = in pnx8xxx_type() local
567 return sport->port.type == PORT_PNX8XXX ? "PNX8XXX" : NULL; in pnx8xxx_type()
575 struct pnx8xxx_port *sport = in pnx8xxx_release_port() local
578 release_mem_region(sport->port.mapbase, UART_PORT_SIZE); in pnx8xxx_release_port()
586 struct pnx8xxx_port *sport = in pnx8xxx_request_port() local
588 return request_mem_region(sport->port.mapbase, UART_PORT_SIZE, in pnx8xxx_request_port()
597 struct pnx8xxx_port *sport = in pnx8xxx_config_port() local
601 pnx8xxx_request_port(&sport->port) == 0) in pnx8xxx_config_port()
602 sport->port.type = PORT_PNX8XXX; in pnx8xxx_config_port()
613 struct pnx8xxx_port *sport = in pnx8xxx_verify_port() local
619 if (sport->port.irq != ser->irq) in pnx8xxx_verify_port()
623 if (sport->port.uartclk / 16 != ser->baud_base) in pnx8xxx_verify_port()
625 if ((void *)sport->port.mapbase != ser->iomem_base) in pnx8xxx_verify_port()
627 if (sport->port.iobase != ser->port) in pnx8xxx_verify_port()
680 struct pnx8xxx_port *sport = in pnx8xxx_console_putchar() local
686 status = serial_in(sport, PNX8XXX_FIFO); in pnx8xxx_console_putchar()
688 serial_out(sport, PNX8XXX_FIFO, ch); in pnx8xxx_console_putchar()
696 struct pnx8xxx_port *sport = &pnx8xxx_ports[co->index]; in pnx8xxx_console_write() local
702 old_ien = serial_in(sport, PNX8XXX_IEN); in pnx8xxx_console_write()
703 serial_out(sport, PNX8XXX_IEN, old_ien & ~(PNX8XXX_UART_INT_ALLTX | in pnx8xxx_console_write()
706 uart_console_write(&sport->port, s, count, pnx8xxx_console_putchar); in pnx8xxx_console_write()
714 status = serial_in(sport, PNX8XXX_FIFO); in pnx8xxx_console_write()
718 serial_out(sport, PNX8XXX_ICLR, PNX8XXX_UART_INT_TX | in pnx8xxx_console_write()
721 serial_out(sport, PNX8XXX_IEN, old_ien); in pnx8xxx_console_write()
727 struct pnx8xxx_port *sport; in pnx8xxx_console_setup() local
740 sport = &pnx8xxx_ports[co->index]; in pnx8xxx_console_setup()
745 return uart_set_options(&sport->port, co, baud, parity, bits, flow); in pnx8xxx_console_setup()
784 struct pnx8xxx_port *sport = platform_get_drvdata(pdev); in pnx8xxx_serial_suspend() local
786 return uart_suspend_port(&pnx8xxx_reg, &sport->port); in pnx8xxx_serial_suspend()
791 struct pnx8xxx_port *sport = platform_get_drvdata(pdev); in pnx8xxx_serial_resume() local
793 return uart_resume_port(&pnx8xxx_reg, &sport->port); in pnx8xxx_serial_resume()
821 struct pnx8xxx_port *sport = platform_get_drvdata(pdev); in pnx8xxx_serial_remove() local
823 if (sport) in pnx8xxx_serial_remove()
824 uart_remove_one_port(&pnx8xxx_reg, &sport->port); in pnx8xxx_serial_remove()