Thread (16 messages) 16 messages, 4 authors, 2013-12-10

[PATCH v2] serial: 8250_dw: Improve unwritable LCR workaround

From: Ezequiel Garcia <hidden>
Date: 2013-12-04 13:01:56
Also in: linux-serial, lkml

On Thu, Nov 28, 2013 at 04:53:37PM -0300, Ezequiel Garcia wrote:
On Thu, Nov 28, 2013 at 04:47:20PM -0300, Ezequiel Garcia wrote:
quoted
Hi Thomas, Tim:

On Thu, Nov 28, 2013 at 09:30:34AM +0100, Thomas Petazzoni wrote:
quoted
Dear Ezequiel Garcia,

On Wed, 27 Nov 2013 15:54:49 -0300, Ezequiel Garcia wrote:
quoted
quoted
An external device may be keeping the UART busy and preventing LCR
from being written.

What device is attached to ttyS1?
There's no device attached at ttyS1. I've just tested this in another
box and it seems the same error is obtained on each unused port:
Are you sure about this? I suppose you're testing on the Armada XP GP
board, and this board has a 4 ports FTDI chip, and according to the
board schematics the four UARTs are all connected to the FTDI chip. So
from the SoC perspective, ttyS1 is connected to something, as far as I
can understand. Or maybe you also tested Armada XP DB ?
Yeah, sorry about that. I missed the FTDI chip. As Thomas says the XP GP
board I'm testing this on, has its four UARTs connected to a FTDI chip.

Changing the console port by setting "console=ttyS1,115200" gives this:

[..]
Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
dw-apb-uart d0012000.serial: Couldn't set LCR to 191
dw-apb-uart d0012000.serial: Couldn't set LCR to 191
dw-apb-uart d0012000.serial: Couldn't set LCR to 224
dw-apb-uart d0012000.serial: Couldn't set LCR to 224
d0012000.serial: ttyS0 at MMIO 0xd0012000 (irq = 17, base_baud = 15625000) is a 16550A
dw-apb-uart d0012100.serial: Couldn't set LCR to 191
dw-apb-uart d0012100.serial: Couldn't set LCR to 191
dw-apb-uart d0012100.serial: Couldn't set LCR to 224
dw-apb-uart d0012100.serial: Couldn't set LCR to 224
d0012100.serial: ttyS1 at MMIO 0xd0012100 (irq = 18, base_baud = 15625000) is a 16550A
console [ttyS1] enabled
dw-apb-uart d0012200.serial: Couldn't set LCR to 191
dw-apb-uart d0012200.serial: Couldn't set LCR to 191
dw-apb-uart d0012200.serial: Couldn't set LCR to 224
dw-apb-uart d0012200.serial: Couldn't set LCR to 224
d0012200.serial: ttyS2 at MMIO 0xd0012200 (irq = 31, base_baud = 15625000) is a 16550A
dw-apb-uart d0012300.serial: Couldn't set LCR to 191
dw-apb-uart d0012300.serial: Couldn't set LCR to 191
dw-apb-uart d0012300.serial: Couldn't set LCR to 224
dw-apb-uart d0012300.serial: Couldn't set LCR to 224
d0012300.serial: ttyS3 at MMIO 0xd0012300 (irq = 32, base_baud = 15625000) is a 16550A

So we get the "Couldn't set" message in all four ports.

Tim: Any ideas?
And another thing: the weird output on the console looks related to the
early boot console. If I enable 'earlyprintk' on ttyS0 but set the console
on ttyS1, this is what I get on ttyS0:

bootconsole [earlycon0] enabled
[..]
Kernel command line: earlyprintk console=ttyS1,115200 root=/dev/nfs rw nfsroot=192.168.0.45:/opt/buildrootfs,v3, ip=192.168.0.159:192.168.0.45:192.168.0.1:255.255.255.0:develboard:eth0:on rootwait
[..]
Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
???????????????????????????????????????????????
Welcome to Buildroot
buildroot login: 

Hope this helps you understand what's going on...
Gentle ping?

Any ideas about those weird characters?

Thanks!
-- 
Ezequiel Garc?a, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help