Message ID | 20250214173944.47506-4-james.quinlan@broadcom.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | PCI: brcmstb: Misc small tweaks and fixes | expand |
On 2/14/2025 9:39 AM, Jim Quinlan wrote: > When setting a register field it was assumed that the field started at the > lsb of the register. Although the masks do indeed start at the lsb, and > this will probably not change, it is prudent to use a method that makes no > assumption about the mask's placement in the register. > > The uXXp_replace_bits() calls are used since they are already prevalent > in this driver. > > Signed-off-by: Jim Quinlan <james.quinlan@broadcom.com> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
On Fri, Feb 14, 2025 at 12:39:31PM -0500, Jim Quinlan wrote: > When setting a register field it was assumed that the field started at the s/a register field/LNKCAP and LNKCTL2 register fields, > lsb of the register. Although the masks do indeed start at the lsb, and > this will probably not change, it is prudent to use a method that makes no > assumption about the mask's placement in the register. > > The uXXp_replace_bits() calls are used since they are already prevalent > in this driver. > > Signed-off-by: Jim Quinlan <james.quinlan@broadcom.com> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> - Mani > --- > drivers/pci/controller/pcie-brcmstb.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c > index 98542e74aa16..e0b20f58c604 100644 > --- a/drivers/pci/controller/pcie-brcmstb.c > +++ b/drivers/pci/controller/pcie-brcmstb.c > @@ -415,10 +415,10 @@ static void brcm_pcie_set_gen(struct brcm_pcie *pcie, int gen) > u16 lnkctl2 = readw(pcie->base + BRCM_PCIE_CAP_REGS + PCI_EXP_LNKCTL2); > u32 lnkcap = readl(pcie->base + PCIE_RC_CFG_PRIV1_LINK_CAPABILITY); > > - lnkcap = (lnkcap & ~PCI_EXP_LNKCAP_SLS) | gen; > + u32p_replace_bits(&lnkcap, gen, PCI_EXP_LNKCAP_SLS); > writel(lnkcap, pcie->base + PCIE_RC_CFG_PRIV1_LINK_CAPABILITY); > > - lnkctl2 = (lnkctl2 & ~0xf) | gen; > + u16p_replace_bits(&lnkctl2, gen, PCI_EXP_LNKCTL2_TLS); > writew(lnkctl2, pcie->base + BRCM_PCIE_CAP_REGS + PCI_EXP_LNKCTL2); > } > > -- > 2.43.0 >
diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c index 98542e74aa16..e0b20f58c604 100644 --- a/drivers/pci/controller/pcie-brcmstb.c +++ b/drivers/pci/controller/pcie-brcmstb.c @@ -415,10 +415,10 @@ static void brcm_pcie_set_gen(struct brcm_pcie *pcie, int gen) u16 lnkctl2 = readw(pcie->base + BRCM_PCIE_CAP_REGS + PCI_EXP_LNKCTL2); u32 lnkcap = readl(pcie->base + PCIE_RC_CFG_PRIV1_LINK_CAPABILITY); - lnkcap = (lnkcap & ~PCI_EXP_LNKCAP_SLS) | gen; + u32p_replace_bits(&lnkcap, gen, PCI_EXP_LNKCAP_SLS); writel(lnkcap, pcie->base + PCIE_RC_CFG_PRIV1_LINK_CAPABILITY); - lnkctl2 = (lnkctl2 & ~0xf) | gen; + u16p_replace_bits(&lnkctl2, gen, PCI_EXP_LNKCTL2_TLS); writew(lnkctl2, pcie->base + BRCM_PCIE_CAP_REGS + PCI_EXP_LNKCTL2); }
When setting a register field it was assumed that the field started at the lsb of the register. Although the masks do indeed start at the lsb, and this will probably not change, it is prudent to use a method that makes no assumption about the mask's placement in the register. The uXXp_replace_bits() calls are used since they are already prevalent in this driver. Signed-off-by: Jim Quinlan <james.quinlan@broadcom.com> --- drivers/pci/controller/pcie-brcmstb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)