sequence_id = MHI_RANDOM_U32_NONZERO(BHIE_RXVECSTATUS_SEQNUM_BMSK);
 
        mhi_write_reg_field(mhi_cntrl, base, BHIE_RXVECDB_OFFS,
-                           BHIE_RXVECDB_SEQNUM_BMSK, BHIE_RXVECDB_SEQNUM_SHFT,
-                           sequence_id);
+                           BHIE_RXVECDB_SEQNUM_BMSK, sequence_id);
 
        dev_dbg(dev, "Address: %p and len: 0x%zx sequence: %u\n",
                &mhi_buf->dma_addr, mhi_buf->len, sequence_id);
 
        while (retry--) {
                ret = mhi_read_reg_field(mhi_cntrl, base, BHIE_RXVECSTATUS_OFFS,
-                                        BHIE_RXVECSTATUS_STATUS_BMSK,
-                                        BHIE_RXVECSTATUS_STATUS_SHFT,
-                                        &rx_status);
+                                        BHIE_RXVECSTATUS_STATUS_BMSK, &rx_status);
                if (ret)
                        return -EIO;
 
                           mhi_read_reg_field(mhi_cntrl, base,
                                              BHIE_RXVECSTATUS_OFFS,
                                              BHIE_RXVECSTATUS_STATUS_BMSK,
-                                             BHIE_RXVECSTATUS_STATUS_SHFT,
                                              &rx_status) || rx_status,
                           msecs_to_jiffies(mhi_cntrl->timeout_ms));
 
        mhi_write_reg(mhi_cntrl, base, BHIE_TXVECSIZE_OFFS, mhi_buf->len);
 
        mhi_write_reg_field(mhi_cntrl, base, BHIE_TXVECDB_OFFS,
-                           BHIE_TXVECDB_SEQNUM_BMSK, BHIE_TXVECDB_SEQNUM_SHFT,
-                           sequence_id);
+                           BHIE_TXVECDB_SEQNUM_BMSK, sequence_id);
        read_unlock_bh(pm_lock);
 
        /* Wait for the image download to complete */
                                 mhi_read_reg_field(mhi_cntrl, base,
                                                   BHIE_TXVECSTATUS_OFFS,
                                                   BHIE_TXVECSTATUS_STATUS_BMSK,
-                                                  BHIE_TXVECSTATUS_STATUS_SHFT,
                                                   &tx_status) || tx_status,
                                 msecs_to_jiffies(mhi_cntrl->timeout_ms));
        if (MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state) ||
        ret = wait_event_timeout(mhi_cntrl->state_event,
                           MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state) ||
                           mhi_read_reg_field(mhi_cntrl, base, BHI_STATUS,
-                                             BHI_STATUS_MASK, BHI_STATUS_SHIFT,
-                                             &tx_status) || tx_status,
+                                             BHI_STATUS_MASK, &tx_status) || tx_status,
                           msecs_to_jiffies(mhi_cntrl->timeout_ms));
        if (MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state))
                goto invalid_pm_state;
 
 
                seq_printf(m, "Index: %d intmod count: %lu time: %lu",
                           i, (le32_to_cpu(er_ctxt->intmod) & EV_CTX_INTMODC_MASK) >>
-                          EV_CTX_INTMODC_SHIFT,
+                          __ffs(EV_CTX_INTMODC_MASK),
                           (le32_to_cpu(er_ctxt->intmod) & EV_CTX_INTMODT_MASK) >>
-                          EV_CTX_INTMODT_SHIFT);
+                          __ffs(EV_CTX_INTMODT_MASK));
 
                seq_printf(m, " base: 0x%0llx len: 0x%llx", le64_to_cpu(er_ctxt->rbase),
                           le64_to_cpu(er_ctxt->rlen));
                seq_printf(m,
                           "%s(%u) state: 0x%lx brstmode: 0x%lx pollcfg: 0x%lx",
                           mhi_chan->name, mhi_chan->chan, (le32_to_cpu(chan_ctxt->chcfg) &
-                          CHAN_CTX_CHSTATE_MASK) >> CHAN_CTX_CHSTATE_SHIFT,
+                          CHAN_CTX_CHSTATE_MASK) >> __ffs(CHAN_CTX_CHSTATE_MASK),
                           (le32_to_cpu(chan_ctxt->chcfg) & CHAN_CTX_BRSTMODE_MASK) >>
