Lines Matching +full:- +full:uart

1 // SPDX-License-Identifier: GPL-2.0+
31 status = p->serial_in(p, UART_LSR); in tegra_uart_handle_break()
35 p->serial_in(p, UART_RX); in tegra_uart_handle_break()
37 if (--tmout == 0) in tegra_uart_handle_break()
46 struct tegra_uart *uart; in tegra_uart_probe() local
51 uart = devm_kzalloc(&pdev->dev, sizeof(*uart), GFP_KERNEL); in tegra_uart_probe()
52 if (!uart) in tegra_uart_probe()
53 return -ENOMEM; in tegra_uart_probe()
58 spin_lock_init(&port->lock); in tegra_uart_probe()
60 port->flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_FIXED_PORT | in tegra_uart_probe()
62 port->iotype = UPIO_MEM32; in tegra_uart_probe()
63 port->regshift = 2; in tegra_uart_probe()
64 port->type = PORT_TEGRA; in tegra_uart_probe()
65 port->irqflags |= IRQF_SHARED; in tegra_uart_probe()
66 port->dev = &pdev->dev; in tegra_uart_probe()
67 port->handle_break = tegra_uart_handle_break; in tegra_uart_probe()
69 ret = of_alias_get_id(pdev->dev.of_node, "serial"); in tegra_uart_probe()
71 port->line = ret; in tegra_uart_probe()
77 port->irq = ret; in tegra_uart_probe()
81 return -ENODEV; in tegra_uart_probe()
83 port->membase = devm_ioremap(&pdev->dev, res->start, in tegra_uart_probe()
85 if (!port->membase) in tegra_uart_probe()
86 return -ENOMEM; in tegra_uart_probe()
88 port->mapbase = res->start; in tegra_uart_probe()
89 port->mapsize = resource_size(res); in tegra_uart_probe()
91 uart->rst = devm_reset_control_get_optional_shared(&pdev->dev, NULL); in tegra_uart_probe()
92 if (IS_ERR(uart->rst)) in tegra_uart_probe()
93 return PTR_ERR(uart->rst); in tegra_uart_probe()
95 if (device_property_read_u32(&pdev->dev, "clock-frequency", in tegra_uart_probe()
96 &port->uartclk)) { in tegra_uart_probe()
97 uart->clk = devm_clk_get(&pdev->dev, NULL); in tegra_uart_probe()
98 if (IS_ERR(uart->clk)) { in tegra_uart_probe()
99 dev_err(&pdev->dev, "failed to get clock!\n"); in tegra_uart_probe()
100 return -ENODEV; in tegra_uart_probe()
103 ret = clk_prepare_enable(uart->clk); in tegra_uart_probe()
107 port->uartclk = clk_get_rate(uart->clk); in tegra_uart_probe()
110 ret = reset_control_deassert(uart->rst); in tegra_uart_probe()
118 platform_set_drvdata(pdev, uart); in tegra_uart_probe()
119 uart->line = ret; in tegra_uart_probe()
124 reset_control_assert(uart->rst); in tegra_uart_probe()
126 clk_disable_unprepare(uart->clk); in tegra_uart_probe()
133 struct tegra_uart *uart = platform_get_drvdata(pdev); in tegra_uart_remove() local
135 serial8250_unregister_port(uart->line); in tegra_uart_remove()
136 reset_control_assert(uart->rst); in tegra_uart_remove()
137 clk_disable_unprepare(uart->clk); in tegra_uart_remove()
143 struct tegra_uart *uart = dev_get_drvdata(dev); in tegra_uart_suspend() local
144 struct uart_8250_port *port8250 = serial8250_get_port(uart->line); in tegra_uart_suspend()
145 struct uart_port *port = &port8250->port; in tegra_uart_suspend()
147 serial8250_suspend_port(uart->line); in tegra_uart_suspend()
150 clk_disable_unprepare(uart->clk); in tegra_uart_suspend()
157 struct tegra_uart *uart = dev_get_drvdata(dev); in tegra_uart_resume() local
158 struct uart_8250_port *port8250 = serial8250_get_port(uart->line); in tegra_uart_resume()
159 struct uart_port *port = &port8250->port; in tegra_uart_resume()
162 clk_prepare_enable(uart->clk); in tegra_uart_resume()
164 serial8250_resume_port(uart->line); in tegra_uart_resume()
174 { .compatible = "nvidia,tegra20-uart", },
187 .name = "tegra-uart",