Lines Matching +full:- +full:uart
2 * (C) Copyright 2004-2007 Freescale Semiconductor, Inc.
3 * TsiChung Liew, Tsi-Chung.Liew@freescale.com.
8 * SPDX-License-Identifier: GPL-2.0+
12 * Minimal serial functions needed to use one of the uart ports
22 #include <asm/uart.h>
28 static int mcf_serial_init_common(uart_t *uart, int port_idx, int baudrate) in mcf_serial_init_common() argument
34 /* write to SICR: SIM2 = uart mode,dcd does not affect rx */ in mcf_serial_init_common()
35 writeb(UART_UCR_RESET_RX, &uart->ucr); in mcf_serial_init_common()
36 writeb(UART_UCR_RESET_TX, &uart->ucr); in mcf_serial_init_common()
37 writeb(UART_UCR_RESET_ERROR, &uart->ucr); in mcf_serial_init_common()
38 writeb(UART_UCR_RESET_MR, &uart->ucr); in mcf_serial_init_common()
41 writeb(0, &uart->uimr); in mcf_serial_init_common()
44 writeb(UART_UCSR_RCS_SYS_CLK | UART_UCSR_TCS_SYS_CLK, &uart->ucsr); in mcf_serial_init_common()
46 writeb(UART_UMR_BC_8 | UART_UMR_PM_NONE, &uart->umr); in mcf_serial_init_common()
47 writeb(UART_UMR_SB_STOP_BITS_1, &uart->umr); in mcf_serial_init_common()
50 counter = (u32) ((gd->bus_clk / 32) + (baudrate / 2)); in mcf_serial_init_common()
54 writeb((u8)((counter & 0xff00) >> 8), &uart->ubg1); in mcf_serial_init_common()
56 writeb((u8)(counter & 0x00ff), &uart->ubg2); in mcf_serial_init_common()
58 writeb(UART_UCR_RX_ENABLED | UART_UCR_TX_ENABLED, &uart->ucr); in mcf_serial_init_common()
63 static void mcf_serial_setbrg_common(uart_t *uart, int baudrate) in mcf_serial_setbrg_common() argument
68 counter = (u32) ((gd->bus_clk / 32) + (baudrate / 2)); in mcf_serial_setbrg_common()
72 writeb(((counter & 0xff00) >> 8), &uart->ubg1); in mcf_serial_setbrg_common()
74 writeb((counter & 0x00ff), &uart->ubg2); in mcf_serial_setbrg_common()
76 writeb(UART_UCR_RESET_RX, &uart->ucr); in mcf_serial_setbrg_common()
77 writeb(UART_UCR_RESET_TX, &uart->ucr); in mcf_serial_setbrg_common()
79 writeb(UART_UCR_RX_ENABLED | UART_UCR_TX_ENABLED, &uart->ucr); in mcf_serial_setbrg_common()
92 return mcf_serial_init_common(uart_base, port_idx, gd->baudrate); in mcf_serial_init()
97 uart_t *uart = (uart_t *)CONFIG_SYS_UART_BASE; in mcf_serial_putc() local
103 while (!(readb(&uart->usr) & UART_USR_TXRDY)) in mcf_serial_putc()
106 writeb(c, &uart->utb); in mcf_serial_putc()
111 uart_t *uart = (uart_t *)CONFIG_SYS_UART_BASE; in mcf_serial_getc() local
114 while (!(readb(&uart->usr) & UART_USR_RXRDY)) in mcf_serial_getc()
117 return readb(&uart->urb); in mcf_serial_getc()
122 uart_t *uart = (uart_t *)CONFIG_SYS_UART_BASE; in mcf_serial_setbrg() local
124 mcf_serial_setbrg_common(uart, gd->baudrate); in mcf_serial_setbrg()
129 uart_t *uart = (uart_t *)CONFIG_SYS_UART_BASE; in mcf_serial_tstc() local
131 return readb(&uart->usr) & UART_USR_RXRDY; in mcf_serial_tstc()
161 struct coldfire_serial_platdata *plat = dev->platdata; in coldfire_serial_probe()
163 return mcf_serial_init_common((uart_t *)plat->base, in coldfire_serial_probe()
164 plat->port, plat->baudrate); in coldfire_serial_probe()
169 struct coldfire_serial_platdata *plat = dev->platdata; in coldfire_serial_putc()
170 uart_t *uart = (uart_t *)plat->base; in coldfire_serial_putc() local
173 if (!(readb(&uart->usr) & UART_USR_TXRDY)) in coldfire_serial_putc()
174 return -EAGAIN; in coldfire_serial_putc()
176 writeb(ch, &uart->utb); in coldfire_serial_putc()
183 struct coldfire_serial_platdata *plat = dev->platdata; in coldfire_serial_getc()
184 uart_t *uart = (uart_t *)(plat->base); in coldfire_serial_getc() local
187 if (!(readb(&uart->usr) & UART_USR_RXRDY)) in coldfire_serial_getc()
188 return -EAGAIN; in coldfire_serial_getc()
190 return readb(&uart->urb); in coldfire_serial_getc()
195 struct coldfire_serial_platdata *plat = dev->platdata; in coldfire_serial_setbrg()
196 uart_t *uart = (uart_t *)(plat->base); in coldfire_serial_setbrg() local
198 mcf_serial_setbrg_common(uart, baudrate); in coldfire_serial_setbrg()
205 struct coldfire_serial_platdata *plat = dev->platdata; in coldfire_serial_pending()
206 uart_t *uart = (uart_t *)(plat->base); in coldfire_serial_pending() local
209 return readb(&uart->usr) & UART_USR_RXRDY ? 1 : 0; in coldfire_serial_pending()
211 return readb(&uart->usr) & UART_USR_TXRDY ? 0 : 1; in coldfire_serial_pending()