struct mtd_info *mtd = &nor->mtd;
        u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
        u8 tb_mask = SR_TB_BIT5;
-       int shift = ffs(mask) - 1;
        int pow;
 
        if (nor->flags & SNOR_F_HAS_SR_TB_BIT6)
                *ofs = 0;
                *len = 0;
        } else {
-               pow = ((sr & mask) ^ mask) >> shift;
+               pow = ((sr & mask) ^ mask) >> SR_BP_SHIFT;
                *len = mtd->size >> pow;
                if (nor->flags & SNOR_F_HAS_SR_TB && sr & tb_mask)
                        *ofs = 0;
        int ret, status_old, status_new;
        u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
        u8 tb_mask = SR_TB_BIT5;
-       u8 shift = ffs(mask) - 1, pow, val;
+       u8 pow, val;
        loff_t lock_len;
        bool can_be_top = true, can_be_bottom = nor->flags & SNOR_F_HAS_SR_TB;
        bool use_top;
         *   pow = ceil(log2(size / len)) = log2(size) - floor(log2(len))
         */
        pow = ilog2(mtd->size) - ilog2(lock_len);
-       val = mask - (pow << shift);
+       val = mask - (pow << SR_BP_SHIFT);
        if (val & ~mask)
                return -EINVAL;
        /* Don't "lock" with no region! */
        int ret, status_old, status_new;
        u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
        u8 tb_mask = SR_TB_BIT5;
-       u8 shift = ffs(mask) - 1, pow, val;
+       u8 pow, val;
        loff_t lock_len;
        bool can_be_top = true, can_be_bottom = nor->flags & SNOR_F_HAS_SR_TB;
        bool use_top;
        if (lock_len == 0) {
                val = 0; /* fully unlocked */
        } else {
-               val = mask - (pow << shift);
+               val = mask - (pow << SR_BP_SHIFT);
                /* Some power-of-two sizes are not supported */
                if (val & ~mask)
                        return -EINVAL;