]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
PCI: Use FIELD_MODIFY() instead of open-coding it
authorHans Zhang <18255117159@163.com>
Thu, 30 Apr 2026 16:24:05 +0000 (00:24 +0800)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 5 May 2026 16:48:13 +0000 (11:48 -0500)
Use FIELD_MODIFY() to remove open-coded bit manipulation.  No functional
change intended.

Signed-off-by: Hans Zhang <18255117159@163.com>
[bhelgaas: squash together]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com> # pcie-nxp-s32g.c
Link: https://patch.msgid.link/20260430162420.42839-2-18255117159@163.com
Link: https://patch.msgid.link/20260430162420.42839-3-18255117159@163.com
Link: https://patch.msgid.link/20260430162420.42839-4-18255117159@163.com
Link: https://patch.msgid.link/20260430162420.42839-5-18255117159@163.com
Link: https://patch.msgid.link/20260430162420.42839-6-18255117159@163.com
Link: https://patch.msgid.link/20260430162420.42839-7-18255117159@163.com
Link: https://patch.msgid.link/20260430162420.42839-8-18255117159@163.com
Link: https://patch.msgid.link/20260430162420.42839-9-18255117159@163.com
Link: https://patch.msgid.link/20260430162420.42839-10-18255117159@163.com
Link: https://patch.msgid.link/20260430162420.42839-11-18255117159@163.com
Link: https://patch.msgid.link/20260430162420.42839-12-18255117159@163.com
Link: https://patch.msgid.link/20260430162420.42839-13-18255117159@163.com
Link: https://patch.msgid.link/20260430162420.42839-14-18255117159@163.com
Link: https://patch.msgid.link/20260430162420.42839-15-18255117159@163.com
Link: https://patch.msgid.link/20260430162420.42839-16-18255117159@163.com
Link: https://patch.msgid.link/20260430162420.42839-17-18255117159@163.com
19 files changed:
drivers/pci/controller/dwc/pcie-al.c
drivers/pci/controller/dwc/pcie-designware-debugfs.c
drivers/pci/controller/dwc/pcie-designware-ep.c
drivers/pci/controller/dwc/pcie-designware.c
drivers/pci/controller/dwc/pcie-eswin.c
drivers/pci/controller/dwc/pcie-nxp-s32g.c
drivers/pci/controller/dwc/pcie-qcom-common.c
drivers/pci/controller/dwc/pcie-qcom-ep.c
drivers/pci/controller/dwc/pcie-tegra194.c
drivers/pci/controller/pci-mvebu.c
drivers/pci/controller/pcie-mediatek-gen3.c
drivers/pci/ide.c
drivers/pci/iov.c
drivers/pci/msi/msi.c
drivers/pci/pci.c
drivers/pci/pcie/ptm.c
drivers/pci/rebar.c
drivers/pci/setup-cardbus.c
drivers/pci/tph.c

index 345c281c74fefd2113233ef5461f96834b3765de..ef8c8ce7c78c787d87a644ddd4b3652ae4b9826f 100644 (file)
@@ -253,7 +253,6 @@ static int al_pcie_config_prepare(struct al_pcie *pcie)
        u8 subordinate_bus;
        u8 secondary_bus;
        u32 cfg_control;
-       u32 reg;
 
        ft = resource_list_first_type(&pp->bridge->windows, IORESOURCE_BUS);
        if (!ft)
@@ -285,14 +284,9 @@ static int al_pcie_config_prepare(struct al_pcie *pcie)
                             CFG_CONTROL;
 
        cfg_control = al_pcie_controller_readl(pcie, cfg_control_offset);
-
-       reg = cfg_control &
-             ~(CFG_CONTROL_SEC_BUS_MASK | CFG_CONTROL_SUBBUS_MASK);
-
-       reg |= FIELD_PREP(CFG_CONTROL_SUBBUS_MASK, subordinate_bus) |
-              FIELD_PREP(CFG_CONTROL_SEC_BUS_MASK, secondary_bus);
-
-       al_pcie_controller_writel(pcie, cfg_control_offset, reg);
+       FIELD_MODIFY(CFG_CONTROL_SUBBUS_MASK, &cfg_control, subordinate_bus);
+       FIELD_MODIFY(CFG_CONTROL_SEC_BUS_MASK, &cfg_control, secondary_bus);
+       al_pcie_controller_writel(pcie, cfg_control_offset, cfg_control);
 
        return 0;
 }
