[U-Boot] [PATCH] serial: ns16550: fix different reg size access

Lei Wen
2011-04-01T14:34:27Z

Hi Wolfgang,

On Fri, Apr 1, 2011 at 10:25 PM, Wolfgang Denk <wd@denx.de> wrote:
> Dear Lei Wen,
>
> In message <AANLkTi=q-cj-Q5iNqiQpEddkH1DxUAR1H_5wenaES7bE@mail.gmail.com> you wrote:
>>
>> >> > I don't think so. You still use just a single writel() call then. ?To
>> >> > leave the other bits untouched, you would have to perform a readl()
>> >> > first, then insert one data byte, and then write it back. ?Your patch
>> >> > does not do that.
>> >>
>> >> My original patch is like below, so where it call writel?...
>> >> +#elif (CONFIG_SYS_NS16550_REG_SIZE == 1) || (CONFIG_SYS_NS16550_REG_SIZE == -1)
>> >> +#ifdef CONFIG_SYS_NS16550_PORT_MAPPED
>> >> +#define serial_out(x, y) ? ? ? outb(x, y)
>> >> +#define serial_in(y) ? ? ? ? ? inb(y)
>> >> +#else
>> >> +#define serial_out(x, y) ? ? ? writeb(x, y)
>> >> +#define serial_in(y) ? ? ? ? ? readb(y)
>> >
>> > If you use writeb() [as the current driver would do as well}, then how
>> > do you expect to set this bit 8 (which is in the next byte) to 0 as
>> > you claim you have to?
>>
>> As I explain, if set CONFIG_SYS_NS16550_REG_SIZE to 4, and
>> set CONFIG_SYS_NS16550_MAX_REG_SIZE also to 4, then the serial_out
>> becomes writel. :)
>
> Right - which is exactly what I said, and which you denied.
>
> I give up, I have other things to do as well.

Just a question to clarify... What your point I denied, that is really
confused me...
I think in this thread, I explain to you, my patch could recover what original
CONFIG_SYS_NS16550_REG_SIZE means...

Since you reject, I have nothing else to say...

Best regards,
Lei