SMI_DATA_SHIFT
(((uint32_t)val << SMI_DATA_SHIFT) & SMI_DATA_MASK) |
*val = (data & SMI_DATA_MASK) >> SMI_DATA_SHIFT;