index d0884253be97e4a5f5e2d378b7afa97f614c5ea2..945f8f9b6d0e3cd327fc7bc1c71cd1c892dd6a66 100644 (file)
@@ -265,8 +265,7 @@ static ssize_t lane_detect_write(struct file *file, const char __user *buf,
                return ret;
 
        val = dw_pcie_readl_dbi(pci, rinfo->ras_cap_offset + SD_STATUS_L1LANE_REG);
-       val &= ~(LANE_SELECT);
-       val |= FIELD_PREP(LANE_SELECT, lane);
+       FIELD_MODIFY(LANE_SELECT, &val, lane);
        dw_pcie_writel_dbi(pci, rinfo->ras_cap_offset + SD_STATUS_L1LANE_REG, val);
 
        return count;
@@ -339,14 +338,10 @@ static ssize_t err_inj_write(struct file *file, const char __user *buf,
        val |= ((err_inj_list[pdata->idx].err_inj_type << EINJ_TYPE_SHIFT) & type_mask);
        val |= FIELD_PREP(EINJ_COUNT, counter);
 
-       if (err_group == 1 || err_group == 4) {
-               val &= ~(EINJ_VAL_DIFF);
-               val |= FIELD_PREP(EINJ_VAL_DIFF, val_diff);
-       }
-       if (err_group == 4) {
-               val &= ~(EINJ_VC_NUM);
-               val |= FIELD_PREP(EINJ_VC_NUM, vc_num);
-       }
+       if (err_group == 1 || err_group == 4)
+               FIELD_MODIFY(EINJ_VAL_DIFF, &val, val_diff);
+       if (err_group == 4)
+               FIELD_MODIFY(EINJ_VC_NUM, &val, vc_num);
 
        dw_pcie_writel_dbi(pci, rinfo->ras_cap_offset + ERR_INJ0_OFF + (0x4 * err_group), val);
        dw_pcie_writel_dbi(pci, rinfo->ras_cap_offset + ERR_INJ_ENABLE_REG, (0x1 << err_group));
@@ -362,9 +357,8 @@ static void set_event_number(struct dwc_pcie_rasdes_priv *pdata,
 
        val = dw_pcie_readl_dbi(pci, rinfo->ras_cap_offset + RAS_DES_EVENT_COUNTER_CTRL_REG);
        val &= ~EVENT_COUNTER_ENABLE;
-       val &= ~(EVENT_COUNTER_GROUP_SELECT | EVENT_COUNTER_EVENT_SELECT);
-       val |= FIELD_PREP(EVENT_COUNTER_GROUP_SELECT, event_list[pdata->idx].group_no);
-       val |= FIELD_PREP(EVENT_COUNTER_EVENT_SELECT, event_list[pdata->idx].event_no);
+       FIELD_MODIFY(EVENT_COUNTER_GROUP_SELECT, &val, event_list[pdata->idx].group_no);
+       FIELD_MODIFY(EVENT_COUNTER_EVENT_SELECT, &val, event_list[pdata->idx].event_no);
        dw_pcie_writel_dbi(pci, rinfo->ras_cap_offset + RAS_DES_EVENT_COUNTER_CTRL_REG, val);
 }
 
@@ -469,8 +463,7 @@ static ssize_t counter_lane_write(struct file *file, const char __user *buf,
        mutex_lock(&rinfo->reg_event_lock);
        set_event_number(pdata, pci, rinfo);
        val = dw_pcie_readl_dbi(pci, rinfo->ras_cap_offset + RAS_DES_EVENT_COUNTER_CTRL_REG);
-       val &= ~(EVENT_COUNTER_LANE_SELECT);
-       val |= FIELD_PREP(EVENT_COUNTER_LANE_SELECT, lane);
+       FIELD_MODIFY(EVENT_COUNTER_LANE_SELECT, &val, lane);
        dw_pcie_writel_dbi(pci, rinfo->ras_cap_offset + RAS_DES_EVENT_COUNTER_CTRL_REG, val);
        mutex_unlock(&rinfo->reg_event_lock);
 
index d4dc3b24da60754ba3616fada52352601866761f..88e7fc3d5e9d8f11114fdbfaa5dcc5245278f475 100644 (file)
@@ -707,8 +707,7 @@ static int dw_pcie_ep_set_msi(struct pci_epc *epc, u8 func_no, u8 vfunc_no,
 
        reg = ep_func->msi_cap + PCI_MSI_FLAGS;
        val = dw_pcie_ep_readw_dbi(ep, func_no, reg);
-       val &= ~PCI_MSI_FLAGS_QMASK;
-       val |= FIELD_PREP(PCI_MSI_FLAGS_QMASK, mmc);
+       FIELD_MODIFY(PCI_MSI_FLAGS_QMASK, &val, mmc);
        dw_pcie_dbi_ro_wr_en(pci);
        dw_pcie_ep_writew_dbi(ep, func_no, reg, val);
        dw_pcie_dbi_ro_wr_dis(pci);
index c11cf61b8319e66ca5b50915ffd1cc9691d54974..bcfc7bfcf232edf570d07f9898b553ad9e36ed91 100644 (file)
@@ -938,8 +938,7 @@ static void dw_pcie_link_set_max_link_width(struct dw_pcie *pci, u32 num_lanes)
 
        cap = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP);
        lnkcap = dw_pcie_readl_dbi(pci, cap + PCI_EXP_LNKCAP);
-       lnkcap &= ~PCI_EXP_LNKCAP_MLW;
-       lnkcap |= FIELD_PREP(PCI_EXP_LNKCAP_MLW, num_lanes);
+       FIELD_MODIFY(PCI_EXP_LNKCAP_MLW, &lnkcap, num_lanes);
        dw_pcie_writel_dbi(pci, cap + PCI_EXP_LNKCAP, lnkcap);
 }
 
index 2845832b382439daa159dbe7eafada421553a5be..ce8d64f8a3957d34717cd09f49a3721f838704dc 100644 (file)
@@ -211,8 +211,7 @@ static int eswin_pcie_host_init(struct dw_pcie_rp *pp)
 
        /* Configure Root Port type */
        val = readl_relaxed(pci->elbi_base + PCIEELBI_CTRL0_OFFSET);
-       val &= ~PCIEELBI_CTRL0_DEV_TYPE;
-       val |= FIELD_PREP(PCIEELBI_CTRL0_DEV_TYPE, PCI_EXP_TYPE_ROOT_PORT);
+       FIELD_MODIFY(PCIEELBI_CTRL0_DEV_TYPE, &val, PCI_EXP_TYPE_ROOT_PORT);
        writel_relaxed(val, pci->elbi_base + PCIEELBI_CTRL0_OFFSET);
 
        list_for_each_entry(port, &pcie->ports, list) {
index b3ec38099fa3869b2e81cb3b3870ea120544a96b..31e1169b8ab6b3c7cbf131d5a413c03621046f69 100644 (file)
@@ -139,8 +139,7 @@ static int s32g_init_pcie_controller(struct dw_pcie_rp *pp)
 
        /* Set RP mode */
        val = s32g_pcie_readl_ctrl(s32g_pp, PCIE_S32G_PE0_GEN_CTRL_1);
-       val &= ~DEVICE_TYPE_MASK;
-       val |= FIELD_PREP(DEVICE_TYPE_MASK, PCI_EXP_TYPE_ROOT_PORT);
+       FIELD_MODIFY(DEVICE_TYPE_MASK, &val, PCI_EXP_TYPE_ROOT_PORT);
 
        /* Use default CRNS */
        val &= ~SRIS_MODE;
index 5aa73c6287373fceb21b179e736b51e9b65bf7e6..0da73caf20110309a34a7b7da05e431d4946bc6a 100644 (file)
@@ -30,20 +30,15 @@ void qcom_pcie_common_set_equalization(struct dw_pcie *pci)
 
                reg = dw_pcie_readl_dbi(pci, GEN3_RELATED_OFF);
                reg &= ~GEN3_RELATED_OFF_GEN3_ZRXDC_NONCOMPL;
-               reg &= ~GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK;
-               reg |= FIELD_PREP(GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK,
-                         speed - PCIE_SPEED_8_0GT);
+               FIELD_MODIFY(GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK, &reg,
+                            speed - PCIE_SPEED_8_0GT);
                dw_pcie_writel_dbi(pci, GEN3_RELATED_OFF, reg);
 
                reg = dw_pcie_readl_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF);
-               reg &= ~(GEN3_EQ_FMDC_T_MIN_PHASE23 |
-                       GEN3_EQ_FMDC_N_EVALS |
-                       GEN3_EQ_FMDC_MAX_PRE_CURSOR_DELTA |
-                       GEN3_EQ_FMDC_MAX_POST_CURSOR_DELTA);
-               reg |= FIELD_PREP(GEN3_EQ_FMDC_T_MIN_PHASE23, 0x1) |
-                       FIELD_PREP(GEN3_EQ_FMDC_N_EVALS, 0xd) |
-                       FIELD_PREP(GEN3_EQ_FMDC_MAX_PRE_CURSOR_DELTA, 0x5) |
-                       FIELD_PREP(GEN3_EQ_FMDC_MAX_POST_CURSOR_DELTA, 0x5);
+               FIELD_MODIFY(GEN3_EQ_FMDC_T_MIN_PHASE23, &reg, 0x1);
+               FIELD_MODIFY(GEN3_EQ_FMDC_N_EVALS, &reg, 0xd);
+               FIELD_MODIFY(GEN3_EQ_FMDC_MAX_PRE_CURSOR_DELTA, &reg, 0x5);
+               FIELD_MODIFY(GEN3_EQ_FMDC_MAX_POST_CURSOR_DELTA, &reg, 0x5);
                dw_pcie_writel_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF, reg);
 
                reg = dw_pcie_readl_dbi(pci, GEN3_EQ_CONTROL_OFF);
@@ -61,14 +56,10 @@ void qcom_pcie_common_set_16gt_lane_margining(struct dw_pcie *pci)
        u32 reg;
 
        reg = dw_pcie_readl_dbi(pci, GEN4_LANE_MARGINING_1_OFF);
-       reg &= ~(MARGINING_MAX_VOLTAGE_OFFSET |
-               MARGINING_NUM_VOLTAGE_STEPS |
-               MARGINING_MAX_TIMING_OFFSET |
-               MARGINING_NUM_TIMING_STEPS);
-       reg |= FIELD_PREP(MARGINING_MAX_VOLTAGE_OFFSET, 0x24) |
-               FIELD_PREP(MARGINING_NUM_VOLTAGE_STEPS, 0x78) |
-               FIELD_PREP(MARGINING_MAX_TIMING_OFFSET, 0x32) |
-               FIELD_PREP(MARGINING_NUM_TIMING_STEPS, 0x10);
+       FIELD_MODIFY(MARGINING_MAX_VOLTAGE_OFFSET, &reg, 0x24);
+       FIELD_MODIFY(MARGINING_NUM_VOLTAGE_STEPS, &reg, 0x78);
+       FIELD_MODIFY(MARGINING_MAX_TIMING_OFFSET, &reg, 0x32);
+       FIELD_MODIFY(MARGINING_NUM_TIMING_STEPS, &reg, 0x10);
        dw_pcie_writel_dbi(pci, GEN4_LANE_MARGINING_1_OFF, reg);
 
        reg = dw_pcie_readl_dbi(pci, GEN4_LANE_MARGINING_2_OFF);
@@ -76,13 +67,10 @@ void qcom_pcie_common_set_16gt_lane_margining(struct dw_pcie *pci)
                MARGINING_SAMPLE_REPORTING_METHOD |
                MARGINING_IND_LEFT_RIGHT_TIMING |
                MARGINING_VOLTAGE_SUPPORTED;
-       reg &= ~(MARGINING_IND_UP_DOWN_VOLTAGE |
-               MARGINING_MAXLANES |
-               MARGINING_SAMPLE_RATE_TIMING |
-               MARGINING_SAMPLE_RATE_VOLTAGE);
-       reg |= FIELD_PREP(MARGINING_MAXLANES, pci->num_lanes) |
-               FIELD_PREP(MARGINING_SAMPLE_RATE_TIMING, 0x3f) |
-               FIELD_PREP(MARGINING_SAMPLE_RATE_VOLTAGE, 0x3f);
+       reg &= ~MARGINING_IND_UP_DOWN_VOLTAGE;
+       FIELD_MODIFY(MARGINING_MAXLANES, &reg, pci->num_lanes);
+       FIELD_MODIFY(MARGINING_SAMPLE_RATE_TIMING, &reg, 0x3f);
+       FIELD_MODIFY(MARGINING_SAMPLE_RATE_VOLTAGE, &reg, 0x3f);
        dw_pcie_writel_dbi(pci, GEN4_LANE_MARGINING_2_OFF, reg);
 }
 EXPORT_SYMBOL_GPL(qcom_pcie_common_set_16gt_lane_margining);
