arm/179688: [patch] [rpi] serial console eats some characters at moutroot prompt
Luiz Otavio O Souza
loos.br at gmail.com
Tue Jun 18 19:10:00 UTC 2013
>Number: 179688
>Category: arm
>Synopsis: [patch] [rpi] serial console eats some characters at moutroot prompt
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-arm
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Tue Jun 18 19:10:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator: Luiz Otavio O Souza
>Release: -head r251700
>Organization:
>Environment:
FreeBSD raspberry-pi 10.0-CURRENT FreeBSD 10.0-CURRENT #11 r251700M: Tue Jun 18 13:06:54 BRT 2013 root at devel:/data/rpi/rpi/obj/arm.armv6/data/rpi/rpi/src/sys/RPI-B arm
>Description:
While at mountroot prompt the rpi uart driver eats some characters, making very hard to type something right.
ray@ suggested to not enable the uart interrupts in uart_bus_attach() routine for the console device and that seems to also works fine for rpi.
>How-To-Repeat:
Boot a kernel from BOOTP (or boot a kernel from SD card without a valid root partition) and try to type at mountroot prompt. You need to keep the keys pressed for a while to see some output.
>Fix:
Apply the attached patch. It is a copy from the workaround used on uart_dev_imx.c.
Patch attached with submission follows:
Index: dev/uart/uart_dev_pl011.c
===================================================================
--- dev/uart/uart_dev_pl011.c (revision 251700)
+++ dev/uart/uart_dev_pl011.c (working copy)
@@ -273,8 +273,13 @@
struct uart_bas *bas;
bas = &sc->sc_bas;
- /* Enable RX & TX interrupts */
- __uart_setreg(bas, UART_IMSC, (UART_RXREADY | UART_TXEMPTY));
+ /* XXX workaround to have working console on manut prompt */
+ if (sc->sc_sysdev != NULL && sc->sc_sysdev->type == UART_DEV_CONSOLE){
+ /* Don't enable interrupts */
+ } else {
+ /* Enable RX & TX interrupts */
+ __uart_setreg(bas, UART_IMSC, (UART_RXREADY | UART_TXEMPTY));
+ }
/* Clear RX & TX interrupts */
__uart_setreg(bas, UART_ICR, IMSC_MASK_ALL);
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-arm
mailing list