]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
PCI: dwc: Return bool from link up check
authorHans Zhang <18255117159@163.com>
Sat, 10 May 2025 16:07:08 +0000 (00:07 +0800)
committerManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Tue, 13 May 2025 09:12:59 +0000 (10:12 +0100)
PCIe link status check is supposed to return a boolean to indicate whether
the link is up or not. So, modify the link_up callbacks and
dw_pcie_link_up() function to return bool instead of int.

Signed-off-by: Hans Zhang <18255117159@163.com>
[mani: commit message reword]
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Reviewed-by: Niklas Cassel <cassel@kernel.org>
Link: https://patch.msgid.link/20250510160710.392122-2-18255117159@163.com
18 files changed:
drivers/pci/controller/dwc/pci-dra7xx.c
drivers/pci/controller/dwc/pci-exynos.c
drivers/pci/controller/dwc/pci-keystone.c
drivers/pci/controller/dwc/pci-meson.c
drivers/pci/controller/dwc/pcie-armada8k.c
drivers/pci/controller/dwc/pcie-designware.c
drivers/pci/controller/dwc/pcie-designware.h
drivers/pci/controller/dwc/pcie-dw-rockchip.c
drivers/pci/controller/dwc/pcie-histb.c
drivers/pci/controller/dwc/pcie-keembay.c
drivers/pci/controller/dwc/pcie-kirin.c
drivers/pci/controller/dwc/pcie-qcom-ep.c
drivers/pci/controller/dwc/pcie-qcom.c
drivers/pci/controller/dwc/pcie-rcar-gen4.c
drivers/pci/controller/dwc/pcie-spear13xx.c
drivers/pci/controller/dwc/pcie-tegra194.c
drivers/pci/controller/dwc/pcie-uniphier.c
drivers/pci/controller/dwc/pcie-visconti.c

index 33d6bf460ffe5bb724a061558dd93ec7bdadc336..58f7d04ff37f88ce7f8263cd20fffbb5a05e70c4 100644 (file)
@@ -118,12 +118,12 @@ static u64 dra7xx_pcie_cpu_addr_fixup(struct dw_pcie *pci, u64 cpu_addr)
        return cpu_addr & DRA7XX_CPU_TO_BUS_ADDR;
 }
 
-static int dra7xx_pcie_link_up(struct dw_pcie *pci)
+static bool dra7xx_pcie_link_up(struct dw_pcie *pci)
 {
        struct dra7xx_pcie *dra7xx = to_dra7xx_pcie(pci);
        u32 reg = dra7xx_pcie_readl(dra7xx, PCIECTRL_DRA7XX_CONF_PHY_CS);
 
-       return !!(reg & LINK_UP);
+       return reg & LINK_UP;
 }
 
 static void dra7xx_pcie_stop_link(struct dw_pcie *pci)
index ace736b025b1b7d4cdcbd51d2e9d99af29f21149..1f0e98d07109353e7321667e98ead2695151184c 100644 (file)
@@ -209,12 +209,12 @@ static struct pci_ops exynos_pci_ops = {
        .write = exynos_pcie_wr_own_conf,
 };
 
-static int exynos_pcie_link_up(struct dw_pcie *pci)
+static bool exynos_pcie_link_up(struct dw_pcie *pci)
 {
        struct exynos_pcie *ep = to_exynos_pcie(pci);
        u32 val = exynos_pcie_readl(ep->elbi_base, PCIE_ELBI_RDLH_LINKUP);
 
-       return (val & PCIE_ELBI_XMLH_LINKUP);
+       return val & PCIE_ELBI_XMLH_LINKUP;
 }
 
 static int exynos_pcie_host_init(struct dw_pcie_rp *pp)
