On Wed, Mar 27, 2013 at 5:50 AM, Manfred Huber <man.hu...@arcor.de> wrote: > Please test the Patch. It is very simple on a Beagleboard. I guess you > have flashed the actual SPL and u-boot and Beagleboard boots correctly. > Now press and hold 'User' button and connect power. SPL should hang. > You can see some symbols on the console from the ROM code. >
Hi Manfred, I don't have access to my IGEP board right now but I'll test your patch as soon as posible. > Install the Patch, compile it and flash the NAND. Beagleboard still > boots correctly. Now press and hold 'User' button again and Beagleboard > should also boot correctly. The Patch works. > > I suspect the IGEP board has the same bug. If so, the Patch should work > on this board too and we don't need CONFIG_SYS_NS16550_BROKEN_TEMT > anymore. > I still think that we should keep CONFIG_SYS_NS16550_BROKEN_TEMT or something similar instead of just checking for CONFIG_OMAP34XX. Since we don't know if this problem is also present on other TI OMAP platforms (or any other platform). I would just change CONFIG_SYS_NS16550_BROKEN_TEMT semantics once is confirmed that this also fixes the issue on IGEP boards. Also, if you are removing CONFIG_SYS_NS16550_BROKEN_TEMT then you have to update the README too since it is explained there what this config option does. > If you don't want a patch for this bug please let me know. I will not > bother you again. > Thanks a lot for working on this. Some people work on mainline U-Boot on their free time (like myself) so it can take a few days until you get a response about a patch. Please be patient :-) > Best regards, > Manfred > > Thank a lot and best regards, Javier > > On 2013-03-25 23:02, Manfred Huber wrote: >> >> From: Manfred Huber >> >> Due to a Bug in the ROM code of some OMAP3 devices, the TEMT bit is not >> set if UART3 is configured before (only THRE is set). Reason is the >> disabling of UART3 even though the Transmitter is not empty. Enabling >> UART3 allows the Transmitter to be empty. >> >> Signed-off-by: Manfred Huber <man.hu...@arcor.de> >> --- >> drivers/serial/ns16550.c | 12 ++++++++++-- >> 1 file changed, 10 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c >> index b2da8b3..24ff84f 100644 >> --- a/drivers/serial/ns16550.c >> +++ b/drivers/serial/ns16550.c >> @@ -36,10 +36,18 @@ >> >> 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)) >> + 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)) || \ >> _______________________________________________ >> U-Boot mailing list >> U-Boot@lists.denx.de >> http://lists.denx.de/mailman/listinfo/u-boot > > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot