[U-Boot] [PATCH 2/6] arch: bcm281xx: Initial commit of bcm281xx architecture code
Tom Rini
trini at ti.com
Wed Jan 29 23:32:30 CET 2014
On Mon, Jan 27, 2014 at 10:53:26AM -0800, Darwin Rambo wrote:
> Add bcm281xx architecture support code including a clock framework and
> chip reset. Define register block base addresses for the bcm281xx
> architecture and create an empty gpio header file required when
> CONFIG_CMD_GPIO is set.
[snip]
> +/* Bitfield operations */
> +
> +/* Produces a mask of set bits covering a range of a 32-bit value */
> +static inline u32 bitfield_mask(u32 shift, u32 width)
> +{
> + return ((1 << width) - 1) << shift;
> +}
> +
> +/* Extract the value of a bitfield found within a given register value */
> +static inline u32 bitfield_extract(u32 reg_val, u32 shift, u32 width)
> +{
> + return (reg_val & bitfield_mask(shift, width)) >> shift;
> +}
> +
> +/* Replace the value of a bitfield found within a given register value */
> +static inline u32 bitfield_replace(u32 reg_val, u32 shift, u32 width, u32 val)
> +{
> + u32 mask = bitfield_mask(shift, width);
> +
> + return (reg_val & ~mask) | (val << shift);
> +}
This all feels horribly generic, isn't there some linux header we've
already got that I can't think off of the top of my head that gives us
these kind of functions?
> + clk_dbg("%s: %s\n", __func__, c->name);
Please juse use debug(...), here and elsewhere.
> +#ifndef offsetof
> +#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
> +#endif
> +
> +#ifndef container_of
> +#define container_of(ptr, type, member) ({ \
> + const typeof(((type *)0)->member) * __mptr = (ptr); \
> + (type *)((char *)__mptr - offsetof(type, member)); })
> +#endif
We already have these..
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140129/c6f1e0d8/attachment.pgp>
More information about the U-Boot
mailing list