PCI: dwc: Return bool from link up check
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
This commit is contained in:
committed by
Manivannan Sadhasivam
parent
286ed198b8
commit
f46bfb1d3c
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user