diff --git a/bdk/utils/util.c b/bdk/utils/util.c index f267236..146c404 100644 --- a/bdk/utils/util.c +++ b/bdk/utils/util.c @@ -30,6 +30,27 @@ extern volatile nyx_storage_t *nyx_str; +u8 bit_count(u32 val) +{ + u8 cnt = 0; + for (u32 i = 0; i < 32; i++) + { + if ((val >> i) & 1) + cnt++; + } + + return cnt; +} + +u32 bit_count_mask(u8 bits) +{ + u32 val = 0; + for (u32 i = 0; i < bits; i++) + val |= 1 << i; + + return val; +} + u32 get_tmr_s() { return RTC(APBDEV_RTC_SECONDS); diff --git a/bdk/utils/util.h b/bdk/utils/util.h index 68da865..ea6daea 100644 --- a/bdk/utils/util.h +++ b/bdk/utils/util.h @@ -84,6 +84,9 @@ typedef struct _nyx_storage_t emc_table_t mtc_table[10]; } nyx_storage_t; +u8 bit_count(u32 val); +u32 bit_count_mask(u8 bits); + void exec_cfg(u32 *base, const cfg_op_t *ops, u32 num_ops); u32 crc32_calc(u32 crc, const u8 *buf, u32 len);