Lines Matching +full:- +full:uart

1 // SPDX-License-Identifier: GPL-2.0+
30 status = p->serial_in(p, UART_LSR); in tegra_uart_handle_break()
32 status = p->serial_in(p, UART_RX); in tegra_uart_handle_break()
35 if (--tmout == 0) in tegra_uart_handle_break()
44 struct tegra_uart *uart; in tegra_uart_probe() local
49 uart = devm_kzalloc(&pdev->dev, sizeof(*uart), GFP_KERNEL); in tegra_uart_probe()
50 if (!uart) in tegra_uart_probe()
51 return -ENOMEM; in tegra_uart_probe()
56 spin_lock_init(&port->lock); in tegra_uart_probe()
58 port->flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_FIXED_PORT | in tegra_uart_probe()
60 port->iotype = UPIO_MEM32; in tegra_uart_probe()
61 port->regshift = 2; in tegra_uart_probe()
62 port->type = PORT_TEGRA; in tegra_uart_probe()
63 port->irqflags |= IRQF_SHARED; in tegra_uart_probe()
64 port->dev = &pdev->dev; in tegra_uart_probe()
65 port->handle_break = tegra_uart_handle_break; in tegra_uart_probe()
67 ret = of_alias_get_id(pdev->dev.of_node, "serial"); in tegra_uart_probe()
69 port->line = ret; in tegra_uart_probe()
75 port->irq = ret; in tegra_uart_probe()
79 return -ENODEV; in tegra_uart_probe()
81 port->membase = devm_ioremap(&pdev->dev, res->start, in tegra_uart_probe()
83 if (!port->membase) in tegra_uart_probe()
84 return -ENOMEM; in tegra_uart_probe()
86 port->mapbase = res->start; in tegra_uart_probe()
87 port->mapsize = resource_size(res); in tegra_uart_probe()
89 uart->rst = devm_reset_control_get_optional_shared(&pdev->dev, NULL); in tegra_uart_probe()
90 if (IS_ERR(uart->rst)) in tegra_uart_probe()
91 return PTR_ERR(uart->rst); in tegra_uart_probe()
93 if (device_property_read_u32(&pdev->dev, "clock-frequency", in tegra_uart_probe()
94 &port->uartclk)) { in tegra_uart_probe()
95 uart->clk = devm_clk_get(&pdev->dev, NULL); in tegra_uart_probe()
96 if (IS_ERR(uart->clk)) { in tegra_uart_probe()
97 dev_err(&pdev->dev, "failed to get clock!\n"); in tegra_uart_probe()
98 return -ENODEV; in tegra_uart_probe()
101 ret = clk_prepare_enable(uart->clk); in tegra_uart_probe()
105 port->uartclk = clk_get_rate(uart->clk); in tegra_uart_probe()
108 ret = reset_control_deassert(uart->rst); in tegra_uart_probe()
116 platform_set_drvdata(pdev, uart); in tegra_uart_probe()
117 uart->line = ret; in tegra_uart_probe()
122 clk_disable_unprepare(uart->clk); in tegra_uart_probe()
129 struct tegra_uart *uart = platform_get_drvdata(pdev); in tegra_uart_remove() local
131 serial8250_unregister_port(uart->line); in tegra_uart_remove()
132 reset_control_assert(uart->rst); in tegra_uart_remove()
133 clk_disable_unprepare(uart->clk); in tegra_uart_remove()
141 struct tegra_uart *uart = dev_get_drvdata(dev); in tegra_uart_suspend() local
142 struct uart_8250_port *port8250 = serial8250_get_port(uart->line); in tegra_uart_suspend()
143 struct uart_port *port = &port8250->port; in tegra_uart_suspend()
145 serial8250_suspend_port(uart->line); in tegra_uart_suspend()
148 clk_disable_unprepare(uart->clk); in tegra_uart_suspend()
155 struct tegra_uart *uart = dev_get_drvdata(dev); in tegra_uart_resume() local
156 struct uart_8250_port *port8250 = serial8250_get_port(uart->line); in tegra_uart_resume()
157 struct uart_port *port = &port8250->port; in tegra_uart_resume()
160 clk_prepare_enable(uart->clk); in tegra_uart_resume()
162 serial8250_resume_port(uart->line); in tegra_uart_resume()
172 { .compatible = "nvidia,tegra20-uart", },
185 .name = "tegra-uart",