-                          CHAN_CTX_BRSTMODE_SHIFT, (le32_to_cpu(chan_ctxt->chcfg) &
-                          CHAN_CTX_POLLCFG_MASK) >> CHAN_CTX_POLLCFG_SHIFT);
+                          __ffs(CHAN_CTX_BRSTMODE_MASK), (le32_to_cpu(chan_ctxt->chcfg) &
+                          CHAN_CTX_POLLCFG_MASK) >> __ffs(CHAN_CTX_POLLCFG_MASK));
 
                seq_printf(m, " type: 0x%x event ring: %u", le32_to_cpu(chan_ctxt->chtype),
                           le32_to_cpu(chan_ctxt->erindex));
 
  *
  */
 
+#include <linux/bitfield.h>
 #include <linux/debugfs.h>
 #include <linux/device.h>
 #include <linux/dma-direction.h>
 
                tmp = le32_to_cpu(chan_ctxt->chcfg);
                tmp &= ~CHAN_CTX_CHSTATE_MASK;
-               tmp |= (MHI_CH_STATE_DISABLED << CHAN_CTX_CHSTATE_SHIFT);
+               tmp |= FIELD_PREP(CHAN_CTX_CHSTATE_MASK, MHI_CH_STATE_DISABLED);
                tmp &= ~CHAN_CTX_BRSTMODE_MASK;
-               tmp |= (mhi_chan->db_cfg.brstmode << CHAN_CTX_BRSTMODE_SHIFT);
+               tmp |= FIELD_PREP(CHAN_CTX_BRSTMODE_MASK, mhi_chan->db_cfg.brstmode);
                tmp &= ~CHAN_CTX_POLLCFG_MASK;
-               tmp |= (mhi_chan->db_cfg.pollcfg << CHAN_CTX_POLLCFG_SHIFT);
+               tmp |= FIELD_PREP(CHAN_CTX_POLLCFG_MASK, mhi_chan->db_cfg.pollcfg);
                chan_ctxt->chcfg = cpu_to_le32(tmp);
 
                chan_ctxt->chtype = cpu_to_le32(mhi_chan->type);
                tmp = le32_to_cpu(er_ctxt->intmod);
                tmp &= ~EV_CTX_INTMODC_MASK;
                tmp &= ~EV_CTX_INTMODT_MASK;
