Hi Manfred, On Fri, 29 Mar 2013 10:20:25 +0100, Manfred Huber <man.hu...@arcor.de> wrote:
> On some OMAP3 devices when UART3 is configured for boot mode before SPL > starts > only THRE bit is set. We have to empty the transmitter before initialization > starts. This patch avoids the use of CONFIG_SYS_NS16550_BROKEN_TEMT. > > Signed-off-by: Manfred Huber <man.hu...@arcor.de> > --- Patch history is missing here. Also, I would like the commit summary (first commit message line, also subject of the patch mail) to clearly state what the patch *does* as opposed to what *happens*, because it is unclear right now if you're describing the solution or the issue. Something like : "omap3_beagle: flush UART3 xmit on enable if TEMT is broken" > README | 8 -------- > drivers/serial/ns16550.c | 16 ++++++++++++++-- > include/configs/igep00x0.h | 3 --- > 3 files changed, 14 insertions(+), 13 deletions(-) > > diff --git a/README b/README > index a336476..e6b3a50 100644 > --- a/README > +++ b/README > @@ -616,14 +616,6 @@ The following options need to be configured: > boot loader that has already initialized the UART. Define this > variable to flush the UART at init time. > > - CONFIG_SYS_NS16550_BROKEN_TEMT > - > - 16550 UART set the Transmitter Empty (TEMT) Bit when all output > - has finished and the transmitter is totally empty. U-Boot waits > - for this bit to be set to initialize the serial console. On some > - broken platforms this bit is not set in SPL making U-Boot to > - hang while waiting for TEMT. Define this option to avoid it. > - > > - Console Interface: > Depending on board, define exactly one serial port > > diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c > index 87a0917..2922a2c 100644 > --- a/drivers/serial/ns16550.c > +++ b/drivers/serial/ns16550.c > @@ -36,10 +36,22 @@ > > void NS16550_init(NS16550_t com_port, int baud_divisor) > { > -#if (!defined(CONFIG_SYS_NS16550_BROKEN_TEMT)) > +#if (defined(CONFIG_SPL_BUILD) && defined(CONFIG_OMAP34XX)) > + /* On some OMAP3 devices when UART3 is configured for boot mode before > + SPL starts only THRE bit is set. We have to empty the transmitter > + before initialization starts. */ > + if ((serial_in(&com_port->lsr) & (UART_LSR_TEMT | UART_LSR_THRE)) > + == UART_LSR_THRE) { > + serial_out(UART_LCR_DLAB, &com_port->lcr); > + serial_out(baud_divisor & 0xff, &com_port->dll); > + serial_out((baud_divisor >> 8) & 0xff, &com_port->dlm); > + serial_out(UART_LCRVAL, &com_port->lcr); > + serial_out(0, &com_port->mdr1); > + } > +#endif > + > while (!(serial_in(&com_port->lsr) & UART_LSR_TEMT)) > ; > -#endif > > serial_out(CONFIG_SYS_NS16550_IER, &com_port->ier); > #if (defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2)) || \ > > diff --git a/include/configs/igep00x0.h b/include/configs/igep00x0.h > index f8131b1..0617a58 100644 > --- a/include/configs/igep00x0.h > +++ b/include/configs/igep00x0.h > @@ -67,9 +67,6 @@ > #define CONFIG_SYS_NS16550_REG_SIZE (-4) > #define CONFIG_SYS_NS16550_CLK V_NS16550_CLK > > -/* define to avoid U-Boot to hang while waiting for TEMT */ > -#define CONFIG_SYS_NS16550_BROKEN_TEMT > - > /* select serial console configuration */ > #define CONFIG_CONS_INDEX 3 > #define CONFIG_SYS_NS16550_COM3 OMAP34XX_UART3 > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot Amicalement, -- Albert. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot