GENMASK and FIELD_PREP macro can't get correct bits value of register

I use GENMASK and FIELD_PREP macro to get bits value of register. But it failed to get correct bits value.

#define LP5861_DEV_INITIAL_RESERVED_MSK      GENMASK(7, 3)
#define LP5861_DEV_INITIAL_RESERVED(x)       FIELD_PREP(LP5861_DEV_INITIAL_RESERVED_MSK, x)
#define LP5861_DEV_INITIAL_DATA_REF_MODE_MSK GENMASK(2, 1)
#define LP5861_DEV_INITIAL_DATA_REF_MODE(x)  FIELD_PREP(LP5861_DEV_INITIAL_DATA_REF_MODE_MSK, x)
#define LP5861_DEV_INITIAL_PWM_FRE_MSK       BIT(0)
#define LP5861_DEV_INITIAL_PWM_FRE(x)        FIELD_PREP(LP5861_DEV_INITIAL_PWM_FRE_MSK, x)
const uint8_t u8=0x5e;
devInit.reserved    = LP5861_DEV_INITIAL_RESERVED(u8);
devInit.dataRefMode = LP5861_DEV_INITIAL_DATA_REF_MODE(u8);
devInit.pwmFre      = LP5861_DEV_INITIAL_PWM_FRE(u8);

u8=0x5e
devInit.reserved=0xF0, devInit.dataRefMode=0x4, devInit.pwmFre=0x0

Parents Reply Children
No Data
Related