• Home
  • Raw
  • Download

Lines Matching refs:uart

70 static void bfin_serial_dma_tx_chars(struct bfin_serial_port *uart);
72 static void bfin_serial_tx_chars(struct bfin_serial_port *uart);
81 struct bfin_serial_port *uart = (struct bfin_serial_port *)port; in bfin_serial_get_mctrl() local
82 if (uart->cts_pin < 0) in bfin_serial_get_mctrl()
86 if (UART_GET_CTS(uart)) in bfin_serial_get_mctrl()
94 struct bfin_serial_port *uart = (struct bfin_serial_port *)port; in bfin_serial_set_mctrl() local
95 if (uart->rts_pin < 0) in bfin_serial_set_mctrl()
100 UART_ENABLE_RTS(uart); in bfin_serial_set_mctrl()
102 UART_DISABLE_RTS(uart); in bfin_serial_set_mctrl()
110 struct bfin_serial_port *uart = dev_id; in bfin_serial_mctrl_cts_int() local
111 struct uart_port *uport = &uart->port; in bfin_serial_mctrl_cts_int()
115 UART_CLEAR_SCTS(uart); in bfin_serial_mctrl_cts_int()
147 struct bfin_serial_port *uart = (struct bfin_serial_port *)port; in bfin_serial_stop_tx() local
149 struct circ_buf *xmit = &uart->port.state->xmit; in bfin_serial_stop_tx()
152 while (!(UART_GET_LSR(uart) & TEMT)) in bfin_serial_stop_tx()
156 disable_dma(uart->tx_dma_channel); in bfin_serial_stop_tx()
157 xmit->tail = (xmit->tail + uart->tx_count) & (UART_XMIT_SIZE - 1); in bfin_serial_stop_tx()
158 uart->port.icount.tx += uart->tx_count; in bfin_serial_stop_tx()
159 uart->tx_count = 0; in bfin_serial_stop_tx()
160 uart->tx_done = 1; in bfin_serial_stop_tx()
164 UART_PUT_LSR(uart, TFI); in bfin_serial_stop_tx()
166 UART_CLEAR_IER(uart, ETBEI); in bfin_serial_stop_tx()
175 struct bfin_serial_port *uart = (struct bfin_serial_port *)port; in bfin_serial_start_tx() local
176 struct tty_struct *tty = uart->port.state->port.tty; in bfin_serial_start_tx()
186 if (uart->tx_done) in bfin_serial_start_tx()
187 bfin_serial_dma_tx_chars(uart); in bfin_serial_start_tx()
189 UART_SET_IER(uart, ETBEI); in bfin_serial_start_tx()
190 bfin_serial_tx_chars(uart); in bfin_serial_start_tx()
199 struct bfin_serial_port *uart = (struct bfin_serial_port *)port; in bfin_serial_stop_rx() local
201 UART_CLEAR_IER(uart, ERBFI); in bfin_serial_stop_rx()
205 # define UART_GET_ANOMALY_THRESHOLD(uart) ((uart)->anomaly_threshold) argument
206 # define UART_SET_ANOMALY_THRESHOLD(uart, v) ((uart)->anomaly_threshold = (v)) argument
208 # define UART_GET_ANOMALY_THRESHOLD(uart) 0 argument
209 # define UART_SET_ANOMALY_THRESHOLD(uart, v) argument
213 static void bfin_serial_rx_chars(struct bfin_serial_port *uart) in bfin_serial_rx_chars() argument
218 status = UART_GET_LSR(uart); in bfin_serial_rx_chars()
219 UART_CLEAR_LSR(uart); in bfin_serial_rx_chars()
221 ch = UART_GET_CHAR(uart); in bfin_serial_rx_chars()
222 uart->port.icount.rx++; in bfin_serial_rx_chars()
226 if (kgdb_connected && kgdboc_port_line == uart->port.line in bfin_serial_rx_chars()
233 if (!uart->port.state) in bfin_serial_rx_chars()
265 if (usecs > UART_GET_ANOMALY_THRESHOLD(uart)) in bfin_serial_rx_chars()
285 uart->port.icount.brk++; in bfin_serial_rx_chars()
286 if (uart_handle_break(&uart->port)) in bfin_serial_rx_chars()
291 uart->port.icount.parity++; in bfin_serial_rx_chars()
293 uart->port.icount.overrun++; in bfin_serial_rx_chars()
295 uart->port.icount.frame++; in bfin_serial_rx_chars()
297 status &= uart->port.read_status_mask; in bfin_serial_rx_chars()
308 if (uart_handle_sysrq_char(&uart->port, ch)) in bfin_serial_rx_chars()
311 uart_insert_char(&uart->port, status, OE, ch, flg); in bfin_serial_rx_chars()
314 tty_flip_buffer_push(&uart->port.state->port); in bfin_serial_rx_chars()
317 static void bfin_serial_tx_chars(struct bfin_serial_port *uart) in bfin_serial_tx_chars() argument
319 struct circ_buf *xmit = &uart->port.state->xmit; in bfin_serial_tx_chars()
321 if (uart_circ_empty(xmit) || uart_tx_stopped(&uart->port)) { in bfin_serial_tx_chars()
324 UART_PUT_LSR(uart, TFI); in bfin_serial_tx_chars()
331 UART_CLEAR_IER(uart, ETBEI); in bfin_serial_tx_chars()
335 if (uart->port.x_char) { in bfin_serial_tx_chars()
336 UART_PUT_CHAR(uart, uart->port.x_char); in bfin_serial_tx_chars()
337 uart->port.icount.tx++; in bfin_serial_tx_chars()
338 uart->port.x_char = 0; in bfin_serial_tx_chars()
341 while ((UART_GET_LSR(uart) & THRE) && xmit->tail != xmit->head) { in bfin_serial_tx_chars()
342 UART_PUT_CHAR(uart, xmit->buf[xmit->tail]); in bfin_serial_tx_chars()
344 uart->port.icount.tx++; in bfin_serial_tx_chars()
348 uart_write_wakeup(&uart->port); in bfin_serial_tx_chars()
353 struct bfin_serial_port *uart = dev_id; in bfin_serial_rx_int() local
355 while (UART_GET_LSR(uart) & DR) in bfin_serial_rx_int()
356 bfin_serial_rx_chars(uart); in bfin_serial_rx_int()
363 struct bfin_serial_port *uart = dev_id; in bfin_serial_tx_int() local
365 spin_lock(&uart->port.lock); in bfin_serial_tx_int()
366 if (UART_GET_LSR(uart) & THRE) in bfin_serial_tx_int()
367 bfin_serial_tx_chars(uart); in bfin_serial_tx_int()
368 spin_unlock(&uart->port.lock); in bfin_serial_tx_int()
375 static void bfin_serial_dma_tx_chars(struct bfin_serial_port *uart) in bfin_serial_dma_tx_chars() argument
377 struct circ_buf *xmit = &uart->port.state->xmit; in bfin_serial_dma_tx_chars()
379 uart->tx_done = 0; in bfin_serial_dma_tx_chars()
381 if (uart_circ_empty(xmit) || uart_tx_stopped(&uart->port)) { in bfin_serial_dma_tx_chars()
382 uart->tx_count = 0; in bfin_serial_dma_tx_chars()
383 uart->tx_done = 1; in bfin_serial_dma_tx_chars()
387 if (uart->port.x_char) { in bfin_serial_dma_tx_chars()
388 UART_PUT_CHAR(uart, uart->port.x_char); in bfin_serial_dma_tx_chars()
389 uart->port.icount.tx++; in bfin_serial_dma_tx_chars()
390 uart->port.x_char = 0; in bfin_serial_dma_tx_chars()
393 uart->tx_count = CIRC_CNT(xmit->head, xmit->tail, UART_XMIT_SIZE); in bfin_serial_dma_tx_chars()
394 if (uart->tx_count > (UART_XMIT_SIZE - xmit->tail)) in bfin_serial_dma_tx_chars()
395 uart->tx_count = UART_XMIT_SIZE - xmit->tail; in bfin_serial_dma_tx_chars()
397 (unsigned long)(xmit->buf+xmit->tail+uart->tx_count)); in bfin_serial_dma_tx_chars()
398 set_dma_config(uart->tx_dma_channel, in bfin_serial_dma_tx_chars()
404 set_dma_start_addr(uart->tx_dma_channel, (unsigned long)(xmit->buf+xmit->tail)); in bfin_serial_dma_tx_chars()
405 set_dma_x_count(uart->tx_dma_channel, uart->tx_count); in bfin_serial_dma_tx_chars()
406 set_dma_x_modify(uart->tx_dma_channel, 1); in bfin_serial_dma_tx_chars()
408 enable_dma(uart->tx_dma_channel); in bfin_serial_dma_tx_chars()
410 UART_SET_IER(uart, ETBEI); in bfin_serial_dma_tx_chars()
413 static void bfin_serial_dma_rx_chars(struct bfin_serial_port *uart) in bfin_serial_dma_rx_chars() argument
417 status = UART_GET_LSR(uart); in bfin_serial_dma_rx_chars()
418 UART_CLEAR_LSR(uart); in bfin_serial_dma_rx_chars()
420 uart->port.icount.rx += in bfin_serial_dma_rx_chars()
421 CIRC_CNT(uart->rx_dma_buf.head, uart->rx_dma_buf.tail, in bfin_serial_dma_rx_chars()
425 uart->port.icount.brk++; in bfin_serial_dma_rx_chars()
426 if (uart_handle_break(&uart->port)) in bfin_serial_dma_rx_chars()
431 uart->port.icount.parity++; in bfin_serial_dma_rx_chars()
433 uart->port.icount.overrun++; in bfin_serial_dma_rx_chars()
435 uart->port.icount.frame++; in bfin_serial_dma_rx_chars()
437 status &= uart->port.read_status_mask; in bfin_serial_dma_rx_chars()
448 for (i = uart->rx_dma_buf.tail; ; i++) { in bfin_serial_dma_rx_chars()
451 if (i == uart->rx_dma_buf.head) in bfin_serial_dma_rx_chars()
453 if (!uart_handle_sysrq_char(&uart->port, uart->rx_dma_buf.buf[i])) in bfin_serial_dma_rx_chars()
454 uart_insert_char(&uart->port, status, OE, in bfin_serial_dma_rx_chars()
455 uart->rx_dma_buf.buf[i], flg); in bfin_serial_dma_rx_chars()
459 tty_flip_buffer_push(&uart->port.state->port); in bfin_serial_dma_rx_chars()
462 void bfin_serial_rx_dma_timeout(struct bfin_serial_port *uart) in bfin_serial_rx_dma_timeout() argument
467 dma_disable_irq_nosync(uart->rx_dma_channel); in bfin_serial_rx_dma_timeout()
468 spin_lock_irqsave(&uart->rx_lock, flags); in bfin_serial_rx_dma_timeout()
479 uart->rx_dma_nrows = get_dma_curr_ycount(uart->rx_dma_channel); in bfin_serial_rx_dma_timeout()
480 x_pos = get_dma_curr_xcount(uart->rx_dma_channel); in bfin_serial_rx_dma_timeout()
481 uart->rx_dma_nrows = DMA_RX_YCOUNT - uart->rx_dma_nrows; in bfin_serial_rx_dma_timeout()
482 if (uart->rx_dma_nrows == DMA_RX_YCOUNT || x_pos == 0) in bfin_serial_rx_dma_timeout()
483 uart->rx_dma_nrows = 0; in bfin_serial_rx_dma_timeout()
488 pos = uart->rx_dma_nrows * DMA_RX_XCOUNT + x_pos; in bfin_serial_rx_dma_timeout()
492 if (pos > uart->rx_dma_buf.tail || in bfin_serial_rx_dma_timeout()
493 uart->rx_dma_nrows < (uart->rx_dma_buf.tail/DMA_RX_XCOUNT)) { in bfin_serial_rx_dma_timeout()
494 uart->rx_dma_buf.head = pos; in bfin_serial_rx_dma_timeout()
495 bfin_serial_dma_rx_chars(uart); in bfin_serial_rx_dma_timeout()
496 uart->rx_dma_buf.tail = uart->rx_dma_buf.head; in bfin_serial_rx_dma_timeout()
499 spin_unlock_irqrestore(&uart->rx_lock, flags); in bfin_serial_rx_dma_timeout()
500 dma_enable_irq(uart->rx_dma_channel); in bfin_serial_rx_dma_timeout()
502 mod_timer(&(uart->rx_dma_timer), jiffies + DMA_RX_FLUSH_JIFFIES); in bfin_serial_rx_dma_timeout()
507 struct bfin_serial_port *uart = dev_id; in bfin_serial_dma_tx_int() local
508 struct circ_buf *xmit = &uart->port.state->xmit; in bfin_serial_dma_tx_int()
510 spin_lock(&uart->port.lock); in bfin_serial_dma_tx_int()
511 if (!(get_dma_curr_irqstat(uart->tx_dma_channel)&DMA_RUN)) { in bfin_serial_dma_tx_int()
512 disable_dma(uart->tx_dma_channel); in bfin_serial_dma_tx_int()
513 clear_dma_irqstat(uart->tx_dma_channel); in bfin_serial_dma_tx_int()
519 UART_CLEAR_IER(uart, ETBEI); in bfin_serial_dma_tx_int()
520 uart->port.icount.tx += uart->tx_count; in bfin_serial_dma_tx_int()
522 xmit->tail = (xmit->tail + uart->tx_count) & (UART_XMIT_SIZE - 1); in bfin_serial_dma_tx_int()
525 uart_write_wakeup(&uart->port); in bfin_serial_dma_tx_int()
528 bfin_serial_dma_tx_chars(uart); in bfin_serial_dma_tx_int()
531 spin_unlock(&uart->port.lock); in bfin_serial_dma_tx_int()
537 struct bfin_serial_port *uart = dev_id; in bfin_serial_dma_rx_int() local
541 spin_lock(&uart->rx_lock); in bfin_serial_dma_rx_int()
542 irqstat = get_dma_curr_irqstat(uart->rx_dma_channel); in bfin_serial_dma_rx_int()
543 clear_dma_irqstat(uart->rx_dma_channel); in bfin_serial_dma_rx_int()
545 uart->rx_dma_nrows = get_dma_curr_ycount(uart->rx_dma_channel); in bfin_serial_dma_rx_int()
546 x_pos = get_dma_curr_xcount(uart->rx_dma_channel); in bfin_serial_dma_rx_int()
547 uart->rx_dma_nrows = DMA_RX_YCOUNT - uart->rx_dma_nrows; in bfin_serial_dma_rx_int()
548 if (uart->rx_dma_nrows == DMA_RX_YCOUNT || x_pos == 0) in bfin_serial_dma_rx_int()
549 uart->rx_dma_nrows = 0; in bfin_serial_dma_rx_int()
551 pos = uart->rx_dma_nrows * DMA_RX_XCOUNT; in bfin_serial_dma_rx_int()
552 if (pos > uart->rx_dma_buf.tail || in bfin_serial_dma_rx_int()
553 uart->rx_dma_nrows < (uart->rx_dma_buf.tail/DMA_RX_XCOUNT)) { in bfin_serial_dma_rx_int()
554 uart->rx_dma_buf.head = pos; in bfin_serial_dma_rx_int()
555 bfin_serial_dma_rx_chars(uart); in bfin_serial_dma_rx_int()
556 uart->rx_dma_buf.tail = uart->rx_dma_buf.head; in bfin_serial_dma_rx_int()
559 spin_unlock(&uart->rx_lock); in bfin_serial_dma_rx_int()
570 struct bfin_serial_port *uart = (struct bfin_serial_port *)port; in bfin_serial_tx_empty() local
573 lsr = UART_GET_LSR(uart); in bfin_serial_tx_empty()
582 struct bfin_serial_port *uart = (struct bfin_serial_port *)port; in bfin_serial_break_ctl() local
583 u32 lcr = UART_GET_LCR(uart); in bfin_serial_break_ctl()
588 UART_PUT_LCR(uart, lcr); in bfin_serial_break_ctl()
594 struct bfin_serial_port *uart = (struct bfin_serial_port *)port; in bfin_serial_startup() local
599 if (request_dma(uart->rx_dma_channel, "BFIN_UART_RX") < 0) { in bfin_serial_startup()
604 if (request_dma(uart->tx_dma_channel, "BFIN_UART_TX") < 0) { in bfin_serial_startup()
606 free_dma(uart->rx_dma_channel); in bfin_serial_startup()
610 set_dma_callback(uart->rx_dma_channel, bfin_serial_dma_rx_int, uart); in bfin_serial_startup()
611 set_dma_callback(uart->tx_dma_channel, bfin_serial_dma_tx_int, uart); in bfin_serial_startup()
613 uart->rx_dma_buf.buf = (unsigned char *)dma_alloc_coherent(NULL, PAGE_SIZE, &dma_handle, GFP_DMA); in bfin_serial_startup()
614 uart->rx_dma_buf.head = 0; in bfin_serial_startup()
615 uart->rx_dma_buf.tail = 0; in bfin_serial_startup()
616 uart->rx_dma_nrows = 0; in bfin_serial_startup()
618 set_dma_config(uart->rx_dma_channel, in bfin_serial_startup()
623 set_dma_x_count(uart->rx_dma_channel, DMA_RX_XCOUNT); in bfin_serial_startup()
624 set_dma_x_modify(uart->rx_dma_channel, 1); in bfin_serial_startup()
625 set_dma_y_count(uart->rx_dma_channel, DMA_RX_YCOUNT); in bfin_serial_startup()
626 set_dma_y_modify(uart->rx_dma_channel, 1); in bfin_serial_startup()
627 set_dma_start_addr(uart->rx_dma_channel, (unsigned long)uart->rx_dma_buf.buf); in bfin_serial_startup()
628 enable_dma(uart->rx_dma_channel); in bfin_serial_startup()
630 uart->rx_dma_timer.data = (unsigned long)(uart); in bfin_serial_startup()
631 uart->rx_dma_timer.function = (void *)bfin_serial_rx_dma_timeout; in bfin_serial_startup()
632 uart->rx_dma_timer.expires = jiffies + DMA_RX_FLUSH_JIFFIES; in bfin_serial_startup()
633 add_timer(&(uart->rx_dma_timer)); in bfin_serial_startup()
637 if (kgdboc_port_line == uart->port.line && kgdboc_break_enabled) in bfin_serial_startup()
641 if (request_irq(uart->rx_irq, bfin_serial_rx_int, 0, in bfin_serial_startup()
642 "BFIN_UART_RX", uart)) { in bfin_serial_startup()
648 (uart->tx_irq, bfin_serial_tx_int, 0, in bfin_serial_startup()
649 "BFIN_UART_TX", uart)) { in bfin_serial_startup()
651 free_irq(uart->rx_irq, uart); in bfin_serial_startup()
666 switch (uart->rx_irq) { in bfin_serial_startup()
683 free_irq(uart->rx_irq, uart); in bfin_serial_startup()
684 free_irq(uart->tx_irq, uart); in bfin_serial_startup()
691 free_irq(uart->rx_irq, uart); in bfin_serial_startup()
692 free_irq(uart->tx_irq, uart); in bfin_serial_startup()
704 if (uart->cts_pin >= 0) { in bfin_serial_startup()
705 if (request_irq(gpio_to_irq(uart->cts_pin), in bfin_serial_startup()
708 0, "BFIN_UART_CTS", uart)) { in bfin_serial_startup()
709 uart->cts_pin = -1; in bfin_serial_startup()
713 if (uart->rts_pin >= 0) { in bfin_serial_startup()
714 if (gpio_request(uart->rts_pin, DRIVER_NAME)) { in bfin_serial_startup()
715 pr_info("fail to request RTS PIN at GPIO_%d\n", uart->rts_pin); in bfin_serial_startup()
716 uart->rts_pin = -1; in bfin_serial_startup()
718 gpio_direction_output(uart->rts_pin, 0); in bfin_serial_startup()
722 if (uart->cts_pin >= 0) { in bfin_serial_startup()
723 if (request_irq(uart->status_irq, bfin_serial_mctrl_cts_int, in bfin_serial_startup()
724 0, "BFIN_UART_MODEM_STATUS", uart)) { in bfin_serial_startup()
725 uart->cts_pin = -1; in bfin_serial_startup()
730 UART_PUT_MCR(uart, UART_GET_MCR(uart) | ACTS); in bfin_serial_startup()
731 UART_SET_IER(uart, EDSSI); in bfin_serial_startup()
735 UART_SET_IER(uart, ERBFI); in bfin_serial_startup()
741 struct bfin_serial_port *uart = (struct bfin_serial_port *)port; in bfin_serial_shutdown() local
744 disable_dma(uart->tx_dma_channel); in bfin_serial_shutdown()
745 free_dma(uart->tx_dma_channel); in bfin_serial_shutdown()
746 disable_dma(uart->rx_dma_channel); in bfin_serial_shutdown()
747 free_dma(uart->rx_dma_channel); in bfin_serial_shutdown()
748 del_timer(&(uart->rx_dma_timer)); in bfin_serial_shutdown()
749 dma_free_coherent(NULL, PAGE_SIZE, uart->rx_dma_buf.buf, 0); in bfin_serial_shutdown()
752 switch (uart->port.irq) { in bfin_serial_shutdown()
765 free_irq(uart->rx_irq, uart); in bfin_serial_shutdown()
766 free_irq(uart->tx_irq, uart); in bfin_serial_shutdown()
770 if (uart->cts_pin >= 0) in bfin_serial_shutdown()
771 free_irq(gpio_to_irq(uart->cts_pin), uart); in bfin_serial_shutdown()
772 if (uart->rts_pin >= 0) in bfin_serial_shutdown()
773 gpio_free(uart->rts_pin); in bfin_serial_shutdown()
776 if (uart->cts_pin >= 0) in bfin_serial_shutdown()
777 free_irq(uart->status_irq, uart); in bfin_serial_shutdown()
785 struct bfin_serial_port *uart = (struct bfin_serial_port *)port; in bfin_serial_set_termios() local
792 if (old == NULL && uart->cts_pin != -1) in bfin_serial_set_termios()
794 else if (uart->cts_pin == -1) in bfin_serial_set_termios()
833 spin_lock_irqsave(&uart->port.lock, flags); in bfin_serial_set_termios()
864 UART_SET_ANOMALY_THRESHOLD(uart, USEC_PER_SEC / baud * 15); in bfin_serial_set_termios()
868 while (UART_GET_GCTL(uart) & UCEN && !(UART_GET_LSR(uart) & TEMT)) in bfin_serial_set_termios()
875 ier = UART_GET_IER(uart); in bfin_serial_set_termios()
876 UART_PUT_GCTL(uart, UART_GET_GCTL(uart) & ~UCEN); in bfin_serial_set_termios()
877 UART_DISABLE_INTS(uart); in bfin_serial_set_termios()
880 UART_SET_DLAB(uart); in bfin_serial_set_termios()
882 UART_PUT_CLK(uart, quot); in bfin_serial_set_termios()
886 UART_CLEAR_DLAB(uart); in bfin_serial_set_termios()
888 UART_PUT_LCR(uart, (UART_GET_LCR(uart) & ~LCR_MASK) | lcr); in bfin_serial_set_termios()
891 UART_ENABLE_INTS(uart, ier); in bfin_serial_set_termios()
892 UART_PUT_GCTL(uart, UART_GET_GCTL(uart) | UCEN); in bfin_serial_set_termios()
897 spin_unlock_irqrestore(&uart->port.lock, flags); in bfin_serial_set_termios()
902 struct bfin_serial_port *uart = (struct bfin_serial_port *)port; in bfin_serial_type() local
904 return uart->port.type == PORT_BFIN ? "BFIN-UART" : NULL; in bfin_serial_type()
927 struct bfin_serial_port *uart = (struct bfin_serial_port *)port; in bfin_serial_config_port() local
930 bfin_serial_request_port(&uart->port) == 0) in bfin_serial_config_port()
931 uart->port.type = PORT_BFIN; in bfin_serial_config_port()
952 struct bfin_serial_port *uart = (struct bfin_serial_port *)port; in bfin_serial_set_ldisc() local
957 val = UART_GET_GCTL(uart); in bfin_serial_set_ldisc()
959 UART_PUT_GCTL(uart, val); in bfin_serial_set_ldisc()
962 val = UART_GET_GCTL(uart); in bfin_serial_set_ldisc()
964 UART_PUT_GCTL(uart, val); in bfin_serial_set_ldisc()
970 struct bfin_serial_port *uart = (struct bfin_serial_port *)port; in bfin_serial_reset_irda() local
973 val = UART_GET_GCTL(uart); in bfin_serial_reset_irda()
975 UART_PUT_GCTL(uart, val); in bfin_serial_reset_irda()
978 UART_PUT_GCTL(uart, val); in bfin_serial_reset_irda()
989 struct bfin_serial_port *uart = (struct bfin_serial_port *)port; in bfin_serial_poll_put_char() local
991 while (!(UART_GET_LSR(uart) & THRE)) in bfin_serial_poll_put_char()
994 UART_CLEAR_DLAB(uart); in bfin_serial_poll_put_char()
995 UART_PUT_CHAR(uart, (unsigned char)chr); in bfin_serial_poll_put_char()
1000 struct bfin_serial_port *uart = (struct bfin_serial_port *)port; in bfin_serial_poll_get_char() local
1003 while (!(UART_GET_LSR(uart) & DR)) in bfin_serial_poll_get_char()
1006 UART_CLEAR_DLAB(uart); in bfin_serial_poll_get_char()
1007 chr = UART_GET_CHAR(uart); in bfin_serial_poll_get_char()
1042 bfin_serial_console_get_options(struct bfin_serial_port *uart, int *baud, in bfin_serial_console_get_options() argument
1047 status = UART_GET_IER(uart) & (ERBFI | ETBEI); in bfin_serial_console_get_options()
1052 lcr = UART_GET_LCR(uart); in bfin_serial_console_get_options()
1064 UART_SET_DLAB(uart); in bfin_serial_console_get_options()
1066 clk = UART_GET_CLK(uart); in bfin_serial_console_get_options()
1069 UART_CLEAR_DLAB(uart); in bfin_serial_console_get_options()
1080 struct bfin_serial_port *uart = (struct bfin_serial_port *)port; in bfin_serial_console_putchar() local
1081 while (!(UART_GET_LSR(uart) & THRE)) in bfin_serial_console_putchar()
1083 UART_PUT_CHAR(uart, ch); in bfin_serial_console_putchar()
1097 struct bfin_serial_port *uart = bfin_serial_ports[co->index]; in bfin_serial_console_write() local
1100 spin_lock_irqsave(&uart->port.lock, flags); in bfin_serial_console_write()
1101 uart_console_write(&uart->port, s, count, bfin_serial_console_putchar); in bfin_serial_console_write()
1102 spin_unlock_irqrestore(&uart->port.lock, flags); in bfin_serial_console_write()
1109 struct bfin_serial_port *uart; in bfin_serial_console_setup() local
1128 uart = bfin_serial_ports[co->index]; in bfin_serial_console_setup()
1129 if (!uart) in bfin_serial_console_setup()
1135 bfin_serial_console_get_options(uart, &baud, &parity, &bits); in bfin_serial_console_setup()
1137 return uart_set_options(&uart->port, co, baud, parity, bits, flow); in bfin_serial_console_setup()
1203 struct bfin_serial_port *uart = platform_get_drvdata(pdev); in bfin_serial_suspend() local
1205 return uart_suspend_port(&bfin_serial_reg, &uart->port); in bfin_serial_suspend()
1210 struct bfin_serial_port *uart = platform_get_drvdata(pdev); in bfin_serial_resume() local
1212 return uart_resume_port(&bfin_serial_reg, &uart->port); in bfin_serial_resume()
1218 struct bfin_serial_port *uart = NULL; in bfin_serial_probe() local
1228 uart = kzalloc(sizeof(*uart), GFP_KERNEL); in bfin_serial_probe()
1229 if (!uart) { in bfin_serial_probe()
1234 bfin_serial_ports[pdev->id] = uart; in bfin_serial_probe()
1256 spin_lock_init(&uart->port.lock); in bfin_serial_probe()
1257 uart->port.uartclk = get_sclk(); in bfin_serial_probe()
1258 uart->port.fifosize = BFIN_UART_TX_FIFO_SIZE; in bfin_serial_probe()
1259 uart->port.ops = &bfin_serial_pops; in bfin_serial_probe()
1260 uart->port.line = pdev->id; in bfin_serial_probe()
1261 uart->port.iotype = UPIO_MEM; in bfin_serial_probe()
1262 uart->port.flags = UPF_BOOT_AUTOCONF; in bfin_serial_probe()
1271 uart->port.membase = ioremap(res->start, resource_size(res)); in bfin_serial_probe()
1272 if (!uart->port.membase) { in bfin_serial_probe()
1277 uart->port.mapbase = res->start; in bfin_serial_probe()
1279 uart->tx_irq = platform_get_irq(pdev, 0); in bfin_serial_probe()
1280 if (uart->tx_irq < 0) { in bfin_serial_probe()
1286 uart->rx_irq = platform_get_irq(pdev, 1); in bfin_serial_probe()
1287 if (uart->rx_irq < 0) { in bfin_serial_probe()
1292 uart->port.irq = uart->rx_irq; in bfin_serial_probe()
1294 uart->status_irq = platform_get_irq(pdev, 2); in bfin_serial_probe()
1295 if (uart->status_irq < 0) { in bfin_serial_probe()
1302 spin_lock_init(&uart->rx_lock); in bfin_serial_probe()
1303 uart->tx_done = 1; in bfin_serial_probe()
1304 uart->tx_count = 0; in bfin_serial_probe()
1312 uart->tx_dma_channel = res->start; in bfin_serial_probe()
1320 uart->rx_dma_channel = res->start; in bfin_serial_probe()
1322 init_timer(&(uart->rx_dma_timer)); in bfin_serial_probe()
1329 uart->cts_pin = -1; in bfin_serial_probe()
1331 uart->cts_pin = res->start; in bfin_serial_probe()
1335 uart->rts_pin = -1; in bfin_serial_probe()
1337 uart->rts_pin = res->start; in bfin_serial_probe()
1344 uart = bfin_serial_ports[pdev->id]; in bfin_serial_probe()
1345 uart->port.dev = &pdev->dev; in bfin_serial_probe()
1346 dev_set_drvdata(&pdev->dev, uart); in bfin_serial_probe()
1347 ret = uart_add_one_port(&bfin_serial_reg, &uart->port); in bfin_serial_probe()
1355 if (uart) { in bfin_serial_probe()
1357 iounmap(uart->port.membase); in bfin_serial_probe()
1361 kfree(uart); in bfin_serial_probe()
1370 struct bfin_serial_port *uart = platform_get_drvdata(pdev); in bfin_serial_remove() local
1374 if (uart) { in bfin_serial_remove()
1375 uart_remove_one_port(&bfin_serial_reg, &uart->port); in bfin_serial_remove()
1376 iounmap(uart->port.membase); in bfin_serial_remove()
1378 kfree(uart); in bfin_serial_remove()