index 76a37368ae4f922a042fbf465ea716e0329fd292..968464530e3d6cadeab46f89a69fda4b440eba2d 100644 (file)
@@ -492,13 +492,12 @@ static struct pci_ops ks_pcie_ops = {
  * @pci: A pointer to the dw_pcie structure which holds the DesignWare PCIe host
  *      controller driver information.
  */
-static int ks_pcie_link_up(struct dw_pcie *pci)
+static bool ks_pcie_link_up(struct dw_pcie *pci)
 {
        u32 val;
 
        val = dw_pcie_readl_dbi(pci, PCIE_PORT_DEBUG0);
-       val &= PORT_LOGIC_LTSSM_STATE_MASK;
-       return (val == PORT_LOGIC_LTSSM_STATE_L0);
+       return (val & PORT_LOGIC_LTSSM_STATE_MASK) == PORT_LOGIC_LTSSM_STATE_L0;
 }
 
 static void ks_pcie_stop_link(struct dw_pcie *pci)
index db9482a113e984fb23bdfe2944ff16eb0f4b7066..787469d1b396d4c7b3e28edfe276b7b997fb8aee 100644 (file)
@@ -335,7 +335,7 @@ static struct pci_ops meson_pci_ops = {
        .write = pci_generic_config_write,
 };
 
-static int meson_pcie_link_up(struct dw_pcie *pci)
+static bool meson_pcie_link_up(struct dw_pcie *pci)
 {
        struct meson_pcie *mp = to_meson_pcie(pci);
        struct device *dev = pci->dev;
@@ -363,7 +363,7 @@ static int meson_pcie_link_up(struct dw_pcie *pci)
                        dev_dbg(dev, "speed_okay\n");
 
                if (smlh_up && rdlh_up && ltssm_up && speed_okay)
-                       return 1;
+                       return true;
 
                cnt++;
 
@@ -371,7 +371,7 @@ static int meson_pcie_link_up(struct dw_pcie *pci)
        } while (cnt < WAIT_LINKUP_TIMEOUT);
 
        dev_err(dev, "error: wait linkup timeout\n");
-       return 0;
+       return false;
 }
 
 static int meson_pcie_host_init(struct dw_pcie_rp *pp)
index b5c599ccaacf0c4d1e834582dc4c97deb43114c6..c2650fd0d45890995ba0d4bd288019c535acf79a 100644 (file)
@@ -139,7 +139,7 @@ static int armada8k_pcie_setup_phys(struct armada8k_pcie *pcie)
        return ret;
 }
 
-static int armada8k_pcie_link_up(struct dw_pcie *pci)
+static bool armada8k_pcie_link_up(struct dw_pcie *pci)
 {
        u32 reg;
        u32 mask = PCIE_GLB_STS_RDLH_LINK_UP | PCIE_GLB_STS_PHY_LINK_UP;
@@ -147,10 +147,10 @@ static int armada8k_pcie_link_up(struct dw_pcie *pci)
        reg = dw_pcie_readl_dbi(pci, PCIE_GLOBAL_STATUS_REG);
 
        if ((reg & mask) == mask)
-               return 1;
+               return true;
 
        dev_dbg(pci->dev, "No link detected (Global-Status: 0x%08x).\n", reg);
-       return 0;
+       return false;
 }
 
 static int armada8k_pcie_start_link(struct dw_pcie *pci)
index 97d76d3dc066efeff093de28dcac64411dad51aa..b3615d125942ca1125abd8c7fa46b52ddf3b5102 100644 (file)
@@ -711,7 +711,7 @@ int dw_pcie_wait_for_link(struct dw_pcie *pci)
 }
 EXPORT_SYMBOL_GPL(dw_pcie_wait_for_link);
 
-int dw_pcie_link_up(struct dw_pcie *pci)
+bool dw_pcie_link_up(struct dw_pcie *pci)
 {
        u32 val;
 
index 56aafdbcdacaff6b738800fb03ae60eb13c9a0f2..4dd16aa4b39e1aa1398b24a7146b9cdb065ea35d 100644 (file)
@@ -462,7 +462,7 @@ struct dw_pcie_ops {
                             size_t size, u32 val);
        void    (*write_dbi2)(struct dw_pcie *pcie, void __iomem *base, u32 reg,
                              size_t size, u32 val);
-       int     (*link_up)(struct dw_pcie *pcie);
+       bool    (*link_up)(struct dw_pcie *pcie);
        enum dw_pcie_ltssm (*get_ltssm)(struct dw_pcie *pcie);
        int     (*start_link)(struct dw_pcie *pcie);
        void    (*stop_link)(struct dw_pcie *pcie);
@@ -537,7 +537,7 @@ int dw_pcie_write(void __iomem *addr, int size, u32 val);
 u32 dw_pcie_read_dbi(struct dw_pcie *pci, u32 reg, size_t size);
 void dw_pcie_write_dbi(struct dw_pcie *pci, u32 reg, size_t size, u32 val);
 void dw_pcie_write_dbi2(struct dw_pcie *pci, u32 reg, size_t size, u32 val);
-int dw_pcie_link_up(struct dw_pcie *pci);
+bool dw_pcie_link_up(struct dw_pcie *pci);
 void dw_pcie_upconfig_setup(struct dw_pcie *pci);
 int dw_pcie_wait_for_link(struct dw_pcie *pci);
 int dw_pcie_prog_outbound_atu(struct dw_pcie *pci,
index 3c6ab71c996ec1246954f52a9454c8ae67956a54..ae171a545df6d5987f41eb5c6b08f1090320bc4f 100644 (file)
@@ -183,7 +183,7 @@ static void rockchip_pcie_disable_ltssm(struct rockchip_pcie *rockchip)
                                 PCIE_CLIENT_GENERAL_CON);
 }
 
