Lines Matching +full:dev +full:- +full:ctrl
1 // SPDX-License-Identifier: GPL-2.0+
3 * (C) Copyright 2013-2016 Freescale Semiconductor, Inc.
13 #include <asm/arch/imx-regs.h>
45 ibr = (u32) (clk / (16 * gd->baudrate)); in _linflex_serial_setbrg()
46 fbr = (u32) (clk % (16 * gd->baudrate)) * 16; in _linflex_serial_setbrg()
48 __raw_writel(ibr, &base->linibrr); in _linflex_serial_setbrg()
49 __raw_writel(fbr, &base->linfbrr); in _linflex_serial_setbrg()
56 if (!(__raw_readb(&base->uartsr) & UARTSR_DRF)) in _linflex_serial_getc()
57 return -EAGAIN; in _linflex_serial_getc()
59 if (!(__raw_readl(&base->uartsr) & UARTSR_RMB)) in _linflex_serial_getc()
60 return -EAGAIN; in _linflex_serial_getc()
62 c = __raw_readl(&base->bdrm); in _linflex_serial_getc()
63 __raw_writeb((__raw_readb(&base->uartsr) | (UARTSR_DRF | UARTSR_RMB)), in _linflex_serial_getc()
64 &base->uartsr); in _linflex_serial_getc()
70 __raw_writeb(c, &base->bdrl); in _linflex_serial_putc()
73 if (!(__raw_readb(&base->uartsr) & UARTSR_DTF)) in _linflex_serial_putc()
74 return -EAGAIN; in _linflex_serial_putc()
76 __raw_writeb((__raw_readb(&base->uartsr) | UARTSR_DTF), &base->uartsr); in _linflex_serial_putc()
87 volatile u32 ctrl; in _linflex_serial_init() local
89 /* set the Linflex in master mode amd activate by-pass filter */ in _linflex_serial_init()
90 ctrl = LINCR1_BF | LINCR1_MME; in _linflex_serial_init()
91 __raw_writel(ctrl, &base->lincr1); in _linflex_serial_init()
94 ctrl |= LINCR1_INIT; in _linflex_serial_init()
95 __raw_writel(ctrl, &base->lincr1); in _linflex_serial_init()
97 /* waiting for init mode entry - TODO: add a timeout */ in _linflex_serial_init()
98 while ((__raw_readl(&base->linsr) & LINSR_LINS_MASK) != in _linflex_serial_init()
102 __raw_writel(UARTCR_UART, &base->uartcr); in _linflex_serial_init()
109 | UARTCR_WL0 | UARTCR_UART, &base->uartcr); in _linflex_serial_init()
111 ctrl = __raw_readl(&base->lincr1); in _linflex_serial_init()
112 ctrl &= ~LINCR1_INIT; in _linflex_serial_init()
113 __raw_writel(ctrl, &base->lincr1); /* end init mode */ in _linflex_serial_init()
127 int linflex_serial_setbrg(struct udevice *dev, int baudrate) in linflex_serial_setbrg() argument
129 struct linflex_serial_priv *priv = dev_get_priv(dev); in linflex_serial_setbrg()
131 _linflex_serial_setbrg(priv->lfuart, baudrate); in linflex_serial_setbrg()
136 static int linflex_serial_getc(struct udevice *dev) in linflex_serial_getc() argument
138 struct linflex_serial_priv *priv = dev_get_priv(dev); in linflex_serial_getc()
140 return _linflex_serial_getc(priv->lfuart); in linflex_serial_getc()
143 static int linflex_serial_putc(struct udevice *dev, const char ch) in linflex_serial_putc() argument
146 struct linflex_serial_priv *priv = dev_get_priv(dev); in linflex_serial_putc()
148 return _linflex_serial_putc(priv->lfuart, ch); in linflex_serial_putc()
151 static int linflex_serial_pending(struct udevice *dev, bool input) in linflex_serial_pending() argument
153 struct linflex_serial_priv *priv = dev_get_priv(dev); in linflex_serial_pending()
154 uint32_t uartsr = __raw_readl(&priv->lfuart->uartsr); in linflex_serial_pending()
169 static int linflex_serial_probe(struct udevice *dev) in linflex_serial_probe() argument
171 struct linflex_serial_platdata *plat = dev->platdata; in linflex_serial_probe()
172 struct linflex_serial_priv *priv = dev_get_priv(dev); in linflex_serial_probe()
174 priv->lfuart = (struct linflex_fsl *)plat->base_addr; in linflex_serial_probe()
175 linflex_serial_init_internal(priv->lfuart); in linflex_serial_probe()
212 /* XXX: Is this OK? Should this use the non-DM version? */ in _debug_uart_putc()