[U-Boot] [PATCH v2] ns16550: change to allow 32 bit access to registers

Wolfgang Denk wd at denx.de
Thu Aug 25 22:46:41 CEST 2011


Dear Dave Aldridge,

In message <1314286215-29470-1-git-send-email-fovsoft at gmail.com> you wrote:
>
> @@ -19,6 +19,12 @@
>  #ifdef CONFIG_SYS_NS16550_PORT_MAPPED
>  #define serial_out(x,y)	outb(x,(ulong)y)
>  #define serial_in(y)	inb((ulong)y)
> +#elif defined(CONFIG_SYS_NS16550_MEM32) && (CONFIG_SYS_NS16550_REG_SIZE > 0)
> +#define serial_out(x,y) writel(cpu_to_be32(x),y)
> +#define serial_in(y) 	cpu_to_be32(readl(y))
> +#elif defined(CONFIG_SYS_NS16550_MEM32) && (CONFIG_SYS_NS16550_REG_SIZE < 0)
> +#define serial_out(x,y) writel(cpu_to_le32(x),y)
> +#define serial_in(y) 	cpu_to_le32(readl(y))

This looks broken to me.  Why are you suing little endian accessors
(readl() and writel() are originally intended as PCI bus accessors and
thus littelendian) in the first place?

Why don't you use in_le32()/out_le32() resp. in_be32()/out_be32()
directly?

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
It is a human characteristic to love little  animals,  especially  if
they're attractive in some way.
	-- McCoy, "The Trouble with Tribbles", stardate 4525.6


More information about the U-Boot mailing list