-               tmp |= (mhi_event->intmod << EV_CTX_INTMODT_SHIFT);
+               tmp |= FIELD_PREP(EV_CTX_INTMODT_MASK, mhi_event->intmod);
                er_ctxt->intmod = cpu_to_le32(tmp);
 
                er_ctxt->ertype = cpu_to_le32(MHI_ER_TYPE_VALID);
        struct {
                u32 offset;
                u32 mask;
-               u32 shift;
                u32 val;
        } reg_info[] = {
                {
-                       CCABAP_HIGHER, U32_MAX, 0,
+                       CCABAP_HIGHER, U32_MAX,
                        upper_32_bits(mhi_cntrl->mhi_ctxt->chan_ctxt_addr),
                },
                {
-                       CCABAP_LOWER, U32_MAX, 0,
+                       CCABAP_LOWER, U32_MAX,
                        lower_32_bits(mhi_cntrl->mhi_ctxt->chan_ctxt_addr),
                },
                {
-                       ECABAP_HIGHER, U32_MAX, 0,
+                       ECABAP_HIGHER, U32_MAX,
                        upper_32_bits(mhi_cntrl->mhi_ctxt->er_ctxt_addr),
                },
                {
-                       ECABAP_LOWER, U32_MAX, 0,
+                       ECABAP_LOWER, U32_MAX,
                        lower_32_bits(mhi_cntrl->mhi_ctxt->er_ctxt_addr),
                },
                {
-                       CRCBAP_HIGHER, U32_MAX, 0,
+                       CRCBAP_HIGHER, U32_MAX,
                        upper_32_bits(mhi_cntrl->mhi_ctxt->cmd_ctxt_addr),
                },
                {
-                       CRCBAP_LOWER, U32_MAX, 0,
+                       CRCBAP_LOWER, U32_MAX,
                        lower_32_bits(mhi_cntrl->mhi_ctxt->cmd_ctxt_addr),
                },
                {
-                       MHICFG, MHICFG_NER_MASK, MHICFG_NER_SHIFT,
+                       MHICFG, MHICFG_NER_MASK,
                        mhi_cntrl->total_ev_rings,
                },
                {
-                       MHICFG, MHICFG_NHWER_MASK, MHICFG_NHWER_SHIFT,
+                       MHICFG, MHICFG_NHWER_MASK,
                        mhi_cntrl->hw_ev_rings,
                },
                {
-                       MHICTRLBASE_HIGHER, U32_MAX, 0,
+                       MHICTRLBASE_HIGHER, U32_MAX,
                        upper_32_bits(mhi_cntrl->iova_start),
                },
                {
-                       MHICTRLBASE_LOWER, U32_MAX, 0,
+                       MHICTRLBASE_LOWER, U32_MAX,
                        lower_32_bits(mhi_cntrl->iova_start),
                },
                {
-                       MHIDATABASE_HIGHER, U32_MAX, 0,
+                       MHIDATABASE_HIGHER, U32_MAX,
                        upper_32_bits(mhi_cntrl->iova_start),
                },
                {
-                       MHIDATABASE_LOWER, U32_MAX, 0,
+                       MHIDATABASE_LOWER, U32_MAX,
                        lower_32_bits(mhi_cntrl->iova_start),
                },
                {
-                       MHICTRLLIMIT_HIGHER, U32_MAX, 0,
+                       MHICTRLLIMIT_HIGHER, U32_MAX,
                        upper_32_bits(mhi_cntrl->iova_stop),
                },
                {
-                       MHICTRLLIMIT_LOWER, U32_MAX, 0,
+                       MHICTRLLIMIT_LOWER, U32_MAX,
                        lower_32_bits(mhi_cntrl->iova_stop),
                },
                {
-                       MHIDATALIMIT_HIGHER, U32_MAX, 0,
+                       MHIDATALIMIT_HIGHER, U32_MAX,
                        upper_32_bits(mhi_cntrl->iova_stop),
                },
                {
-                       MHIDATALIMIT_LOWER, U32_MAX, 0,
+                       MHIDATALIMIT_LOWER, U32_MAX,
                        lower_32_bits(mhi_cntrl->iova_stop),
                },
                { 0, 0, 0 }
        dev_dbg(dev, "Initializing MHI registers\n");
 
        /* Read channel db offset */
-       ret = mhi_read_reg_field(mhi_cntrl, base, CHDBOFF, CHDBOFF_CHDBOFF_MASK,
-                                CHDBOFF_CHDBOFF_SHIFT, &val);
+       ret = mhi_read_reg(mhi_cntrl, base, CHDBOFF, &val);
        if (ret) {
                dev_err(dev, "Unable to read CHDBOFF register\n");
                return -EIO;
                mhi_chan->tre_ring.db_addr = base + val;
 
        /* Read event ring db offset */
-       ret = mhi_read_reg_field(mhi_cntrl, base, ERDBOFF, ERDBOFF_ERDBOFF_MASK,
-                                ERDBOFF_ERDBOFF_SHIFT, &val);
+       ret = mhi_read_reg(mhi_cntrl, base, ERDBOFF, &val);
        if (ret) {
                dev_err(dev, "Unable to read ERDBOFF register\n");
                return -EIO;
        /* Write to MMIO registers */
        for (i = 0; reg_info[i].offset; i++)
                mhi_write_reg_field(mhi_cntrl, base, reg_info[i].offset,
-                                   reg_info[i].mask, reg_info[i].shift,
-                                   reg_info[i].val);
+                                   reg_info[i].mask, reg_info[i].val);
 
        return 0;
 }
 
        tmp = le32_to_cpu(chan_ctxt->chcfg);
        tmp &= ~CHAN_CTX_CHSTATE_MASK;
-       tmp |= (MHI_CH_STATE_DISABLED << CHAN_CTX_CHSTATE_SHIFT);
+       tmp |= FIELD_PREP(CHAN_CTX_CHSTATE_MASK, MHI_CH_STATE_DISABLED);
        chan_ctxt->chcfg = cpu_to_le32(tmp);
 
        /* Update to all cores */
 
        tmp = le32_to_cpu(chan_ctxt->chcfg);
        tmp &= ~CHAN_CTX_CHSTATE_MASK;
-       tmp |= (MHI_CH_STATE_ENABLED << CHAN_CTX_CHSTATE_SHIFT);
+       tmp |= FIELD_PREP(CHAN_CTX_CHSTATE_MASK, MHI_CH_STATE_ENABLED);
        chan_ctxt->chcfg = cpu_to_le32(tmp);
 
        chan_ctxt->rbase = cpu_to_le64(tre_ring->iommu_base);
        if (ret)
                goto err_destroy_wq;
 
-       mhi_cntrl->family_number = (soc_info & SOC_HW_VERSION_FAM_NUM_BMSK) >>
-                                       SOC_HW_VERSION_FAM_NUM_SHFT;
-       mhi_cntrl->device_number = (soc_info & SOC_HW_VERSION_DEV_NUM_BMSK) >>
-                                       SOC_HW_VERSION_DEV_NUM_SHFT;
-       mhi_cntrl->major_version = (soc_info & SOC_HW_VERSION_MAJOR_VER_BMSK) >>
-                                       SOC_HW_VERSION_MAJOR_VER_SHFT;
-       mhi_cntrl->minor_version = (soc_info & SOC_HW_VERSION_MINOR_VER_BMSK) >>
-                                       SOC_HW_VERSION_MINOR_VER_SHFT;
+       mhi_cntrl->family_number = FIELD_GET(SOC_HW_VERSION_FAM_NUM_BMSK, soc_info);
+       mhi_cntrl->device_number = FIELD_GET(SOC_HW_VERSION_DEV_NUM_BMSK, soc_info);
+       mhi_cntrl->major_version = FIELD_GET(SOC_HW_VERSION_MAJOR_VER_BMSK, soc_info);
+       mhi_cntrl->minor_version = FIELD_GET(SOC_HW_VERSION_MINOR_VER_BMSK, soc_info);
 
        mhi_cntrl->index = ida_alloc(&mhi_controller_ida, GFP_KERNEL);
        if (mhi_cntrl->index < 0) {
 
 extern struct bus_type mhi_bus_type;
 
 #define MHIREGLEN (0x0)
-#define MHIREGLEN_MHIREGLEN_MASK (0xFFFFFFFF)
-#define MHIREGLEN_MHIREGLEN_SHIFT (0)
 
 #define MHIVER (0x8)
-#define MHIVER_MHIVER_MASK (0xFFFFFFFF)
-#define MHIVER_MHIVER_SHIFT (0)
 
 #define MHICFG (0x10)
-#define MHICFG_NHWER_MASK (0xFF000000)
-#define MHICFG_NHWER_SHIFT (24)
-#define MHICFG_NER_MASK (0xFF0000)
-#define MHICFG_NER_SHIFT (16)
-#define MHICFG_NHWCH_MASK (0xFF00)
-#define MHICFG_NHWCH_SHIFT (8)
-#define MHICFG_NCH_MASK (0xFF)
-#define MHICFG_NCH_SHIFT (0)
+#define MHICFG_NHWER_MASK (GENMASK(31, 24))
+#define MHICFG_NER_MASK (GENMASK(23, 16))
+#define MHICFG_NHWCH_MASK (GENMASK(15, 8))
+#define MHICFG_NCH_MASK (GENMASK(7, 0))
 
 #define CHDBOFF (0x18)
-#define CHDBOFF_CHDBOFF_MASK (0xFFFFFFFF)
-#define CHDBOFF_CHDBOFF_SHIFT (0)
 
 #define ERDBOFF (0x20)
-#define ERDBOFF_ERDBOFF_MASK (0xFFFFFFFF)
-#define ERDBOFF_ERDBOFF_SHIFT (0)
 
 #define BHIOFF (0x28)
-#define BHIOFF_BHIOFF_MASK (0xFFFFFFFF)
-#define BHIOFF_BHIOFF_SHIFT (0)
 
 #define BHIEOFF (0x2C)
-#define BHIEOFF_BHIEOFF_MASK (0xFFFFFFFF)
-#define BHIEOFF_BHIEOFF_SHIFT (0)
 
 #define DEBUGOFF (0x30)
-#define DEBUGOFF_DEBUGOFF_MASK (0xFFFFFFFF)
-#define DEBUGOFF_DEBUGOFF_SHIFT (0)
 
 #define MHICTRL (0x38)
-#define MHICTRL_MHISTATE_MASK (0x0000FF00)
-#define MHICTRL_MHISTATE_SHIFT (8)
-#define MHICTRL_RESET_MASK (0x2)
-#define MHICTRL_RESET_SHIFT (1)
+#define MHICTRL_MHISTATE_MASK (GENMASK(15, 8))
+#define MHICTRL_RESET_MASK (BIT(1))
 
 #define MHISTATUS (0x48)
-#define MHISTATUS_MHISTATE_MASK (0x0000FF00)
-#define MHISTATUS_MHISTATE_SHIFT (8)
-#define MHISTATUS_SYSERR_MASK (0x4)
-#define MHISTATUS_SYSERR_SHIFT (2)
-#define MHISTATUS_READY_MASK (0x1)
-#define MHISTATUS_READY_SHIFT (0)
+#define MHISTATUS_MHISTATE_MASK (GENMASK(15, 8))
+#define MHISTATUS_SYSERR_MASK (BIT(2))
+#define MHISTATUS_READY_MASK (BIT(0))
 
 #define CCABAP_LOWER (0x58)
-#define CCABAP_LOWER_CCABAP_LOWER_MASK (0xFFFFFFFF)
-#define CCABAP_LOWER_CCABAP_LOWER_SHIFT (0)
 
 #define CCABAP_HIGHER (0x5C)
-#define CCABAP_HIGHER_CCABAP_HIGHER_MASK (0xFFFFFFFF)
-#define CCABAP_HIGHER_CCABAP_HIGHER_SHIFT (0)
 
 #define ECABAP_LOWER (0x60)
-#define ECABAP_LOWER_ECABAP_LOWER_MASK (0xFFFFFFFF)
-#define ECABAP_LOWER_ECABAP_LOWER_SHIFT (0)
 
 #define ECABAP_HIGHER (0x64)
-#define ECABAP_HIGHER_ECABAP_HIGHER_MASK (0xFFFFFFFF)
-#define ECABAP_HIGHER_ECABAP_HIGHER_SHIFT (0)
 
 #define CRCBAP_LOWER (0x68)
-#define CRCBAP_LOWER_CRCBAP_LOWER_MASK (0xFFFFFFFF)
-#define CRCBAP_LOWER_CRCBAP_LOWER_SHIFT (0)
 
 #define CRCBAP_HIGHER (0x6C)
-#define CRCBAP_HIGHER_CRCBAP_HIGHER_MASK (0xFFFFFFFF)
-#define CRCBAP_HIGHER_CRCBAP_HIGHER_SHIFT (0)
 
 #define CRDB_LOWER (0x70)
-#define CRDB_LOWER_CRDB_LOWER_MASK (0xFFFFFFFF)
-#define CRDB_LOWER_CRDB_LOWER_SHIFT (0)
 
 #define CRDB_HIGHER (0x74)
-#define CRDB_HIGHER_CRDB_HIGHER_MASK (0xFFFFFFFF)
-#define CRDB_HIGHER_CRDB_HIGHER_SHIFT (0)
 
 #define MHICTRLBASE_LOWER (0x80)
-#define MHICTRLBASE_LOWER_MHICTRLBASE_LOWER_MASK (0xFFFFFFFF)
-#define MHICTRLBASE_LOWER_MHICTRLBASE_LOWER_SHIFT (0)
 
 #define MHICTRLBASE_HIGHER (0x84)
-#define MHICTRLBASE_HIGHER_MHICTRLBASE_HIGHER_MASK (0xFFFFFFFF)
-#define MHICTRLBASE_HIGHER_MHICTRLBASE_HIGHER_SHIFT (0)
 
 #define MHICTRLLIMIT_LOWER (0x88)
-#define MHICTRLLIMIT_LOWER_MHICTRLLIMIT_LOWER_MASK (0xFFFFFFFF)
-#define MHICTRLLIMIT_LOWER_MHICTRLLIMIT_LOWER_SHIFT (0)
 
 #define MHICTRLLIMIT_HIGHER (0x8C)
-#define MHICTRLLIMIT_HIGHER_MHICTRLLIMIT_HIGHER_MASK (0xFFFFFFFF)
-#define MHICTRLLIMIT_HIGHER_MHICTRLLIMIT_HIGHER_SHIFT (0)
 
 #define MHIDATABASE_LOWER (0x98)
-#define MHIDATABASE_LOWER_MHIDATABASE_LOWER_MASK (0xFFFFFFFF)
-#define MHIDATABASE_LOWER_MHIDATABASE_LOWER_SHIFT (0)
 
 #define MHIDATABASE_HIGHER (0x9C)
-#define MHIDATABASE_HIGHER_MHIDATABASE_HIGHER_MASK (0xFFFFFFFF)
-#define MHIDATABASE_HIGHER_MHIDATABASE_HIGHER_SHIFT (0)
 
 #define MHIDATALIMIT_LOWER (0xA0)
-#define MHIDATALIMIT_LOWER_MHIDATALIMIT_LOWER_MASK (0xFFFFFFFF)
-#define MHIDATALIMIT_LOWER_MHIDATALIMIT_LOWER_SHIFT (0)
 
 #define MHIDATALIMIT_HIGHER (0xA4)
-#define MHIDATALIMIT_HIGHER_MHIDATALIMIT_HIGHER_MASK (0xFFFFFFFF)
-#define MHIDATALIMIT_HIGHER_MHIDATALIMIT_HIGHER_SHIFT (0)
 
 /* Host request register */
 #define MHI_SOC_RESET_REQ_OFFSET (0xB0)
 #define BHI_IMGSIZE (0x10)
 #define BHI_RSVD1 (0x14)
 #define BHI_IMGTXDB (0x18)
-#define BHI_TXDB_SEQNUM_BMSK (0x3FFFFFFF)
-#define BHI_TXDB_SEQNUM_SHFT (0)
+#define BHI_TXDB_SEQNUM_BMSK (GENMASK(29, 0))
 #define BHI_RSVD2 (0x1C)
 #define BHI_INTVEC (0x20)
 #define BHI_RSVD3 (0x24)
 #define BHI_MSMHWID(n) (0x4C + (0x4 * (n)))
 #define BHI_OEMPKHASH(n) (0x64 + (0x4 * (n)))
 #define BHI_RSVD5 (0xC4)
-#define BHI_STATUS_MASK (0xC0000000)
-#define BHI_STATUS_SHIFT (30)
+#define BHI_STATUS_MASK (GENMASK(31, 30))
 #define BHI_STATUS_ERROR (3)
 #define BHI_STATUS_SUCCESS (2)
 #define BHI_STATUS_RESET (0)
 #define BHIE_TXVECADDR_HIGH_OFFS (0x0030)
 #define BHIE_TXVECSIZE_OFFS (0x0034)
 #define BHIE_TXVECDB_OFFS (0x003C)
-#define BHIE_TXVECDB_SEQNUM_BMSK (0x3FFFFFFF)
-#define BHIE_TXVECDB_SEQNUM_SHFT (0)
+#define BHIE_TXVECDB_SEQNUM_BMSK (GENMASK(29, 0))
 #define BHIE_TXVECSTATUS_OFFS (0x0044)
-#define BHIE_TXVECSTATUS_SEQNUM_BMSK (0x3FFFFFFF)
-#define BHIE_TXVECSTATUS_SEQNUM_SHFT (0)
-#define BHIE_TXVECSTATUS_STATUS_BMSK (0xC0000000)
-#define BHIE_TXVECSTATUS_STATUS_SHFT (30)
+#define BHIE_TXVECSTATUS_SEQNUM_BMSK (GENMASK(29, 0))
+#define BHIE_TXVECSTATUS_STATUS_BMSK (GENMASK(31, 30))
 #define BHIE_TXVECSTATUS_STATUS_RESET (0x00)
 #define BHIE_TXVECSTATUS_STATUS_XFER_COMPL (0x02)
 #define BHIE_TXVECSTATUS_STATUS_ERROR (0x03)
 #define BHIE_RXVECADDR_HIGH_OFFS (0x0064)
 #define BHIE_RXVECSIZE_OFFS (0x0068)
 #define BHIE_RXVECDB_OFFS (0x0070)
-#define BHIE_RXVECDB_SEQNUM_BMSK (0x3FFFFFFF)
-#define BHIE_RXVECDB_SEQNUM_SHFT (0)
+#define BHIE_RXVECDB_SEQNUM_BMSK (GENMASK(29, 0))
 #define BHIE_RXVECSTATUS_OFFS (0x0078)
-#define BHIE_RXVECSTATUS_SEQNUM_BMSK (0x3FFFFFFF)
-#define BHIE_RXVECSTATUS_SEQNUM_SHFT (0)
-#define BHIE_RXVECSTATUS_STATUS_BMSK (0xC0000000)
-#define BHIE_RXVECSTATUS_STATUS_SHFT (30)
+#define BHIE_RXVECSTATUS_SEQNUM_BMSK (GENMASK(29, 0))
+#define BHIE_RXVECSTATUS_STATUS_BMSK (GENMASK(31, 30))
 #define BHIE_RXVECSTATUS_STATUS_RESET (0x00)
 #define BHIE_RXVECSTATUS_STATUS_XFER_COMPL (0x02)
 #define BHIE_RXVECSTATUS_STATUS_ERROR (0x03)
 
 #define SOC_HW_VERSION_OFFS (0x224)
-#define SOC_HW_VERSION_FAM_NUM_BMSK (0xF0000000)
-#define SOC_HW_VERSION_FAM_NUM_SHFT (28)
-#define SOC_HW_VERSION_DEV_NUM_BMSK (0x0FFF0000)
-#define SOC_HW_VERSION_DEV_NUM_SHFT (16)
-#define SOC_HW_VERSION_MAJOR_VER_BMSK (0x0000FF00)
-#define SOC_HW_VERSION_MAJOR_VER_SHFT (8)
-#define SOC_HW_VERSION_MINOR_VER_BMSK (0x000000FF)
-#define SOC_HW_VERSION_MINOR_VER_SHFT (0)
+#define SOC_HW_VERSION_FAM_NUM_BMSK (GENMASK(31, 28))
+#define SOC_HW_VERSION_DEV_NUM_BMSK (GENMASK(27, 16))
+#define SOC_HW_VERSION_MAJOR_VER_BMSK (GENMASK(15, 8))
+#define SOC_HW_VERSION_MINOR_VER_BMSK (GENMASK(7, 0))
 
 #define EV_CTX_RESERVED_MASK GENMASK(7, 0)
 #define EV_CTX_INTMODC_MASK GENMASK(15, 8)
-#define EV_CTX_INTMODC_SHIFT 8
 #define EV_CTX_INTMODT_MASK GENMASK(31, 16)
-#define EV_CTX_INTMODT_SHIFT 16
 struct mhi_event_ctxt {
        __le32 intmod;
        __le32 ertype;
 };
 
 #define CHAN_CTX_CHSTATE_MASK GENMASK(7, 0)
-#define CHAN_CTX_CHSTATE_SHIFT 0
 #define CHAN_CTX_BRSTMODE_MASK GENMASK(9, 8)
-#define CHAN_CTX_BRSTMODE_SHIFT 8
 #define CHAN_CTX_POLLCFG_MASK GENMASK(15, 10)
-#define CHAN_CTX_POLLCFG_SHIFT 10
 #define CHAN_CTX_RESERVED_MASK GENMASK(31, 16)
 struct mhi_chan_ctxt {
        __le32 chcfg;
                              void __iomem *base, u32 offset, u32 *out);
 int __must_check mhi_read_reg_field(struct mhi_controller *mhi_cntrl,
                                    void __iomem *base, u32 offset, u32 mask,
-                                   u32 shift, u32 *out);
+                                   u32 *out);
 int __must_check mhi_poll_reg_field(struct mhi_controller *mhi_cntrl,
                                    void __iomem *base, u32 offset, u32 mask,
-                                   u32 shift, u32 val, u32 delayus);
+                                   u32 val, u32 delayus);
 void mhi_write_reg(struct mhi_controller *mhi_cntrl, void __iomem *base,
                   u32 offset, u32 val);
 void mhi_write_reg_field(struct mhi_controller *mhi_cntrl, void __iomem *base,
-                        u32 offset, u32 mask, u32 shift, u32 val);
+                        u32 offset, u32 mask, u32 val);
 void mhi_ring_er_db(struct mhi_event *mhi_event);
 void mhi_write_db(struct mhi_controller *mhi_cntrl, void __iomem *db_addr,
                  dma_addr_t db_val);
 
 
 int __must_check mhi_read_reg_field(struct mhi_controller *mhi_cntrl,
                                    void __iomem *base, u32 offset,
-                                   u32 mask, u32 shift, u32 *out)
+                                   u32 mask, u32 *out)
 {
        u32 tmp;
        int ret;
        if (ret)
                return ret;
 
-       *out = (tmp & mask) >> shift;
+       *out = (tmp & mask) >> __ffs(mask);
 
        return 0;
 }
 
 int __must_check mhi_poll_reg_field(struct mhi_controller *mhi_cntrl,
                                    void __iomem *base, u32 offset,
-                                   u32 mask, u32 shift, u32 val, u32 delayus)
+                                   u32 mask, u32 val, u32 delayus)
 {
        int ret;
        u32 out, retry = (mhi_cntrl->timeout_ms * 1000) / delayus;
 
        while (retry--) {
-               ret = mhi_read_reg_field(mhi_cntrl, base, offset, mask, shift,
-                                        &out);
+               ret = mhi_read_reg_field(mhi_cntrl, base, offset, mask, &out);
                if (ret)
                        return ret;
 
 }
 
 void mhi_write_reg_field(struct mhi_controller *mhi_cntrl, void __iomem *base,
-                        u32 offset, u32 mask, u32 shift, u32 val)
+                        u32 offset, u32 mask, u32 val)
 {
        int ret;
        u32 tmp;
                return;
 
        tmp &= ~mask;
-       tmp |= (val << shift);
+       tmp |= (val << __ffs(mask));
        mhi_write_reg(mhi_cntrl, base, offset, tmp);
 }
 
 {
        u32 state;
        int ret = mhi_read_reg_field(mhi_cntrl, mhi_cntrl->regs, MHISTATUS,
-                                    MHISTATUS_MHISTATE_MASK,
-                                    MHISTATUS_MHISTATE_SHIFT, &state);
+                                    MHISTATUS_MHISTATE_MASK, &state);
        return ret ? MHI_STATE_MAX : state;
 }
 EXPORT_SYMBOL_GPL(mhi_get_mhi_state);
 
 {
        if (state == MHI_STATE_RESET) {
                mhi_write_reg_field(mhi_cntrl, mhi_cntrl->regs, MHICTRL,
-                                   MHICTRL_RESET_MASK, MHICTRL_RESET_SHIFT, 1);
+                                   MHICTRL_RESET_MASK, 1);
        } else {
                mhi_write_reg_field(mhi_cntrl, mhi_cntrl->regs, MHICTRL,
-                                   MHICTRL_MHISTATE_MASK,
-                                   MHICTRL_MHISTATE_SHIFT, state);
+                                   MHICTRL_MHISTATE_MASK, state);
        }
 }
 
 
        /* Wait for RESET to be cleared and READY bit to be set by the device */
        ret = mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs, MHICTRL,
