[U-Boot] [PATCH 1/5] Tegra2: Add bitfield access macros

Simon Glass sjg at chromium.org
Tue Jun 7 02:38:45 CEST 2011


On Mon, Jun 6, 2011 at 11:50 AM, Wolfgang Denk <wd at denx.de> wrote:
> Dear Simon Glass,
>
[big snip]

Hi Wolfgang,

OK I understand, thank you. How about this approach: we could add a
new macro to io.h, something like:

#define clrsetfield_le32(bitfield, addr, value)  ...

Then caller can define these in a header file:

#define FIELD_MASK 0xf0000
#define FIELD_SHIFT 16

And use this macro to set the bitfield to 6, for example:

clrsetfield_le32(FIELD, &my_device->ctrl, 6)

(this will simply shift the value left 16 bits and apply the supplied mask)

This captures the essence of bitfields, in that we are abstracting the
field under a single name. The change would just add this macro to the
io.h header file.

Does this sound better?

Regards,
Simon

>
> 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 impractical for  the  standard  to  attempt  to  constrain  the
> behavior  of code that does not obey the constraints of the standard.
>                                                          - Doug Gwyn
>


More information about the U-Boot mailing list