From: Niko Mauno <[email protected]> Use predefined bit masks in operations where only the magic half or only the count half of the 32-bit value are processed.
Signed-off-by: Niko Mauno <[email protected]> --- drivers/bootcount/bootcount.c | 12 ++++++------ drivers/bootcount/bootcount_at91.c | 7 ++++--- drivers/bootcount/bootcount_davinci.c | 6 +++--- include/bootcount.h | 5 +++++ 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/drivers/bootcount/bootcount.c b/drivers/bootcount/bootcount.c index 343b8a34414..454e50591df 100644 --- a/drivers/bootcount/bootcount.c +++ b/drivers/bootcount/bootcount.c @@ -19,7 +19,7 @@ __weak void bootcount_store(ulong a) uintptr_t flush_end; #if defined(CONFIG_SYS_BOOTCOUNT_SINGLEWORD) - raw_bootcount_store(reg, (CONFIG_SYS_BOOTCOUNT_MAGIC & 0xffff0000) | a); + raw_bootcount_store(reg, (CONFIG_SYS_BOOTCOUNT_MAGIC & BOOTCOUNT_MAGIC_MASK) | a); flush_end = roundup(CONFIG_SYS_BOOTCOUNT_ADDR + 4, CONFIG_SYS_CACHELINE_SIZE); @@ -40,10 +40,10 @@ __weak ulong bootcount_load(void) #if defined(CONFIG_SYS_BOOTCOUNT_SINGLEWORD) u32 tmp = raw_bootcount_load(reg); - if ((tmp & 0xffff0000) != (CONFIG_SYS_BOOTCOUNT_MAGIC & 0xffff0000)) + if ((tmp & BOOTCOUNT_MAGIC_MASK) != (CONFIG_SYS_BOOTCOUNT_MAGIC & BOOTCOUNT_MAGIC_MASK)) return 0; else - return (tmp & 0x0000ffff); + return (tmp & BOOTCOUNT_COUNT_MASK); #else if (raw_bootcount_load(reg + 4) != CONFIG_SYS_BOOTCOUNT_MAGIC) return 0; @@ -74,10 +74,10 @@ static int bootcount_mem_get(struct udevice *dev, u32 *a) if (priv->singleword) { u32 tmp = raw_bootcount_load(reg); - if ((tmp & 0xffff0000) != (magic & 0xffff0000)) + if ((tmp & BOOTCOUNT_MAGIC_MASK) != (magic & BOOTCOUNT_MAGIC_MASK)) return -ENODEV; - *a = (tmp & 0x0000ffff); + *a = (tmp & BOOTCOUNT_COUNT_MASK); } else { if (raw_bootcount_load(reg + 4) != magic) return -ENODEV; @@ -98,7 +98,7 @@ static int bootcount_mem_set(struct udevice *dev, const u32 a) uintptr_t flush_end; if (priv->singleword) { - raw_bootcount_store(reg, (magic & 0xffff0000) | a); + raw_bootcount_store(reg, (magic & BOOTCOUNT_MAGIC_MASK) | a); flush_end = roundup(priv->base + 4, CONFIG_SYS_CACHELINE_SIZE); } else { diff --git a/drivers/bootcount/bootcount_at91.c b/drivers/bootcount/bootcount_at91.c index 1a06db1fb74..1322abe921e 100644 --- a/drivers/bootcount/bootcount_at91.c +++ b/drivers/bootcount/bootcount_at91.c @@ -3,6 +3,7 @@ #include <asm/io.h> #include <asm/arch/hardware.h> #include <asm/arch/at91_gpbr.h> +#include <bootcount.h> /* * We combine the CONFIG_SYS_BOOTCOUNT_MAGIC and bootcount in one 32-bit @@ -13,7 +14,7 @@ void bootcount_store(ulong a) { at91_gpbr_t *gpbr = (at91_gpbr_t *) ATMEL_BASE_GPBR; - writel((CONFIG_SYS_BOOTCOUNT_MAGIC & 0xffff0000) | (a & 0x0000ffff), + writel((CONFIG_SYS_BOOTCOUNT_MAGIC & BOOTCOUNT_MAGIC_MASK) | (a & BOOTCOUNT_COUNT_MASK), &gpbr->reg[AT91_GPBR_INDEX_BOOTCOUNT]); } @@ -22,8 +23,8 @@ ulong bootcount_load(void) at91_gpbr_t *gpbr = (at91_gpbr_t *) ATMEL_BASE_GPBR; ulong val = readl(&gpbr->reg[AT91_GPBR_INDEX_BOOTCOUNT]); - if ((val & 0xffff0000) != (CONFIG_SYS_BOOTCOUNT_MAGIC & 0xffff0000)) + if ((val & BOOTCOUNT_MAGIC_MASK) != (CONFIG_SYS_BOOTCOUNT_MAGIC & BOOTCOUNT_MAGIC_MASK)) return 0; else - return val & 0x0000ffff; + return val & BOOTCOUNT_COUNT_MASK; } diff --git a/drivers/bootcount/bootcount_davinci.c b/drivers/bootcount/bootcount_davinci.c index 6326957d7b0..a03d160a4cd 100644 --- a/drivers/bootcount/bootcount_davinci.c +++ b/drivers/bootcount/bootcount_davinci.c @@ -24,7 +24,7 @@ void bootcount_store(ulong a) writel(RTC_KICK0R_WE, ®->kick0r); writel(RTC_KICK1R_WE, ®->kick1r); raw_bootcount_store(®->scratch2, - (CONFIG_SYS_BOOTCOUNT_MAGIC & 0xffff0000) | (a & 0x0000ffff)); + (CONFIG_SYS_BOOTCOUNT_MAGIC & BOOTCOUNT_MAGIC_MASK) | (a & BOOTCOUNT_COUNT_MASK)); } ulong bootcount_load(void) @@ -34,8 +34,8 @@ ulong bootcount_load(void) (struct davinci_rtc *)CONFIG_SYS_BOOTCOUNT_ADDR; val = raw_bootcount_load(®->scratch2); - if ((val & 0xffff0000) != (CONFIG_SYS_BOOTCOUNT_MAGIC & 0xffff0000)) + if ((val & BOOTCOUNT_MAGIC_MASK) != (CONFIG_SYS_BOOTCOUNT_MAGIC & BOOTCOUNT_MAGIC_MASK)) return 0; else - return val & 0x0000ffff; + return val & BOOTCOUNT_COUNT_MASK; } diff --git a/include/bootcount.h b/include/bootcount.h index 847c0f02d98..86474569d36 100644 --- a/include/bootcount.h +++ b/include/bootcount.h @@ -10,6 +10,7 @@ #include <asm/io.h> #include <asm/byteorder.h> #include <env.h> +#include <linux/bitops.h> #ifdef CONFIG_DM_BOOTCOUNT @@ -59,6 +60,10 @@ int dm_bootcount_set(struct udevice *dev, u32 bootcount); #endif +/* Bit masks for magic and count parts in single word scheme */ +#define BOOTCOUNT_MAGIC_MASK GENMASK(31, 16) +#define BOOTCOUNT_COUNT_MASK GENMASK(15, 0) + /** bootcount_store() - store the current bootcount */ void bootcount_store(ulong); -- 2.47.3