-                                MHICTRL_RESET_MASK, MHICTRL_RESET_SHIFT, 0,
-                                interval_us);
+                                MHICTRL_RESET_MASK, 0, interval_us);
        if (ret) {
                dev_err(dev, "Device failed to clear MHI Reset\n");
                return ret;
        }
 
        ret = mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs, MHISTATUS,
-                                MHISTATUS_READY_MASK, MHISTATUS_READY_SHIFT, 1,
-                                interval_us);
+                                MHISTATUS_READY_MASK, 1, interval_us);
        if (ret) {
                dev_err(dev, "Device failed to enter MHI Ready\n");
                return ret;
 
                /* Wait for the reset bit to be cleared by the device */
                ret = mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs, MHICTRL,
-                                MHICTRL_RESET_MASK, MHICTRL_RESET_SHIFT, 0,
-                                25000);
+                                MHICTRL_RESET_MASK, 0, 25000);
                if (ret)
                        dev_err(dev, "Device failed to clear MHI Reset\n");
 
                                                            mhi_cntrl->regs,
                                                            MHICTRL,
                                                            MHICTRL_RESET_MASK,
-                                                           MHICTRL_RESET_SHIFT,
                                                            &in_reset) ||
                                        !in_reset, timeout);
                if (!ret || in_reset) {
        if (state == MHI_STATE_SYS_ERR) {
                mhi_set_mhi_state(mhi_cntrl, MHI_STATE_RESET);
                ret = mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs, MHICTRL,
-                                MHICTRL_RESET_MASK, MHICTRL_RESET_SHIFT, 0,
-                                interval_us);
+                                MHICTRL_RESET_MASK, 0, interval_us);
                if (ret) {
                        dev_info(dev, "Failed to reset MHI due to syserr state\n");
                        goto error_exit;