index 257c2bcb5f76f45d6f33aee7e7fd032196ef74e9..56184e6ca6e690e0eba5bf6b564e7476bb817412 100644 (file)
@@ -494,15 +494,13 @@ skip_resources_enable:
        /* Set the L0s Exit Latency to 2us-4us = 0x6 */
        offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP);
        val = dw_pcie_readl_dbi(pci, offset + PCI_EXP_LNKCAP);
-       val &= ~PCI_EXP_LNKCAP_L0SEL;
-       val |= FIELD_PREP(PCI_EXP_LNKCAP_L0SEL, 0x6);
+       FIELD_MODIFY(PCI_EXP_LNKCAP_L0SEL, &val, 0x6);
        dw_pcie_writel_dbi(pci, offset + PCI_EXP_LNKCAP, val);
 
        /* Set the L1 Exit Latency to be 32us-64 us = 0x6 */
        offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP);
        val = dw_pcie_readl_dbi(pci, offset + PCI_EXP_LNKCAP);
-       val &= ~PCI_EXP_LNKCAP_L1EL;
-       val |= FIELD_PREP(PCI_EXP_LNKCAP_L1EL, 0x6);
+       FIELD_MODIFY(PCI_EXP_LNKCAP_L1EL, &val, 0x6);
        dw_pcie_writel_dbi(pci, offset + PCI_EXP_LNKCAP, val);
 
        dw_pcie_dbi_ro_wr_dis(pci);
