From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manfred Huber Date: Thu, 28 Mar 2013 06:55:59 +0100 Subject: [U-Boot] [PATCH 1/1 v2] omap3_beagle: Enabling UART3 first allows the Transmitter to be empty In-Reply-To: References: <1679653192.50708.1361970554739.JavaMail.ngmail@webmail21.arcor-online.net> <51447012.6010303@arcor.de> <20130319144957.GF25919@bill-the-cat> <5150C987.1040802@arcor.de> <51527A89.6070406@arcor.de> Message-ID: <5153DB6F.1010903@arcor.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 2013-03-27 10:29, Javier Martinez Canillas wrote: > On Wed, Mar 27, 2013 at 5:50 AM, Manfred Huber 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 :-) > Hi Javier, Also like me. The patch is not for me, because I have written my own serial driver. So this comment was only not to waste your and my time if no one needs this patch. Best regards, Manfred >> 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 >>> --- >>> 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 at lists.denx.de >>> http://lists.denx.de/mailman/listinfo/u-boot >> >>