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

Wolfgang Denk
2011-04-01T14:25:52Z

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.

You know my proposal how to implement the driver for your non-standard
chip.

Your patch is rejected.

Best regards,

Wolfgang Denk

--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The universe contains any amount of horrible ways to be woken up,
such as the noise of the mob breaking down the front door, the scream
of fire engines, or the realization that today is the Monday which on
Friday night was a comfortably long way off.
- Terry Pratchett, _Moving Pictures_