index 9dcfa194050e7fbd8fe600207405bd2b42ceed7c..3c831331338e072dbe50cfd66e8f986cb2b3f27e 100644 (file)
@@ -872,8 +872,7 @@ static void config_gen3_gen4_eq_presets(struct tegra_pcie_dw *pcie)
        dw_pcie_writel_dbi(pci, GEN3_RELATED_OFF, val);
 
        val = dw_pcie_readl_dbi(pci, GEN3_EQ_CONTROL_OFF);
-       val &= ~GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC;
-       val |= FIELD_PREP(GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC, 0x3ff);
+       FIELD_MODIFY(GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC, &val, 0x3ff);
        val &= ~GEN3_EQ_CONTROL_OFF_FB_MODE;
        dw_pcie_writel_dbi(pci, GEN3_EQ_CONTROL_OFF, val);
 
@@ -883,9 +882,8 @@ static void config_gen3_gen4_eq_presets(struct tegra_pcie_dw *pcie)
        dw_pcie_writel_dbi(pci, GEN3_RELATED_OFF, val);
 
        val = dw_pcie_readl_dbi(pci, GEN3_EQ_CONTROL_OFF);
-       val &= ~GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC;
-       val |= FIELD_PREP(GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC,
-                         pcie->of_data->gen4_preset_vec);
+       FIELD_MODIFY(GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC, &val,
+                    pcie->of_data->gen4_preset_vec);
        val &= ~GEN3_EQ_CONTROL_OFF_FB_MODE;
        dw_pcie_writel_dbi(pci, GEN3_EQ_CONTROL_OFF, val);
 
