Lines Matching refs:vt8500_port
108 struct vt8500_port { struct
137 struct vt8500_port *vt8500_port = container_of(port, in vt8500_stop_tx() argument
138 struct vt8500_port, in vt8500_stop_tx()
141 vt8500_port->ier &= ~TX_FIFO_INTS; in vt8500_stop_tx()
142 vt8500_write(port, vt8500_port->ier, VT8500_URIER); in vt8500_stop_tx()
147 struct vt8500_port *vt8500_port = container_of(port, in vt8500_stop_rx() local
148 struct vt8500_port, in vt8500_stop_rx()
151 vt8500_port->ier &= ~RX_FIFO_INTS; in vt8500_stop_rx()
152 vt8500_write(port, vt8500_port->ier, VT8500_URIER); in vt8500_stop_rx()
157 struct vt8500_port *vt8500_port = container_of(port, in vt8500_enable_ms() local
158 struct vt8500_port, in vt8500_enable_ms()
161 vt8500_port->ier |= TCTS; in vt8500_enable_ms()
162 vt8500_write(port, vt8500_port->ier, VT8500_URIER); in vt8500_enable_ms()
238 struct vt8500_port *vt8500_port = container_of(port, in vt8500_start_tx() local
239 struct vt8500_port, in vt8500_start_tx()
242 vt8500_port->ier &= ~TX_FIFO_INTS; in vt8500_start_tx()
243 vt8500_write(port, vt8500_port->ier, VT8500_URIER); in vt8500_start_tx()
245 vt8500_port->ier |= TX_FIFO_INTS; in vt8500_start_tx()
246 vt8500_write(port, vt8500_port->ier, VT8500_URIER); in vt8500_start_tx()
317 struct vt8500_port *vt8500_port = in vt8500_set_baud_rate() local
318 container_of(port, struct vt8500_port, uart); in vt8500_set_baud_rate()
322 div = ((vt8500_port->clk_predivisor - 1) & 0xf) << 16; in vt8500_set_baud_rate()
341 struct vt8500_port *vt8500_port = in vt8500_startup() local
342 container_of(port, struct vt8500_port, uart); in vt8500_startup()
345 snprintf(vt8500_port->name, sizeof(vt8500_port->name), in vt8500_startup()
349 vt8500_port->name, port); in vt8500_startup()
360 struct vt8500_port *vt8500_port = in vt8500_shutdown() local
361 container_of(port, struct vt8500_port, uart); in vt8500_shutdown()
363 vt8500_port->ier = 0; in vt8500_shutdown()
366 vt8500_write(&vt8500_port->uart, 0, VT8500_URIER); in vt8500_shutdown()
367 vt8500_write(&vt8500_port->uart, 0x880, VT8500_URFCR); in vt8500_shutdown()
375 struct vt8500_port *vt8500_port = in vt8500_set_termios() local
376 container_of(port, struct vt8500_port, uart); in vt8500_set_termios()
390 lcr = vt8500_read(&vt8500_port->uart, VT8500_URLCR); in vt8500_set_termios()
418 if (vt8500_port->vt8500_uart_flags & VT8500_HAS_SWRTSCTS_SWITCH) in vt8500_set_termios()
422 vt8500_write(&vt8500_port->uart, lcr, VT8500_URLCR); in vt8500_set_termios()
432 vt8500_write(&vt8500_port->uart, 0x88c, VT8500_URFCR); in vt8500_set_termios()
433 while ((vt8500_read(&vt8500_port->uart, VT8500_URFCR) & 0xc) in vt8500_set_termios()
438 vt8500_port->ier = RX_FIFO_INTS | TX_FIFO_INTS; in vt8500_set_termios()
443 if (UART_ENABLE_MS(&vt8500_port->uart, termios->c_cflag)) in vt8500_set_termios()
444 vt8500_port->ier |= TCTS; in vt8500_set_termios()
446 vt8500_write(&vt8500_port->uart, 0x881, VT8500_URFCR); in vt8500_set_termios()
447 vt8500_write(&vt8500_port->uart, vt8500_port->ier, VT8500_URIER); in vt8500_set_termios()
454 struct vt8500_port *vt8500_port = in vt8500_type() local
455 container_of(port, struct vt8500_port, uart); in vt8500_type()
456 return vt8500_port->name; in vt8500_type()
483 static struct vt8500_port *vt8500_uart_ports[VT8500_MAX_PORTS];
511 struct vt8500_port *vt8500_port = vt8500_uart_ports[co->index]; in vt8500_console_write() local
516 ier = vt8500_read(&vt8500_port->uart, VT8500_URIER); in vt8500_console_write()
517 vt8500_write(&vt8500_port->uart, VT8500_URIER, 0); in vt8500_console_write()
519 uart_console_write(&vt8500_port->uart, s, count, in vt8500_console_write()
526 wait_for_xmitr(&vt8500_port->uart); in vt8500_console_write()
527 vt8500_write(&vt8500_port->uart, VT8500_URIER, ier); in vt8500_console_write()
532 struct vt8500_port *vt8500_port; in vt8500_console_setup() local
541 vt8500_port = vt8500_uart_ports[co->index]; in vt8500_console_setup()
543 if (!vt8500_port) in vt8500_console_setup()
549 return uart_set_options(&vt8500_port->uart, in vt8500_console_setup()
638 struct vt8500_port *vt8500_port; in vt8500_serial_probe() local
680 vt8500_port = devm_kzalloc(&pdev->dev, sizeof(struct vt8500_port), in vt8500_serial_probe()
682 if (!vt8500_port) in vt8500_serial_probe()
685 vt8500_port->uart.membase = devm_ioremap_resource(&pdev->dev, mmres); in vt8500_serial_probe()
686 if (IS_ERR(vt8500_port->uart.membase)) in vt8500_serial_probe()
687 return PTR_ERR(vt8500_port->uart.membase); in vt8500_serial_probe()
689 vt8500_port->clk = of_clk_get(pdev->dev.of_node, 0); in vt8500_serial_probe()
690 if (IS_ERR(vt8500_port->clk)) { in vt8500_serial_probe()
695 ret = clk_prepare_enable(vt8500_port->clk); in vt8500_serial_probe()
701 vt8500_port->vt8500_uart_flags = *flags; in vt8500_serial_probe()
702 vt8500_port->clk_predivisor = DIV_ROUND_CLOSEST( in vt8500_serial_probe()
703 clk_get_rate(vt8500_port->clk), in vt8500_serial_probe()
706 vt8500_port->uart.type = PORT_VT8500; in vt8500_serial_probe()
707 vt8500_port->uart.iotype = UPIO_MEM; in vt8500_serial_probe()
708 vt8500_port->uart.mapbase = mmres->start; in vt8500_serial_probe()
709 vt8500_port->uart.irq = irqres->start; in vt8500_serial_probe()
710 vt8500_port->uart.fifosize = 16; in vt8500_serial_probe()
711 vt8500_port->uart.ops = &vt8500_uart_pops; in vt8500_serial_probe()
712 vt8500_port->uart.line = port; in vt8500_serial_probe()
713 vt8500_port->uart.dev = &pdev->dev; in vt8500_serial_probe()
714 vt8500_port->uart.flags = UPF_IOREMAP | UPF_BOOT_AUTOCONF; in vt8500_serial_probe()
717 vt8500_port->uart.uartclk = 16 * clk_get_rate(vt8500_port->clk) / in vt8500_serial_probe()
718 vt8500_port->clk_predivisor / in vt8500_serial_probe()
721 snprintf(vt8500_port->name, sizeof(vt8500_port->name), in vt8500_serial_probe()
724 vt8500_uart_ports[port] = vt8500_port; in vt8500_serial_probe()
726 uart_add_one_port(&vt8500_uart_driver, &vt8500_port->uart); in vt8500_serial_probe()
728 platform_set_drvdata(pdev, vt8500_port); in vt8500_serial_probe()
735 struct vt8500_port *vt8500_port = platform_get_drvdata(pdev); in vt8500_serial_remove() local
737 clk_disable_unprepare(vt8500_port->clk); in vt8500_serial_remove()
738 uart_remove_one_port(&vt8500_uart_driver, &vt8500_port->uart); in vt8500_serial_remove()