Lines Matching refs:up
52 struct uart_cris_port *up; in cris_console_write() local
57 up = etraxfs_uart_ports[co->index]; in cris_console_write()
59 if (!up) in cris_console_write()
63 tr_dma_en = old = REG_RD(ser, up->regi_ser, rw_tr_dma_en); in cris_console_write()
66 REG_WR(ser, up->regi_ser, rw_tr_dma_en, tr_dma_en); in cris_console_write()
74 stat = REG_RD(ser, up->regi_ser, r_stat_din); in cris_console_write()
76 REG_WR_INT(ser, up->regi_ser, rw_dout, '\r'); in cris_console_write()
80 stat = REG_RD(ser, up->regi_ser, r_stat_din); in cris_console_write()
82 REG_WR_INT(ser, up->regi_ser, rw_dout, s[i]); in cris_console_write()
87 REG_WR(ser, up->regi_ser, rw_tr_dma_en, old); in cris_console_write()
138 static inline int crisv32_serial_get_rts(struct uart_cris_port *up) in crisv32_serial_get_rts() argument
140 void __iomem *regi_ser = up->regi_ser; in crisv32_serial_get_rts()
154 static inline void crisv32_serial_set_rts(struct uart_cris_port *up, in crisv32_serial_set_rts() argument
157 void __iomem *regi_ser = up->regi_ser; in crisv32_serial_set_rts()
173 static inline int crisv32_serial_get_cts(struct uart_cris_port *up) in crisv32_serial_get_cts() argument
175 void __iomem *regi_ser = up->regi_ser; in crisv32_serial_get_cts()
194 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_send_xchar() local
199 void __iomem *regi_ser = up->regi_ser; in etraxfs_uart_send_xchar()
233 up->port.icount.tx++; in etraxfs_uart_send_xchar()
236 rstat = REG_RD(ser, up->regi_ser, r_stat_din); in etraxfs_uart_send_xchar()
274 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_start_tx() local
277 if (up->write_ongoing) in etraxfs_uart_start_tx()
281 up->write_ongoing = 1; in etraxfs_uart_start_tx()
288 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_start_tx_bottom() local
289 void __iomem *regi_ser = up->regi_ser; in etraxfs_uart_start_tx_bottom()
313 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_stop_tx() local
314 void __iomem *regi_ser = up->regi_ser; in etraxfs_uart_stop_tx()
356 up->write_ongoing = 0; in etraxfs_uart_stop_tx()
361 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_stop_rx() local
362 void __iomem *regi_ser = up->regi_ser; in etraxfs_uart_stop_rx()
371 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_tx_empty() local
376 spin_lock_irqsave(&up->port.lock, flags); in etraxfs_uart_tx_empty()
378 rstat = REG_RD(ser, up->regi_ser, r_stat_din); in etraxfs_uart_tx_empty()
381 spin_unlock_irqrestore(&up->port.lock, flags); in etraxfs_uart_tx_empty()
386 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_get_mctrl() local
390 if (crisv32_serial_get_rts(up)) in etraxfs_uart_get_mctrl()
392 if (crisv32_serial_get_cts(up)) in etraxfs_uart_get_mctrl()
394 return mctrl_gpio_get(up->gpios, &ret); in etraxfs_uart_get_mctrl()
399 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_set_mctrl() local
401 crisv32_serial_set_rts(up, mctrl & TIOCM_RTS ? 1 : 0, 0); in etraxfs_uart_set_mctrl()
402 mctrl_gpio_set(up->gpios, mctrl); in etraxfs_uart_set_mctrl()
407 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_break_ctl() local
413 spin_lock_irqsave(&up->port.lock, flags); in etraxfs_uart_break_ctl()
414 tr_ctrl = REG_RD(ser, up->regi_ser, rw_tr_ctrl); in etraxfs_uart_break_ctl()
415 tr_dma_en = REG_RD(ser, up->regi_ser, rw_tr_dma_en); in etraxfs_uart_break_ctl()
416 intr_mask = REG_RD(ser, up->regi_ser, rw_intr_mask); in etraxfs_uart_break_ctl()
441 REG_WR(ser, up->regi_ser, rw_tr_ctrl, tr_ctrl); in etraxfs_uart_break_ctl()
442 REG_WR(ser, up->regi_ser, rw_tr_dma_en, tr_dma_en); in etraxfs_uart_break_ctl()
443 REG_WR(ser, up->regi_ser, rw_intr_mask, intr_mask); in etraxfs_uart_break_ctl()
445 spin_unlock_irqrestore(&up->port.lock, flags); in etraxfs_uart_break_ctl()
449 transmit_chars_no_dma(struct uart_cris_port *up) in transmit_chars_no_dma() argument
452 struct circ_buf *xmit = &up->port.state->xmit; in transmit_chars_no_dma()
454 void __iomem *regi_ser = up->regi_ser; in transmit_chars_no_dma()
458 if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) { in transmit_chars_no_dma()
466 up->write_ongoing = 0; in transmit_chars_no_dma()
479 up->port.icount.tx++; in transmit_chars_no_dma()
486 uart_write_wakeup(&up->port); in transmit_chars_no_dma()
489 static void receive_chars_no_dma(struct uart_cris_port *up) in receive_chars_no_dma() argument
499 rstat = REG_RD(ser, up->regi_ser, r_stat_din); in receive_chars_no_dma()
500 icount = &up->port.icount; in receive_chars_no_dma()
501 port = &up->port.state->port; in receive_chars_no_dma()
504 stat_din = REG_RD(ser, up->regi_ser, rs_stat_din); in receive_chars_no_dma()
508 REG_WR(ser, up->regi_ser, rw_ack_intr, ack_intr); in receive_chars_no_dma()
535 rstat = REG_RD(ser, up->regi_ser, r_stat_din); in receive_chars_no_dma()
537 spin_unlock(&up->port.lock); in receive_chars_no_dma()
539 spin_lock(&up->port.lock); in receive_chars_no_dma()
545 struct uart_cris_port *up = (struct uart_cris_port *)dev_id; in ser_interrupt() local
549 spin_lock(&up->port.lock); in ser_interrupt()
551 regi_ser = up->regi_ser; in ser_interrupt()
563 receive_chars_no_dma(up); in ser_interrupt()
568 transmit_chars_no_dma(up); in ser_interrupt()
572 spin_unlock(&up->port.lock); in ser_interrupt()
581 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_get_poll_char() local
584 stat = REG_RD(ser, up->regi_ser, rs_stat_din); in etraxfs_uart_get_poll_char()
589 REG_WR(ser, up->regi_ser, rw_ack_intr, ack_intr); in etraxfs_uart_get_poll_char()
598 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_put_poll_char() local
601 stat = REG_RD(ser, up->regi_ser, r_stat_din); in etraxfs_uart_put_poll_char()
603 REG_WR_INT(ser, up->regi_ser, rw_dout, c); in etraxfs_uart_put_poll_char()
609 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_startup() local
619 spin_lock_irqsave(&up->port.lock, flags); in etraxfs_uart_startup()
621 REG_WR(ser, up->regi_ser, rw_intr_mask, ser_intr_mask); in etraxfs_uart_startup()
623 etraxfs_uart_set_mctrl(&up->port, up->port.mctrl); in etraxfs_uart_startup()
625 spin_unlock_irqrestore(&up->port.lock, flags); in etraxfs_uart_startup()
632 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_shutdown() local
635 spin_lock_irqsave(&up->port.lock, flags); in etraxfs_uart_shutdown()
643 etraxfs_uart_set_mctrl(&up->port, up->port.mctrl); in etraxfs_uart_shutdown()
645 spin_unlock_irqrestore(&up->port.lock, flags); in etraxfs_uart_shutdown()
653 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_set_termios() local
764 REG_WR(ser, up->regi_ser, rw_tr_dma_en, tx_dma_en); in etraxfs_uart_set_termios()
768 MODIFY_REG(up->regi_ser, rw_rec_baud_div, rx_baud_div); in etraxfs_uart_set_termios()
769 MODIFY_REG(up->regi_ser, rw_rec_ctrl, rx_ctrl); in etraxfs_uart_set_termios()
771 MODIFY_REG(up->regi_ser, rw_tr_baud_div, tx_baud_div); in etraxfs_uart_set_termios()
772 MODIFY_REG(up->regi_ser, rw_tr_ctrl, tx_ctrl); in etraxfs_uart_set_termios()
775 REG_WR(ser, up->regi_ser, rw_tr_dma_en, tx_dma_en); in etraxfs_uart_set_termios()
777 xoff = REG_RD(ser, up->regi_ser, rw_xoff); in etraxfs_uart_set_termios()
779 if (up->port.state && up->port.state->port.tty && in etraxfs_uart_set_termios()
780 (up->port.state->port.tty->termios.c_iflag & IXON)) { in etraxfs_uart_set_termios()
781 xoff.chr = STOP_CHAR(up->port.state->port.tty); in etraxfs_uart_set_termios()
786 MODIFY_REG(up->regi_ser, rw_xoff, xoff); in etraxfs_uart_set_termios()
793 REG_WR(ser, up->regi_ser, rw_xoff_clr, xoff_clr); in etraxfs_uart_set_termios()
795 etraxfs_uart_set_mctrl(&up->port, up->port.mctrl); in etraxfs_uart_set_termios()
796 spin_unlock_irqrestore(&up->port.lock, flags); in etraxfs_uart_set_termios()
816 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_config_port() local
818 up->port.type = PORT_CRIS; in etraxfs_uart_config_port()
845 struct uart_cris_port *up = (struct uart_cris_port *)port; in cris_serial_port_init() local
847 if (up->initialized) in cris_serial_port_init()
849 up->initialized = 1; in cris_serial_port_init()
853 port->irq = up->irq; in cris_serial_port_init()
854 port->iobase = (unsigned long) up->regi_ser; in cris_serial_port_init()
873 struct uart_cris_port *up; in etraxfs_uart_probe() local
889 up = devm_kzalloc(&pdev->dev, sizeof(struct uart_cris_port), in etraxfs_uart_probe()
891 if (!up) in etraxfs_uart_probe()
894 up->irq = irq_of_parse_and_map(np, 0); in etraxfs_uart_probe()
895 up->regi_ser = of_iomap(np, 0); in etraxfs_uart_probe()
896 up->port.dev = &pdev->dev; in etraxfs_uart_probe()
898 up->gpios = mctrl_gpio_init_noauto(&pdev->dev, 0); in etraxfs_uart_probe()
899 if (IS_ERR(up->gpios)) in etraxfs_uart_probe()
900 return PTR_ERR(up->gpios); in etraxfs_uart_probe()
902 cris_serial_port_init(&up->port, dev_id); in etraxfs_uart_probe()
904 etraxfs_uart_ports[dev_id] = up; in etraxfs_uart_probe()
905 platform_set_drvdata(pdev, &up->port); in etraxfs_uart_probe()
906 uart_add_one_port(&etraxfs_uart_driver, &up->port); in etraxfs_uart_probe()