index a72aa57591c04edc9660dc8663fa1c038f8a3d5b..d6eb65b8cd7fd370802dc64a4f295cdb137e1802 100644 (file)
@@ -263,8 +263,7 @@ static void mvebu_pcie_setup_hw(struct mvebu_pcie_port *port)
         * not set correctly then link with endpoint card is not established.
         */
        lnkcap = mvebu_readl(port, PCIE_CAP_PCIEXP + PCI_EXP_LNKCAP);
-       lnkcap &= ~PCI_EXP_LNKCAP_MLW;
-       lnkcap |= FIELD_PREP(PCI_EXP_LNKCAP_MLW, port->is_x4 ? 4 : 1);
+       FIELD_MODIFY(PCI_EXP_LNKCAP_MLW, &lnkcap, port->is_x4 ? 4 : 1);
        mvebu_writel(port, lnkcap, PCIE_CAP_PCIEXP + PCI_EXP_LNKCAP);
 
        /* Disable Root Bridge I/O space, memory space and bus mastering. */
index b0accd82858921fd5ffeeab1d876e7f13e1d0208..f36a616a8b52eccf237ffbae1feca5c4c9374a5f 100644 (file)
@@ -494,8 +494,7 @@ static int mtk_pcie_startup_port(struct mtk_gen3_pcie *pcie)
        /* Set Link Control 2 (LNKCTL2) speed restriction, if any */
        if (pcie->max_link_speed) {
                val = readl_relaxed(pcie->base + PCIE_CONF_LINK2_CTL_STS);
-               val &= ~PCIE_CONF_LINK2_LCR2_LINK_SPEED;
-               val |= FIELD_PREP(PCIE_CONF_LINK2_LCR2_LINK_SPEED, pcie->max_link_speed);
+               FIELD_MODIFY(PCIE_CONF_LINK2_LCR2_LINK_SPEED, &val, pcie->max_link_speed);
                writel_relaxed(val, pcie->base + PCIE_CONF_LINK2_CTL_STS);
        }
 
