[U-Boot] [PATCH 01/10] mx27: basic cpu support
Scott Wood
scottwood at freescale.com
Mon May 18 19:34:19 CEST 2009
On Mon, May 18, 2009 at 06:59:18PM +0200, Magnus Lilja wrote:
> After having browsed some powerpc code I can find two different ways
> the struct-thing is used:
> Variant A, all members declared volatile:
> struct controller_reg {
> volatile uint32_t reg1;
> volatile uint32_t reg2;
> }
>
> struct controller_reg *controller = 0xCAFE0000;
>
> Or variant B:
> struct controller_reg {
> uint32_t reg1;
> uint32_t reg2;
> }
>
> volatile struct controller_reg *controller = 0xCAFE0000;
Those are both deprecated. There should be no volatile, and you should
use I/O accessors instead.
> Also, is it OK to access the registers using reg = controller->reg1 or
> should we use reg = readl(&controller->reg1)?
The latter. Note that readl is supposed to be little-endian regardless
of host endianness, though ARM's io.h looks a bit weird (there are
multiple definitions of readl protected by ifdefs, and the normal one
does no swapping -- and __mem_pci looks like it would result in a name
conflict). On powerpc we have accessors with explicit endianness.
-Scott
More information about the U-Boot
mailing list