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

Lei Wen adrian.wenl at gmail.com
Fri Apr 1 16:34:27 CEST 2011


Hi Wolfgang,

On Fri, Apr 1, 2011 at 10:25 PM, Wolfgang Denk <wd at denx.de> wrote:
> Dear Lei Wen,
>
> In message <AANLkTi=q-cj-Q5iNqiQpEddkH1DxUAR1H_5wenaES7bE at 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


More information about the U-Boot mailing list