index be74e8f0ae21aa082dc529e0090a93d1f507ea95..beb67b8fb5c56603d8f2c5d1a8c102e665794c75 100644 (file)
@@ -170,8 +170,7 @@ void pci_ide_init(struct pci_dev *pdev)
                pci_read_config_dword(pdev, pos + PCI_IDE_SEL_CTL, &val);
                if (val & PCI_IDE_SEL_CTL_EN)
                        continue;
-               val &= ~PCI_IDE_SEL_CTL_ID;
-               val |= FIELD_PREP(PCI_IDE_SEL_CTL_ID, PCI_IDE_RESERVED_STREAM_ID);
+               FIELD_MODIFY(PCI_IDE_SEL_CTL_ID, &val, PCI_IDE_RESERVED_STREAM_ID);
                pci_write_config_dword(pdev, pos + PCI_IDE_SEL_CTL, val);
        }
 
@@ -182,8 +181,7 @@ void pci_ide_init(struct pci_dev *pdev)
                pci_read_config_dword(pdev, pos, &val);
                if (val & PCI_IDE_LINK_CTL_EN)
                        continue;
-               val &= ~PCI_IDE_LINK_CTL_ID;
-               val |= FIELD_PREP(PCI_IDE_LINK_CTL_ID, PCI_IDE_RESERVED_STREAM_ID);
+               FIELD_MODIFY(PCI_IDE_LINK_CTL_ID, &val, PCI_IDE_RESERVED_STREAM_ID);
                pci_write_config_dword(pdev, pos, val);
        }
 
index 91ac4e37ecb9c0c5265aa40c235e84b430f43a96..fdae70abe80498f2addd221ebc7adbb1d26e2408 100644 (file)
@@ -946,8 +946,7 @@ static void sriov_restore_vf_rebar_state(struct pci_dev *dev)
                pci_read_config_dword(dev, pos + PCI_VF_REBAR_CTRL, &ctrl);
                bar_idx = FIELD_GET(PCI_VF_REBAR_CTRL_BAR_IDX, ctrl);
                size = pci_rebar_bytes_to_size(dev->sriov->barsz[bar_idx]);
-               ctrl &= ~PCI_VF_REBAR_CTRL_BAR_SIZE;
-               ctrl |= FIELD_PREP(PCI_VF_REBAR_CTRL_BAR_SIZE, size);
+               FIELD_MODIFY(PCI_VF_REBAR_CTRL_BAR_SIZE, &ctrl, size);
                pci_write_config_dword(dev, pos + PCI_VF_REBAR_CTRL, ctrl);
        }
 }
