Lines Matching refs:efm_port

89 #define efm_debug(efm_port, format, arg...)			\  argument
90 dev_dbg(efm_port->port.dev, format, ##arg)
92 static void efm32_uart_write32(struct efm32_uart_port *efm_port, in efm32_uart_write32() argument
95 writel_relaxed(value, efm_port->port.membase + offset); in efm32_uart_write32()
98 static u32 efm32_uart_read32(struct efm32_uart_port *efm_port, in efm32_uart_read32() argument
101 return readl_relaxed(efm_port->port.membase + offset); in efm32_uart_read32()
106 struct efm32_uart_port *efm_port = to_efm_port(port); in efm32_uart_tx_empty() local
107 u32 status = efm32_uart_read32(efm_port, UARTn_STATUS); in efm32_uart_tx_empty()
128 struct efm32_uart_port *efm_port = to_efm_port(port); in efm32_uart_stop_tx() local
129 u32 ien = efm32_uart_read32(efm_port, UARTn_IEN); in efm32_uart_stop_tx()
131 efm32_uart_write32(efm_port, UARTn_CMD_TXDIS, UARTn_CMD); in efm32_uart_stop_tx()
133 efm32_uart_write32(efm_port, ien, UARTn_IEN); in efm32_uart_stop_tx()
136 static void efm32_uart_tx_chars(struct efm32_uart_port *efm_port) in efm32_uart_tx_chars() argument
138 struct uart_port *port = &efm_port->port; in efm32_uart_tx_chars()
141 while (efm32_uart_read32(efm_port, UARTn_STATUS) & in efm32_uart_tx_chars()
145 efm32_uart_write32(efm_port, port->x_char, in efm32_uart_tx_chars()
152 efm32_uart_write32(efm_port, xmit->buf[xmit->tail], in efm32_uart_tx_chars()
163 efm32_uart_read32(efm_port, UARTn_STATUS) & in efm32_uart_tx_chars()
170 struct efm32_uart_port *efm_port = to_efm_port(port); in efm32_uart_start_tx() local
173 efm32_uart_write32(efm_port, in efm32_uart_start_tx()
175 ien = efm32_uart_read32(efm_port, UARTn_IEN); in efm32_uart_start_tx()
176 efm32_uart_write32(efm_port, in efm32_uart_start_tx()
178 efm32_uart_write32(efm_port, UARTn_CMD_TXEN, UARTn_CMD); in efm32_uart_start_tx()
180 efm32_uart_tx_chars(efm_port); in efm32_uart_start_tx()
185 struct efm32_uart_port *efm_port = to_efm_port(port); in efm32_uart_stop_rx() local
187 efm32_uart_write32(efm_port, UARTn_CMD_RXDIS, UARTn_CMD); in efm32_uart_stop_rx()
195 static void efm32_uart_rx_chars(struct efm32_uart_port *efm_port) in efm32_uart_rx_chars() argument
197 struct uart_port *port = &efm_port->port; in efm32_uart_rx_chars()
199 while (efm32_uart_read32(efm_port, UARTn_STATUS) & in efm32_uart_rx_chars()
201 u32 rxdata = efm32_uart_read32(efm_port, UARTn_RXDATAX); in efm32_uart_rx_chars()
245 struct efm32_uart_port *efm_port = data; in efm32_uart_rxirq() local
246 u32 irqflag = efm32_uart_read32(efm_port, UARTn_IF); in efm32_uart_rxirq()
248 struct uart_port *port = &efm_port->port; in efm32_uart_rxirq()
254 efm32_uart_write32(efm_port, UARTn_IF_RXDATAV, UARTn_IFC); in efm32_uart_rxirq()
255 efm32_uart_rx_chars(efm_port); in efm32_uart_rxirq()
261 efm32_uart_write32(efm_port, UARTn_IF_RXOF, UARTn_IFC); in efm32_uart_rxirq()
277 struct efm32_uart_port *efm_port = data; in efm32_uart_txirq() local
278 u32 irqflag = efm32_uart_read32(efm_port, UARTn_IF); in efm32_uart_txirq()
282 efm32_uart_write32(efm_port, UARTn_IF_TXC, UARTn_IFC); in efm32_uart_txirq()
285 efm32_uart_tx_chars(efm_port); in efm32_uart_txirq()
293 struct efm32_uart_port *efm_port = to_efm_port(port); in efm32_uart_startup() local
296 ret = clk_enable(efm_port->clk); in efm32_uart_startup()
298 efm_debug(efm_port, "failed to enable clk\n"); in efm32_uart_startup()
301 port->uartclk = clk_get_rate(efm_port->clk); in efm32_uart_startup()
304 efm32_uart_write32(efm_port, in efm32_uart_startup()
305 UARTn_ROUTE_LOCATION(efm_port->pdata.location) | in efm32_uart_startup()
310 DRIVER_NAME, efm_port); in efm32_uart_startup()
312 efm_debug(efm_port, "failed to register rxirq\n"); in efm32_uart_startup()
317 efm32_uart_write32(efm_port, 0, UARTn_IEN); in efm32_uart_startup()
319 ret = request_irq(efm_port->txirq, efm32_uart_txirq, 0, in efm32_uart_startup()
320 DRIVER_NAME, efm_port); in efm32_uart_startup()
322 efm_debug(efm_port, "failed to register txirq\n"); in efm32_uart_startup()
323 free_irq(port->irq, efm_port); in efm32_uart_startup()
326 clk_disable(efm_port->clk); in efm32_uart_startup()
328 efm32_uart_write32(efm_port, in efm32_uart_startup()
330 efm32_uart_write32(efm_port, UARTn_CMD_RXEN, UARTn_CMD); in efm32_uart_startup()
339 struct efm32_uart_port *efm_port = to_efm_port(port); in efm32_uart_shutdown() local
341 efm32_uart_write32(efm_port, 0, UARTn_IEN); in efm32_uart_shutdown()
342 free_irq(port->irq, efm_port); in efm32_uart_shutdown()
344 clk_disable(efm_port->clk); in efm32_uart_shutdown()
350 struct efm32_uart_port *efm_port = to_efm_port(port); in efm32_uart_set_termios() local
400 efm32_uart_write32(efm_port, in efm32_uart_set_termios()
419 efm32_uart_write32(efm_port, UARTn_CTRL_TXBIL, UARTn_CTRL); in efm32_uart_set_termios()
420 efm32_uart_write32(efm_port, frame, UARTn_FRAME); in efm32_uart_set_termios()
421 efm32_uart_write32(efm_port, clkdiv, UARTn_CLKDIV); in efm32_uart_set_termios()
423 efm32_uart_write32(efm_port, UARTn_CMD_TXEN | UARTn_CMD_RXEN, in efm32_uart_set_termios()
436 struct efm32_uart_port *efm_port = to_efm_port(port); in efm32_uart_release_port() local
438 clk_unprepare(efm_port->clk); in efm32_uart_release_port()
439 clk_put(efm_port->clk); in efm32_uart_release_port()
445 struct efm32_uart_port *efm_port = to_efm_port(port); in efm32_uart_request_port() local
449 if (!efm_port->port.membase) { in efm32_uart_request_port()
451 efm_debug(efm_port, "failed to remap\n"); in efm32_uart_request_port()
455 efm_port->clk = clk_get(port->dev, NULL); in efm32_uart_request_port()
456 if (IS_ERR(efm_port->clk)) { in efm32_uart_request_port()
457 ret = PTR_ERR(efm_port->clk); in efm32_uart_request_port()
458 efm_debug(efm_port, "failed to get clock\n"); in efm32_uart_request_port()
462 ret = clk_prepare(efm_port->clk); in efm32_uart_request_port()
464 clk_put(efm_port->clk); in efm32_uart_request_port()
515 struct efm32_uart_port *efm_port = to_efm_port(port); in efm32_uart_console_putchar() local
520 status = efm32_uart_read32(efm_port, UARTn_STATUS); in efm32_uart_console_putchar()
527 efm32_uart_write32(efm_port, ch, UARTn_TXDATA); in efm32_uart_console_putchar()
533 struct efm32_uart_port *efm_port = efm32_uart_ports[co->index]; in efm32_uart_console_write() local
534 u32 status = efm32_uart_read32(efm_port, UARTn_STATUS); in efm32_uart_console_write()
538 efm32_uart_write32(efm_port, UARTn_CMD_TXEN, UARTn_CMD); in efm32_uart_console_write()
540 uart_console_write(&efm_port->port, s, count, in efm32_uart_console_write()
545 u32 status = efm32_uart_read32(efm_port, UARTn_STATUS); in efm32_uart_console_write()
553 efm32_uart_write32(efm_port, UARTn_CMD_TXDIS, UARTn_CMD); in efm32_uart_console_write()
556 static void efm32_uart_console_get_options(struct efm32_uart_port *efm_port, in efm32_uart_console_get_options() argument
559 u32 ctrl = efm32_uart_read32(efm_port, UARTn_CTRL); in efm32_uart_console_get_options()
566 route = efm32_uart_read32(efm_port, UARTn_ROUTE); in efm32_uart_console_get_options()
571 clkdiv = efm32_uart_read32(efm_port, UARTn_CLKDIV); in efm32_uart_console_get_options()
573 *baud = DIV_ROUND_CLOSEST(4 * efm_port->port.uartclk, in efm32_uart_console_get_options()
576 frame = efm32_uart_read32(efm_port, UARTn_FRAME); in efm32_uart_console_get_options()
591 efm_debug(efm_port, "get_opts: options=%d%c%d\n", in efm32_uart_console_get_options()
597 struct efm32_uart_port *efm_port; in efm32_uart_console_setup() local
616 efm_port = efm32_uart_ports[co->index]; in efm32_uart_console_setup()
617 if (!efm_port) { in efm32_uart_console_setup()
622 ret = clk_prepare(efm_port->clk); in efm32_uart_console_setup()
624 dev_warn(efm_port->port.dev, in efm32_uart_console_setup()
629 efm_port->port.uartclk = clk_get_rate(efm_port->clk); in efm32_uart_console_setup()
634 efm32_uart_console_get_options(efm_port, in efm32_uart_console_setup()
637 return uart_set_options(&efm_port->port, co, baud, parity, bits, flow); in efm32_uart_console_setup()
665 struct efm32_uart_port *efm_port) in efm32_uart_probe_dt() argument
689 efm_debug(efm_port, "using location %u\n", location); in efm32_uart_probe_dt()
690 efm_port->pdata.location = location; in efm32_uart_probe_dt()
692 efm_debug(efm_port, "fall back to location 0\n"); in efm32_uart_probe_dt()
700 efm_port->port.line = ret; in efm32_uart_probe_dt()
708 struct efm32_uart_port *efm_port; in efm32_uart_probe() local
713 efm_port = kzalloc(sizeof(*efm_port), GFP_KERNEL); in efm32_uart_probe()
714 if (!efm_port) { in efm32_uart_probe()
738 efm_port->port.irq = ret; in efm32_uart_probe()
742 ret = efm_port->port.irq + 1; in efm32_uart_probe()
744 efm_port->txirq = ret; in efm32_uart_probe()
746 efm_port->port.dev = &pdev->dev; in efm32_uart_probe()
747 efm_port->port.mapbase = res->start; in efm32_uart_probe()
748 efm_port->port.type = PORT_EFMUART; in efm32_uart_probe()
749 efm_port->port.iotype = UPIO_MEM32; in efm32_uart_probe()
750 efm_port->port.fifosize = 2; in efm32_uart_probe()
751 efm_port->port.ops = &efm32_uart_pops; in efm32_uart_probe()
752 efm_port->port.flags = UPF_BOOT_AUTOCONF; in efm32_uart_probe()
754 ret = efm32_uart_probe_dt(pdev, efm_port); in efm32_uart_probe()
759 efm_port->port.line = pdev->id; in efm32_uart_probe()
762 efm_port->pdata = *pdata; in efm32_uart_probe()
766 line = efm_port->port.line; in efm32_uart_probe()
769 efm32_uart_ports[line] = efm_port; in efm32_uart_probe()
771 ret = uart_add_one_port(&efm32_uart_reg, &efm_port->port); in efm32_uart_probe()
781 kfree(efm_port); in efm32_uart_probe()
783 platform_set_drvdata(pdev, efm_port); in efm32_uart_probe()
792 struct efm32_uart_port *efm_port = platform_get_drvdata(pdev); in efm32_uart_remove() local
793 unsigned int line = efm_port->port.line; in efm32_uart_remove()
795 uart_remove_one_port(&efm32_uart_reg, &efm_port->port); in efm32_uart_remove()
800 kfree(efm_port); in efm32_uart_remove()