Lines Matching refs:vt8500_port

95 struct vt8500_port {  struct
124 struct vt8500_port *vt8500_port = container_of(port, in vt8500_stop_tx() local
125 struct vt8500_port, in vt8500_stop_tx()
128 vt8500_port->ier &= ~TX_FIFO_INTS; in vt8500_stop_tx()
129 vt8500_write(port, vt8500_port->ier, VT8500_URIER); in vt8500_stop_tx()
134 struct vt8500_port *vt8500_port = container_of(port, in vt8500_stop_rx() local
135 struct vt8500_port, in vt8500_stop_rx()
138 vt8500_port->ier &= ~RX_FIFO_INTS; in vt8500_stop_rx()
139 vt8500_write(port, vt8500_port->ier, VT8500_URIER); in vt8500_stop_rx()
144 struct vt8500_port *vt8500_port = container_of(port, in vt8500_enable_ms() local
145 struct vt8500_port, in vt8500_enable_ms()
148 vt8500_port->ier |= TCTS; in vt8500_enable_ms()
149 vt8500_write(port, vt8500_port->ier, VT8500_URIER); in vt8500_enable_ms()
225 struct vt8500_port *vt8500_port = container_of(port, in vt8500_start_tx() local
226 struct vt8500_port, in vt8500_start_tx()
229 vt8500_port->ier &= ~TX_FIFO_INTS; in vt8500_start_tx()
230 vt8500_write(port, vt8500_port->ier, VT8500_URIER); in vt8500_start_tx()
232 vt8500_port->ier |= TX_FIFO_INTS; in vt8500_start_tx()
233 vt8500_write(port, vt8500_port->ier, VT8500_URIER); in vt8500_start_tx()
304 struct vt8500_port *vt8500_port = in vt8500_set_baud_rate() local
305 container_of(port, struct vt8500_port, uart); in vt8500_set_baud_rate()
309 div = ((vt8500_port->clk_predivisor - 1) & 0xf) << 16; in vt8500_set_baud_rate()
328 struct vt8500_port *vt8500_port = in vt8500_startup() local
329 container_of(port, struct vt8500_port, uart); in vt8500_startup()
332 snprintf(vt8500_port->name, sizeof(vt8500_port->name), in vt8500_startup()
336 vt8500_port->name, port); in vt8500_startup()
347 struct vt8500_port *vt8500_port = in vt8500_shutdown() local
348 container_of(port, struct vt8500_port, uart); in vt8500_shutdown()
350 vt8500_port->ier = 0; in vt8500_shutdown()
353 vt8500_write(&vt8500_port->uart, 0, VT8500_URIER); in vt8500_shutdown()
354 vt8500_write(&vt8500_port->uart, 0x880, VT8500_URFCR); in vt8500_shutdown()
362 struct vt8500_port *vt8500_port = in vt8500_set_termios() local
363 container_of(port, struct vt8500_port, uart); in vt8500_set_termios()
377 lcr = vt8500_read(&vt8500_port->uart, VT8500_URLCR); in vt8500_set_termios()
405 if (vt8500_port->vt8500_uart_flags & VT8500_HAS_SWRTSCTS_SWITCH) in vt8500_set_termios()
409 vt8500_write(&vt8500_port->uart, lcr, VT8500_URLCR); in vt8500_set_termios()
419 vt8500_write(&vt8500_port->uart, 0x88c, VT8500_URFCR); in vt8500_set_termios()
420 while ((vt8500_read(&vt8500_port->uart, VT8500_URFCR) & 0xc) in vt8500_set_termios()
425 vt8500_port->ier = RX_FIFO_INTS | TX_FIFO_INTS; in vt8500_set_termios()
430 if (UART_ENABLE_MS(&vt8500_port->uart, termios->c_cflag)) in vt8500_set_termios()
431 vt8500_port->ier |= TCTS; in vt8500_set_termios()
433 vt8500_write(&vt8500_port->uart, 0x881, VT8500_URFCR); in vt8500_set_termios()
434 vt8500_write(&vt8500_port->uart, vt8500_port->ier, VT8500_URIER); in vt8500_set_termios()
441 struct vt8500_port *vt8500_port = in vt8500_type() local
442 container_of(port, struct vt8500_port, uart); in vt8500_type()
443 return vt8500_port->name; in vt8500_type()
470 static struct vt8500_port *vt8500_uart_ports[VT8500_MAX_PORTS];
498 struct vt8500_port *vt8500_port = vt8500_uart_ports[co->index]; in vt8500_console_write() local
503 ier = vt8500_read(&vt8500_port->uart, VT8500_URIER); in vt8500_console_write()
504 vt8500_write(&vt8500_port->uart, VT8500_URIER, 0); in vt8500_console_write()
506 uart_console_write(&vt8500_port->uart, s, count, in vt8500_console_write()
513 wait_for_xmitr(&vt8500_port->uart); in vt8500_console_write()
514 vt8500_write(&vt8500_port->uart, VT8500_URIER, ier); in vt8500_console_write()
519 struct vt8500_port *vt8500_port; in vt8500_console_setup() local
528 vt8500_port = vt8500_uart_ports[co->index]; in vt8500_console_setup()
530 if (!vt8500_port) in vt8500_console_setup()
536 return uart_set_options(&vt8500_port->uart, in vt8500_console_setup()
625 struct vt8500_port *vt8500_port; in vt8500_serial_probe() local
667 vt8500_port = devm_kzalloc(&pdev->dev, sizeof(struct vt8500_port), in vt8500_serial_probe()
669 if (!vt8500_port) in vt8500_serial_probe()
672 vt8500_port->uart.membase = devm_ioremap_resource(&pdev->dev, mmres); in vt8500_serial_probe()
673 if (IS_ERR(vt8500_port->uart.membase)) in vt8500_serial_probe()
674 return PTR_ERR(vt8500_port->uart.membase); in vt8500_serial_probe()
676 vt8500_port->clk = of_clk_get(pdev->dev.of_node, 0); in vt8500_serial_probe()
677 if (IS_ERR(vt8500_port->clk)) { in vt8500_serial_probe()
682 ret = clk_prepare_enable(vt8500_port->clk); in vt8500_serial_probe()
688 vt8500_port->vt8500_uart_flags = *flags; in vt8500_serial_probe()
689 vt8500_port->clk_predivisor = DIV_ROUND_CLOSEST( in vt8500_serial_probe()
690 clk_get_rate(vt8500_port->clk), in vt8500_serial_probe()
693 vt8500_port->uart.type = PORT_VT8500; in vt8500_serial_probe()
694 vt8500_port->uart.iotype = UPIO_MEM; in vt8500_serial_probe()
695 vt8500_port->uart.mapbase = mmres->start; in vt8500_serial_probe()
696 vt8500_port->uart.irq = irqres->start; in vt8500_serial_probe()
697 vt8500_port->uart.fifosize = 16; in vt8500_serial_probe()
698 vt8500_port->uart.ops = &vt8500_uart_pops; in vt8500_serial_probe()
699 vt8500_port->uart.line = port; in vt8500_serial_probe()
700 vt8500_port->uart.dev = &pdev->dev; in vt8500_serial_probe()
701 vt8500_port->uart.flags = UPF_IOREMAP | UPF_BOOT_AUTOCONF; in vt8500_serial_probe()
702 vt8500_port->uart.has_sysrq = IS_ENABLED(CONFIG_SERIAL_VT8500_CONSOLE); in vt8500_serial_probe()
705 vt8500_port->uart.uartclk = 16 * clk_get_rate(vt8500_port->clk) / in vt8500_serial_probe()
706 vt8500_port->clk_predivisor / in vt8500_serial_probe()
709 snprintf(vt8500_port->name, sizeof(vt8500_port->name), in vt8500_serial_probe()
712 vt8500_uart_ports[port] = vt8500_port; in vt8500_serial_probe()
714 uart_add_one_port(&vt8500_uart_driver, &vt8500_port->uart); in vt8500_serial_probe()
716 platform_set_drvdata(pdev, vt8500_port); in vt8500_serial_probe()