index 81d24a270a795ce9edd9027aeb59f32bf6a3e2ce..33c8b5b98684f91575e413688950c7137677180a 100644 (file)
@@ -201,8 +201,7 @@ static inline void pci_write_msg_msi(struct pci_dev *dev, struct msi_desc *desc,
        u16 msgctl;
 
        pci_read_config_word(dev, pos + PCI_MSI_FLAGS, &msgctl);
-       msgctl &= ~PCI_MSI_FLAGS_QSIZE;
-       msgctl |= FIELD_PREP(PCI_MSI_FLAGS_QSIZE, desc->pci.msi_attrib.multiple);
+       FIELD_MODIFY(PCI_MSI_FLAGS_QSIZE, &msgctl, desc->pci.msi_attrib.multiple);
        pci_write_config_word(dev, pos + PCI_MSI_FLAGS, msgctl);
 
        pci_write_config_dword(dev, pos + PCI_MSI_ADDRESS_LO, msg->address_lo);
@@ -532,9 +531,8 @@ void __pci_restore_msi_state(struct pci_dev *dev)
 
        pci_read_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS, &control);
        pci_msi_update_mask(entry, 0, 0);
-       control &= ~PCI_MSI_FLAGS_QSIZE;
-       control |= PCI_MSI_FLAGS_ENABLE |
-                  FIELD_PREP(PCI_MSI_FLAGS_QSIZE, entry->pci.msi_attrib.multiple);
+       FIELD_MODIFY(PCI_MSI_FLAGS_QSIZE, &control, entry->pci.msi_attrib.multiple);
+       control |= PCI_MSI_FLAGS_ENABLE;
        pci_write_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS, control);
 }
 
@@ -970,8 +968,7 @@ int pci_msix_write_tph_tag(struct pci_dev *pdev, unsigned int index, u16 tag)
        if (!msi_desc || msi_desc->pci.msi_attrib.is_virtual)
                return -ENXIO;
 
-       msi_desc->pci.msix_ctrl &= ~PCI_MSIX_ENTRY_CTRL_ST;
-       msi_desc->pci.msix_ctrl |= FIELD_PREP(PCI_MSIX_ENTRY_CTRL_ST, tag);
+       FIELD_MODIFY(PCI_MSIX_ENTRY_CTRL_ST, &msi_desc->pci.msix_ctrl, tag);
        pci_msix_write_vector_ctrl(msi_desc, msi_desc->pci.msix_ctrl);
        /* Flush the write */
        readl(pci_msix_desc_addr(msi_desc));
index 8f7cfcc000901d8fce9b9589cf38cbdbb8bd2912..942f70f6a441a84146f6cb984c0d5ba9ba5a2acb 100644 (file)
@@ -5771,8 +5771,7 @@ int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc)
                if (v > o && (dev->bus->bus_flags & PCI_BUS_FLAGS_NO_MMRBC))
                        return -EIO;
 
-               cmd &= ~PCI_X_CMD_MAX_READ;
-               cmd |= FIELD_PREP(PCI_X_CMD_MAX_READ, v);
+               FIELD_MODIFY(PCI_X_CMD_MAX_READ, &cmd, v);
                if (pci_write_config_word(dev, cap + PCI_X_CMD, cmd))
                        return -EIO;
        }
index a41ffd1914de427b0d41fe53fca97e2992f8d2f3..bd3bd39f63728eae54103fff08412fe563f8c0ba 100644 (file)
@@ -152,8 +152,7 @@ static int __pci_enable_ptm(struct pci_dev *dev)
        pci_read_config_dword(dev, ptm + PCI_PTM_CTRL, &ctrl);
 
        ctrl |= PCI_PTM_CTRL_ENABLE;
-       ctrl &= ~PCI_PTM_GRANULARITY_MASK;
-       ctrl |= FIELD_PREP(PCI_PTM_GRANULARITY_MASK, dev->ptm_granularity);
+       FIELD_MODIFY(PCI_PTM_GRANULARITY_MASK, &ctrl, dev->ptm_granularity);
        if (dev->ptm_root)
                ctrl |= PCI_PTM_CTRL_ROOT;
 