-static int rockchip_pcie_link_up(struct dw_pcie *pci)
+static bool rockchip_pcie_link_up(struct dw_pcie *pci)
 {
        struct rockchip_pcie *rockchip = to_rockchip_pcie(pci);
        u32 val = rockchip_pcie_get_ltssm(rockchip);
index 1f2f4c28a94957c9164f4893993bef0a3a5e9b71..a52071589377aef91c3312202ee6a8e5a9b45aa2 100644 (file)
@@ -151,7 +151,7 @@ static struct pci_ops histb_pci_ops = {
        .write = histb_pcie_wr_own_conf,
 };
 
-static int histb_pcie_link_up(struct dw_pcie *pci)
+static bool histb_pcie_link_up(struct dw_pcie *pci)
 {
        struct histb_pcie *hipcie = to_histb_pcie(pci);
        u32 regval;
@@ -160,11 +160,8 @@ static int histb_pcie_link_up(struct dw_pcie *pci)
        regval = histb_pcie_readl(hipcie, PCIE_SYS_STAT0);
        status = histb_pcie_readl(hipcie, PCIE_SYS_STAT4);
        status &= PCIE_LTSSM_STATE_MASK;
-       if ((regval & PCIE_XMLH_LINK_UP) && (regval & PCIE_RDLH_LINK_UP) &&
-           (status == PCIE_LTSSM_STATE_ACTIVE))
-               return 1;
-
-       return 0;
+       return ((regval & PCIE_XMLH_LINK_UP) && (regval & PCIE_RDLH_LINK_UP) &&
+               (status == PCIE_LTSSM_STATE_ACTIVE));
 }
 
 static int histb_pcie_start_link(struct dw_pcie *pci)
index 278205db60a2ed57a92b04ad8858bdca50b7197b..67dd3337b4473ea5eac23f80656b39dbadae451f 100644 (file)
@@ -101,7 +101,7 @@ static void keembay_pcie_ltssm_set(struct keembay_pcie *pcie, bool enable)
        writel(val, pcie->apb_base + PCIE_REGS_PCIE_APP_CNTRL);
 }
 
-static int keembay_pcie_link_up(struct dw_pcie *pci)
+static bool keembay_pcie_link_up(struct dw_pcie *pci)
 {
        struct keembay_pcie *pcie = dev_get_drvdata(pci->dev);
        u32 val;
index d0e6a3811b001acc8975d01935e7237c38d1b73b..91559c8b1866ed80a1351b532132837a69396419 100644 (file)
@@ -586,16 +586,13 @@ static void kirin_pcie_write_dbi(struct dw_pcie *pci, void __iomem *base,
        kirin_pcie_sideband_dbi_w_mode(kirin_pcie, false);
 }
 
-static int kirin_pcie_link_up(struct dw_pcie *pci)
+static bool kirin_pcie_link_up(struct dw_pcie *pci)
 {
        struct kirin_pcie *kirin_pcie = to_kirin_pcie(pci);
        u32 val;
 
        regmap_read(kirin_pcie->apb, PCIE_APB_PHY_STATUS0, &val);
-       if ((val & PCIE_LINKUP_ENABLE) == PCIE_LINKUP_ENABLE)
-               return 1;
-
-       return 0;
+       return (val & PCIE_LINKUP_ENABLE) == PCIE_LINKUP_ENABLE;
 }
 
 static int kirin_pcie_start_link(struct dw_pcie *pci)
index 46b1c6d19974a5161c8567ece85750c7b0a270b4..b3f7f42fa852654bf0db6e649064bddac2731479 100644 (file)
@@ -261,7 +261,7 @@ static void qcom_pcie_ep_configure_tcsr(struct qcom_pcie_ep *pcie_ep)
        }
 }
 
-static int qcom_pcie_dw_link_up(struct dw_pcie *pci)
+static bool qcom_pcie_dw_link_up(struct dw_pcie *pci)
 {
        struct qcom_pcie_ep *pcie_ep = to_pcie_ep(pci);
        u32 reg;
index dc98ae63362db0422384b1879a2b9a7dc564d091..ba0dd1717a58aa681d31c3db78b80bb5f3af081a 100644 (file)
@@ -1221,12 +1221,12 @@ static int qcom_pcie_post_init_2_9_0(struct qcom_pcie *pcie)
        return 0;
 }
 
