kernel 2.6.15: cpm_uart driver broken?

David Jander david.jander at protonic.nl
Wed Apr 19 00:05:40 EST 2006


On Tuesday 18 April 2006 15:22, Vitaly Bordug wrote:
>[..]
> Well, existing code works just fine on 885ads and 866ads, that use SMC1 and
> SMC2 as UARTs.

Interesting.

> > I'm pretty sure the following is wrong, but I can't seem to fix it
> > either. This seems to apply for both PQ and PQ2 type uarts:
> > from drivers/serial/cpm_uart/cpm_uart_cpm1.c (line 190):
>
> That's wrong - cpm_uart_cpm1.c applies to PQ only...

I know. cpm_uart_cpm2.c contains the same code, so it should be as broken as 
the cpm_uart_cpm1.c.

>[...]
> Well, since it works on other boards, and kmalloc stuff seems to sorta work
> as well, then I guess reason is screwed DMA thing for your board.
> Check/alter CONFIG_CONSISTENT_* things and see if it will help.

I did not touch de defaults. What are the rules to change them? What do I have 
to look out for?
CONFIG_CONSISTENT_START = 0xff100000 and I suspect a problem here if I was 
using MTD (currently disabled) since flash is at physical adress 
0xfe000000-0xffffffff on my board. Isn't MTD going to io_remap that area to 
that same virtual adress? How's that supposed to work then?
I changed CONFIG_CONSISTENT_START to 0xfd100000 and now the system freezes 
when I write to the serial port :-(

> And, try to just replace dma_alloc_.. with kmalloc (not changing rx_buf
> etc.) and reproduce the same behavior you had. BTW, rx_buf and tx_buf are
> never used actually in the code, hereby there is no difference what values
> they contain...

Argh. Code looks obviously broken, but since it isn't used, it just works. 
That is not good! We should fix that either way then.

Thanks,

-- 
David Jander



More information about the Linuxppc-embedded mailing list