index 39f8cf3b70d5728cd76f5ab504ee43aad011c8b6..e3e0415fc29a44150756ce1d9555f1c5c060afc9 100644 (file)
@@ -211,8 +211,7 @@ int pci_rebar_set_size(struct pci_dev *pdev, int bar, int size)
                return pos;
 
        pci_read_config_dword(pdev, pos + PCI_REBAR_CTRL, &ctrl);
-       ctrl &= ~PCI_REBAR_CTRL_BAR_SIZE;
-       ctrl |= FIELD_PREP(PCI_REBAR_CTRL_BAR_SIZE, size);
+       FIELD_MODIFY(PCI_REBAR_CTRL_BAR_SIZE, &ctrl, size);
        pci_write_config_dword(pdev, pos + PCI_REBAR_CTRL, ctrl);
 
        if (pci_resource_is_iov(bar))
@@ -241,8 +240,7 @@ void pci_restore_rebar_state(struct pci_dev *pdev)
                bar_idx = ctrl & PCI_REBAR_CTRL_BAR_IDX;
                res = pci_resource_n(pdev, bar_idx);
                size = pci_rebar_bytes_to_size(resource_size(res));
-               ctrl &= ~PCI_REBAR_CTRL_BAR_SIZE;
-               ctrl |= FIELD_PREP(PCI_REBAR_CTRL_BAR_SIZE, size);
+               FIELD_MODIFY(PCI_REBAR_CTRL_BAR_SIZE, &ctrl, size);
                pci_write_config_dword(pdev, pos + PCI_REBAR_CTRL, ctrl);
        }
 }
index 1ebd13a1f7302369019607f232fcc60825317ca3..f7c62054f227208b12587f78ac3a4c8e5e0e9984 100644 (file)
@@ -253,8 +253,7 @@ int pci_cardbus_scan_bridge_extend(struct pci_bus *bus, struct pci_dev *dev,
         * yenta.c forces a secondary latency timer of 176.
         * Copy that behaviour here.
         */
-       buses &= ~PCI_SEC_LATENCY_TIMER_MASK;
-       buses |= FIELD_PREP(PCI_SEC_LATENCY_TIMER_MASK, CARDBUS_LATENCY_TIMER);
+       FIELD_MODIFY(PCI_SEC_LATENCY_TIMER_MASK, &buses, CARDBUS_LATENCY_TIMER);
 
        /* We need to blast all three values with a single write */
        pci_write_config_dword(dev, PCI_PRIMARY_BUS, buses);
index 91145e8d9d95127dc1e276d1d3be518727fecb11..655ffd60e62f6a47a203fefdd589e58b65d01512 100644 (file)
@@ -139,8 +139,7 @@ static void set_ctrl_reg_req_en(struct pci_dev *pdev, u8 req_type)
 
        pci_read_config_dword(pdev, pdev->tph_cap + PCI_TPH_CTRL, &reg);
 
-       reg &= ~PCI_TPH_CTRL_REQ_EN_MASK;
-       reg |= FIELD_PREP(PCI_TPH_CTRL_REQ_EN_MASK, req_type);
+       FIELD_MODIFY(PCI_TPH_CTRL_REQ_EN_MASK, &reg, req_type);
 
        pci_write_config_dword(pdev, pdev->tph_cap + PCI_TPH_CTRL, reg);
 }
@@ -427,11 +426,8 @@ int pcie_enable_tph(struct pci_dev *pdev, int mode)
        /* Write them into TPH control register */
        pci_read_config_dword(pdev, pdev->tph_cap + PCI_TPH_CTRL, &reg);
 
-       reg &= ~PCI_TPH_CTRL_MODE_SEL_MASK;
-       reg |= FIELD_PREP(PCI_TPH_CTRL_MODE_SEL_MASK, pdev->tph_mode);
-
-       reg &= ~PCI_TPH_CTRL_REQ_EN_MASK;
-       reg |= FIELD_PREP(PCI_TPH_CTRL_REQ_EN_MASK, pdev->tph_req_type);
+       FIELD_MODIFY(PCI_TPH_CTRL_MODE_SEL_MASK, &reg, pdev->tph_mode);
+       FIELD_MODIFY(PCI_TPH_CTRL_REQ_EN_MASK, &reg, pdev->tph_req_type);
 
        pci_write_config_dword(pdev, pdev->tph_cap + PCI_TPH_CTRL, reg);