[Avila] gw2201 serial board issues
Chris Lang
clang.gateworks at gmail.com
Wed Jan 9 00:33:25 EST 2008
Mark,
I have spent some time on this issue the last couple of days and have it
boiled down to one thing. It is not an irq issue. I do have a solution,
however it is currently in the form as a hack and I need to clean it up and
better understand it.
To give you a brief synopsis of what I have discovered, the part (xr17d158,
or something like that), is a 16550 compatible part, however a couple of the
registers work a bit different. Due to the registers working different, the
regular 16550/8550 drivers due not set it up correctly, and then when the
interrupt is serviced, it advances the rx register, causing a byte to be
lost. (The interrupts are happening regularly).
FYI, irq 28 is a correct irq, but it will differ dependent on which pci slot
you put it in, I do believe this is the right connector on the top of the
board (if you have the ethernet jacks towards you). By switching it to irq
0, you put the driver into a legacy polling mode (which is not effecient),
however, again due to the fact that the driver does not setup properly, even
in polling mode you will get incomplete data.
Hopefully, by the end of day tomorrow I will be able to post a patch.
Thanks,
Chris Lang
clang at gateworks.com
On 1/7/08, Mark Kelly <mark.kelly at cadre5.com> wrote:
>
> Is anyone using this serial board? It's giving me major headaches.
> I've configure and recompiled the kernel with these options enabled.
>
> CONFIG_SERIAL_8250_PCI=y
> CONFIG_SERIAL_8250_NR_UARTS=10
> CONFIG_SERIAL_8250_RUNTIME_UARTS=10
>
> On boot, I see the board initialized and everything appears to be setup
> correctly as can be seen in this boot log snip:
>
> ixp425_gpio: IXP425 GPIO driver loaded
> Serial: 8250/16550 driver $Revision: 1.90 $ 10 ports, IRQ sharing
> disabled
> serial8250.0: ttyS0 at MMIO 0xc8000000 (irq = 15) is a XScale
> console [ttyS0] enabled
> serial8250.0: ttyS1 at MMIO 0xc8001000 (irq = 13) is a XScale
> PCI: enabling device 0000:00:01.0 (0140 -> 0142)
> 0000:00:01.0: ttyS2 at MMIO 0x48010000 (irq = 28) is a 16550A
> 0000:00:01.0: ttyS3 at MMIO 0x48010200 (irq = 28) is a 16550A
> 0000:00:01.0: ttyS4 at MMIO 0x48010400 (irq = 28) is a 16550A
> 0000:00:01.0: ttyS5 at MMIO 0x48010600 (irq = 28) is a 16550A
> 0000:00:01.0: ttyS6 at MMIO 0x48010800 (irq = 28) is a 16550A
> 0000:00:01.0: ttyS7 at MMIO 0x48010a00 (irq = 28) is a 16550A
> 0000:00:01.0: ttyS8 at MMIO 0x48010c00 (irq = 28) is a 16550A
> 0000:00:01.0: ttyS9 at MMIO 0x48010e00 (irq = 28) is a 16550A
>
> I've installed setserial to set configure the ports, and I've connected
> a 4800baud NMEA gps puck to ttyS6.
>
> at boot setserial shows this for ttyS6
>
> # setserial -G /dev/ttyS6
> /dev/ttyS6 uart 16550A port 0x0000 irq 28 baud_base 921600 spd_normal
> skip_test
>
> if I use picocom to connect to the port:
>
> #picocom -b4800 /dev/ttyS6
>
> it connects, but just sits there and does not stream the NMEA sentences.
> If I hold the space down, it spits out fragments of the sentences, which
> seems to indicate a IRQ problem to me.
>
> if I do:
>
> #setserial /devttyS6 port 0x48010800 irq 28
>
> I end up with the same results
>
> doing:
>
> #setserial /dev/ttyS6 irq 0
>
> and the box starts to stream pieces of the data, but not complete
> sentences. I'm assuming because IRQ0 is being set off at the wrong
> times.
>
> Anyone got any clues on this board?
>
>
>
>
>
>
> serial8250: too much work for irq28
> serial8250: too much work for irq28
> serial8250: too much work for irq28
> serial8250: too much work for irq28
> serial8250: too much work for irq28
> serial8250: too much work for irq28
>
>
> _______________________________________________
> Avila mailing list
> Avila at lists.gateworks.com
> http://lists.gateworks.com/cgi-bin/mailman/listinfo/avila
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.gateworks.com/pipermail/avila/attachments/20080108/1373db03/attachment.htm
More information about the Avila
mailing list