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()
145 static inline int crisv32_serial_get_rts(struct uart_cris_port *up) in crisv32_serial_get_rts() argument
147 void __iomem *regi_ser = up->regi_ser; in crisv32_serial_get_rts()
161 static inline void crisv32_serial_set_rts(struct uart_cris_port *up, in crisv32_serial_set_rts() argument
164 void __iomem *regi_ser = up->regi_ser; in crisv32_serial_set_rts()
180 static inline int crisv32_serial_get_cts(struct uart_cris_port *up) in crisv32_serial_get_cts() argument
182 void __iomem *regi_ser = up->regi_ser; in crisv32_serial_get_cts()
201 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_send_xchar() local
206 void __iomem *regi_ser = up->regi_ser; in etraxfs_uart_send_xchar()
240 up->port.icount.tx++; in etraxfs_uart_send_xchar()
243 rstat = REG_RD(ser, up->regi_ser, r_stat_din); in etraxfs_uart_send_xchar()
281 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_start_tx() local
284 if (up->write_ongoing) in etraxfs_uart_start_tx()
288 up->write_ongoing = 1; in etraxfs_uart_start_tx()
295 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_start_tx_bottom() local
296 void __iomem *regi_ser = up->regi_ser; in etraxfs_uart_start_tx_bottom()
320 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_stop_tx() local
321 void __iomem *regi_ser = up->regi_ser; in etraxfs_uart_stop_tx()
363 up->write_ongoing = 0; in etraxfs_uart_stop_tx()
368 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_stop_rx() local
369 void __iomem *regi_ser = up->regi_ser; in etraxfs_uart_stop_rx()
380 static void check_modem_status(struct uart_cris_port *up) in check_modem_status() argument
386 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_tx_empty() local
391 spin_lock_irqsave(&up->port.lock, flags); in etraxfs_uart_tx_empty()
393 rstat = REG_RD(ser, up->regi_ser, r_stat_din); in etraxfs_uart_tx_empty()
396 spin_unlock_irqrestore(&up->port.lock, flags); in etraxfs_uart_tx_empty()
401 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_get_mctrl() local
405 if (crisv32_serial_get_rts(up)) in etraxfs_uart_get_mctrl()
408 if (up->dtr_pin && !gpiod_get_raw_value(up->dtr_pin)) in etraxfs_uart_get_mctrl()
411 if (up->cd_pin && !gpiod_get_raw_value(up->cd_pin)) in etraxfs_uart_get_mctrl()
414 if (up->ri_pin && !gpiod_get_raw_value(up->ri_pin)) in etraxfs_uart_get_mctrl()
417 if (up->dsr_pin && !gpiod_get_raw_value(up->dsr_pin)) in etraxfs_uart_get_mctrl()
419 if (crisv32_serial_get_cts(up)) in etraxfs_uart_get_mctrl()
426 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_set_mctrl() local
428 crisv32_serial_set_rts(up, mctrl & TIOCM_RTS ? 1 : 0, 0); in etraxfs_uart_set_mctrl()
430 if (up->dtr_pin) in etraxfs_uart_set_mctrl()
431 gpiod_set_raw_value(up->dtr_pin, mctrl & TIOCM_DTR ? 0 : 1); in etraxfs_uart_set_mctrl()
433 if (up->ri_pin) in etraxfs_uart_set_mctrl()
434 gpiod_set_raw_value(up->ri_pin, mctrl & TIOCM_RNG ? 0 : 1); in etraxfs_uart_set_mctrl()
436 if (up->cd_pin) in etraxfs_uart_set_mctrl()
437 gpiod_set_raw_value(up->cd_pin, mctrl & TIOCM_CD ? 0 : 1); in etraxfs_uart_set_mctrl()
442 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_break_ctl() local
448 spin_lock_irqsave(&up->port.lock, flags); in etraxfs_uart_break_ctl()
449 tr_ctrl = REG_RD(ser, up->regi_ser, rw_tr_ctrl); in etraxfs_uart_break_ctl()
450 tr_dma_en = REG_RD(ser, up->regi_ser, rw_tr_dma_en); in etraxfs_uart_break_ctl()
451 intr_mask = REG_RD(ser, up->regi_ser, rw_intr_mask); in etraxfs_uart_break_ctl()
476 REG_WR(ser, up->regi_ser, rw_tr_ctrl, tr_ctrl); in etraxfs_uart_break_ctl()
477 REG_WR(ser, up->regi_ser, rw_tr_dma_en, tr_dma_en); in etraxfs_uart_break_ctl()
478 REG_WR(ser, up->regi_ser, rw_intr_mask, intr_mask); in etraxfs_uart_break_ctl()
480 spin_unlock_irqrestore(&up->port.lock, flags); in etraxfs_uart_break_ctl()
484 transmit_chars_no_dma(struct uart_cris_port *up) in transmit_chars_no_dma() argument
487 struct circ_buf *xmit = &up->port.state->xmit; in transmit_chars_no_dma()
489 void __iomem *regi_ser = up->regi_ser; in transmit_chars_no_dma()
493 if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) { in transmit_chars_no_dma()
501 up->write_ongoing = 0; in transmit_chars_no_dma()
514 up->port.icount.tx++; in transmit_chars_no_dma()
521 uart_write_wakeup(&up->port); in transmit_chars_no_dma()
524 static void receive_chars_no_dma(struct uart_cris_port *up) in receive_chars_no_dma() argument
534 rstat = REG_RD(ser, up->regi_ser, r_stat_din); in receive_chars_no_dma()
535 icount = &up->port.icount; in receive_chars_no_dma()
536 port = &up->port.state->port; in receive_chars_no_dma()
539 stat_din = REG_RD(ser, up->regi_ser, rs_stat_din); in receive_chars_no_dma()
543 REG_WR(ser, up->regi_ser, rw_ack_intr, ack_intr); in receive_chars_no_dma()
570 rstat = REG_RD(ser, up->regi_ser, r_stat_din); in receive_chars_no_dma()
572 spin_unlock(&up->port.lock); in receive_chars_no_dma()
574 spin_lock(&up->port.lock); in receive_chars_no_dma()
580 struct uart_cris_port *up = (struct uart_cris_port *)dev_id; in ser_interrupt() local
584 spin_lock(&up->port.lock); in ser_interrupt()
586 regi_ser = up->regi_ser; in ser_interrupt()
598 receive_chars_no_dma(up); in ser_interrupt()
601 check_modem_status(up); in ser_interrupt()
604 transmit_chars_no_dma(up); in ser_interrupt()
608 spin_unlock(&up->port.lock); in ser_interrupt()
617 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_get_poll_char() local
620 stat = REG_RD(ser, up->regi_ser, rs_stat_din); in etraxfs_uart_get_poll_char()
625 REG_WR(ser, up->regi_ser, rw_ack_intr, ack_intr); in etraxfs_uart_get_poll_char()
634 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_put_poll_char() local
637 stat = REG_RD(ser, up->regi_ser, r_stat_din); in etraxfs_uart_put_poll_char()
639 REG_WR_INT(ser, up->regi_ser, rw_dout, c); in etraxfs_uart_put_poll_char()
645 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_startup() local
655 spin_lock_irqsave(&up->port.lock, flags); in etraxfs_uart_startup()
657 REG_WR(ser, up->regi_ser, rw_intr_mask, ser_intr_mask); in etraxfs_uart_startup()
659 etraxfs_uart_set_mctrl(&up->port, up->port.mctrl); in etraxfs_uart_startup()
661 spin_unlock_irqrestore(&up->port.lock, flags); in etraxfs_uart_startup()
668 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_shutdown() local
671 spin_lock_irqsave(&up->port.lock, flags); in etraxfs_uart_shutdown()
679 etraxfs_uart_set_mctrl(&up->port, up->port.mctrl); in etraxfs_uart_shutdown()
681 spin_unlock_irqrestore(&up->port.lock, flags); in etraxfs_uart_shutdown()
689 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_set_termios() local
800 REG_WR(ser, up->regi_ser, rw_tr_dma_en, tx_dma_en); in etraxfs_uart_set_termios()
804 MODIFY_REG(up->regi_ser, rw_rec_baud_div, rx_baud_div); in etraxfs_uart_set_termios()
805 MODIFY_REG(up->regi_ser, rw_rec_ctrl, rx_ctrl); in etraxfs_uart_set_termios()
807 MODIFY_REG(up->regi_ser, rw_tr_baud_div, tx_baud_div); in etraxfs_uart_set_termios()
808 MODIFY_REG(up->regi_ser, rw_tr_ctrl, tx_ctrl); in etraxfs_uart_set_termios()
811 REG_WR(ser, up->regi_ser, rw_tr_dma_en, tx_dma_en); in etraxfs_uart_set_termios()
813 xoff = REG_RD(ser, up->regi_ser, rw_xoff); in etraxfs_uart_set_termios()
815 if (up->port.state && up->port.state->port.tty && in etraxfs_uart_set_termios()
816 (up->port.state->port.tty->termios.c_iflag & IXON)) { in etraxfs_uart_set_termios()
817 xoff.chr = STOP_CHAR(up->port.state->port.tty); in etraxfs_uart_set_termios()
822 MODIFY_REG(up->regi_ser, rw_xoff, xoff); in etraxfs_uart_set_termios()
829 REG_WR(ser, up->regi_ser, rw_xoff_clr, xoff_clr); in etraxfs_uart_set_termios()
831 etraxfs_uart_set_mctrl(&up->port, up->port.mctrl); in etraxfs_uart_set_termios()
832 spin_unlock_irqrestore(&up->port.lock, flags); in etraxfs_uart_set_termios()
852 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_config_port() local
854 up->port.type = PORT_CRIS; in etraxfs_uart_config_port()
882 struct uart_cris_port *up = (struct uart_cris_port *)port; in cris_serial_port_init() local
884 if (up->initialized) in cris_serial_port_init()
886 up->initialized = 1; in cris_serial_port_init()
890 port->irq = up->irq; in cris_serial_port_init()
891 port->iobase = (unsigned long) up->regi_ser; in cris_serial_port_init()
910 struct uart_cris_port *up; in etraxfs_uart_probe() local
926 up = devm_kzalloc(&pdev->dev, sizeof(struct uart_cris_port), in etraxfs_uart_probe()
928 if (!up) in etraxfs_uart_probe()
931 up->irq = irq_of_parse_and_map(np, 0); in etraxfs_uart_probe()
932 up->regi_ser = of_iomap(np, 0); in etraxfs_uart_probe()
933 up->dtr_pin = devm_gpiod_get_optional(&pdev->dev, "dtr"); in etraxfs_uart_probe()
934 up->dsr_pin = devm_gpiod_get_optional(&pdev->dev, "dsr"); in etraxfs_uart_probe()
935 up->ri_pin = devm_gpiod_get_optional(&pdev->dev, "ri"); in etraxfs_uart_probe()
936 up->cd_pin = devm_gpiod_get_optional(&pdev->dev, "cd"); in etraxfs_uart_probe()
937 up->port.dev = &pdev->dev; in etraxfs_uart_probe()
938 cris_serial_port_init(&up->port, dev_id); in etraxfs_uart_probe()
940 etraxfs_uart_ports[dev_id] = up; in etraxfs_uart_probe()
941 platform_set_drvdata(pdev, &up->port); in etraxfs_uart_probe()
942 uart_add_one_port(&etraxfs_uart_driver, &up->port); in etraxfs_uart_probe()