-static int qcom_pcie_link_up(struct dw_pcie *pci)
+static bool qcom_pcie_link_up(struct dw_pcie *pci)
 {
        u16 offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP);
        u16 val = readw(pci->dbi_base + offset + PCI_EXP_LNKSTA);
 
-       return !!(val & PCI_EXP_LNKSTA_DLLLA);
+       return val & PCI_EXP_LNKSTA_DLLLA;
 }
 
 static int qcom_pcie_host_init(struct dw_pcie_rp *pp)
index fc872dd35029c083da58144dce23cd1ce80f9374..ccb94f4a215f75259357f43e793a36d8282a6e24 100644 (file)
@@ -87,7 +87,7 @@ struct rcar_gen4_pcie {
 #define to_rcar_gen4_pcie(_dw) container_of(_dw, struct rcar_gen4_pcie, dw)
 
 /* Common */
-static int rcar_gen4_pcie_link_up(struct dw_pcie *dw)
+static bool rcar_gen4_pcie_link_up(struct dw_pcie *dw)
 {
        struct rcar_gen4_pcie *rcar = to_rcar_gen4_pcie(dw);
        u32 val, mask;
index ff986ced56b2eede7b0b7c6643912482d02f6c04..01794a9d3ad293419c9322ca53fe86036689b287 100644 (file)
@@ -110,15 +110,12 @@ static void spear13xx_pcie_enable_interrupts(struct spear13xx_pcie *spear13xx_pc
                                MSI_CTRL_INT, &app_reg->int_mask);
 }
 
-static int spear13xx_pcie_link_up(struct dw_pcie *pci)
+static bool spear13xx_pcie_link_up(struct dw_pcie *pci)
 {
        struct spear13xx_pcie *spear13xx_pcie = to_spear13xx_pcie(pci);
        struct pcie_app_reg __iomem *app_reg = spear13xx_pcie->app_base;
 
-       if (readl(&app_reg->app_status_1) & XMLH_LINK_UP)
-               return 1;
-
-       return 0;
+       return readl(&app_reg->app_status_1) & XMLH_LINK_UP;
 }
 
 static int spear13xx_pcie_host_init(struct dw_pcie_rp *pp)
index 5103995cd6c752bec2b170a87312c55f585700ef..55c47318e65a1eb3e292e71170cc6e444aa59e29 100644 (file)
@@ -1027,12 +1027,12 @@ retry_link:
        return 0;
 }
 
-static int tegra_pcie_dw_link_up(struct dw_pcie *pci)
+static bool tegra_pcie_dw_link_up(struct dw_pcie *pci)
 {
        struct tegra_pcie_dw *pcie = to_tegra_pcie(pci);
        u32 val = dw_pcie_readw_dbi(pci, pcie->pcie_cap_base + PCI_EXP_LNKSTA);
 
-       return !!(val & PCI_EXP_LNKSTA_DLLLA);
+       return val & PCI_EXP_LNKSTA_DLLLA;
 }
 
 static void tegra_pcie_dw_stop_link(struct dw_pcie *pci)
index 5757ca3803c99c6f44e94ecb54b87f64663f75f9..9d05b3a0579e16f4c3048511bcefa36314c8d774 100644 (file)
@@ -135,7 +135,7 @@ static int uniphier_pcie_wait_rc(struct uniphier_pcie *pcie)
        return 0;
 }
 
-static int uniphier_pcie_link_up(struct dw_pcie *pci)
+static bool uniphier_pcie_link_up(struct dw_pcie *pci)
 {
        struct uniphier_pcie *pcie = to_uniphier_pcie(pci);
        u32 val, mask;
index 318c278e65c898fd6a1675956403a8ad3f71db78..cdeac6177143cfea509c3f5d45a40d2fdc387c24 100644 (file)
@@ -121,13 +121,13 @@ static u32 visconti_mpu_readl(struct visconti_pcie *pcie, u32 reg)
        return readl_relaxed(pcie->mpu_base + reg);
 }
 
-static int visconti_pcie_link_up(struct dw_pcie *pci)
+static bool visconti_pcie_link_up(struct dw_pcie *pci)
 {
        struct visconti_pcie *pcie = dev_get_drvdata(pci->dev);
        void __iomem *addr = pcie->ulreg_base;
        u32 val = readl_relaxed(addr + PCIE_UL_REG_V_PHY_ST_02);
 
-       return !!(val & PCIE_UL_S_L0);
+       return val & PCIE_UL_S_L0;
 }
 
 static int visconti_pcie_start_link(struct dw_pcie *pci)