priv->has_wifi = 1;
 
        sys_cfg = rtl8xxxu_read32(priv, REG_SYS_CFG);
-       priv->chip_cut = (sys_cfg & SYS_CFG_CHIP_VERSION_MASK) >>
-               SYS_CFG_CHIP_VERSION_SHIFT;
+       priv->chip_cut = u32_get_bits(sys_cfg, SYS_CFG_CHIP_VERSION_MASK);
        if (sys_cfg & SYS_CFG_TRP_VAUX_EN) {
                dev_info(dev, "Unsupported test chip\n");
                ret = -ENOTSUPP;
 
        int ret = 0;
 
        sys_cfg = rtl8xxxu_read32(priv, REG_SYS_CFG);
-       priv->chip_cut = (sys_cfg & SYS_CFG_CHIP_VERSION_MASK) >>
-               SYS_CFG_CHIP_VERSION_SHIFT;
+       priv->chip_cut = u32_get_bits(sys_cfg, SYS_CFG_CHIP_VERSION_MASK);
        if (sys_cfg & SYS_CFG_TRP_VAUX_EN) {
                dev_info(dev, "Unsupported test chip\n");
                ret = -ENOTSUPP;
        rtl8xxxu_identify_vendor_1bit(priv, vendor);
 
        val32 = rtl8xxxu_read32(priv, REG_GPIO_OUTSTS);
-       priv->rom_rev = (val32 & GPIO_RF_RL_ID) >> 28;
+       priv->rom_rev = u32_get_bits(val32, GPIO_RF_RL_ID);
 
        rtl8xxxu_config_endpoints_sie(priv);
 
 
        int ret = 0;
 
        sys_cfg = rtl8xxxu_read32(priv, REG_SYS_CFG);
-       priv->chip_cut = (sys_cfg & SYS_CFG_CHIP_VERSION_MASK) >>
-               SYS_CFG_CHIP_VERSION_SHIFT;
+       priv->chip_cut = u32_get_bits(sys_cfg, SYS_CFG_CHIP_VERSION_MASK);
        if (sys_cfg & SYS_CFG_TRP_VAUX_EN) {
                dev_info(dev, "Unsupported test chip\n");
                ret = -ENOTSUPP;
        rtl8xxxu_identify_vendor_2bits(priv, vendor);
 
        val32 = rtl8xxxu_read32(priv, REG_GPIO_OUTSTS);
-       priv->rom_rev = (val32 & GPIO_RF_RL_ID) >> 28;
+       priv->rom_rev = u32_get_bits(val32, GPIO_RF_RL_ID);
 
        rtl8xxxu_config_endpoints_sie(priv);
 
 
        int ret = 0;
 
        sys_cfg = rtl8xxxu_read32(priv, REG_SYS_CFG);
-       priv->chip_cut = (sys_cfg & SYS_CFG_CHIP_VERSION_MASK) >>
-               SYS_CFG_CHIP_VERSION_SHIFT;
+       priv->chip_cut = u32_get_bits(sys_cfg, SYS_CFG_CHIP_VERSION_MASK);
        if (sys_cfg & SYS_CFG_TRP_VAUX_EN) {
                dev_info(dev, "Unsupported test chip\n");
                ret = -ENOTSUPP;
        rtl8xxxu_identify_vendor_1bit(priv, vendor);
 
        val32 = rtl8xxxu_read32(priv, REG_GPIO_OUTSTS);
-       priv->rom_rev = (val32 & GPIO_RF_RL_ID) >> 28;
+       priv->rom_rev = u32_get_bits(val32, GPIO_RF_RL_ID);
 
        rtl8xxxu_config_endpoints_sie(priv);
 
 
        int ret = 0;
 
        sys_cfg = rtl8xxxu_read32(priv, REG_SYS_CFG);
-       priv->chip_cut = (sys_cfg & SYS_CFG_CHIP_VERSION_MASK) >>
-               SYS_CFG_CHIP_VERSION_SHIFT;
+       priv->chip_cut = u32_get_bits(sys_cfg, SYS_CFG_CHIP_VERSION_MASK);
        if (sys_cfg & SYS_CFG_TRP_VAUX_EN) {
                dev_info(dev, "Unsupported test chip\n");
                ret = -ENOTSUPP;
        rtl8xxxu_identify_vendor_2bits(priv, vendor);
 
        val32 = rtl8xxxu_read32(priv, REG_GPIO_OUTSTS);
-       priv->rom_rev = (val32 & GPIO_RF_RL_ID) >> 28;
+       priv->rom_rev = u32_get_bits(val32, GPIO_RF_RL_ID);
 
        rtl8xxxu_config_endpoints_sie(priv);
 
 
 #define  SYS_CFG_SPS_SEL               BIT(24) /*  1:LDO regulator mode;
                                                    0:Switching regulator mode*/
 #define  SYS_CFG_CHIP_VERSION_MASK     0xf000  /* Bit 12 - 15 */
-#define  SYS_CFG_CHIP_VERSION_SHIFT    12
 
 #define REG_GPIO_OUTSTS                        0x00f4  /*  For RTL8723 only. */
 #define  GPIO_EFS_HCI_SEL              (BIT(0) | BIT(1))