[PATCH v4 2/6] phy: qcom-qmp-pcie: split PHY programming to separate functions
Johan Hovold
johan at kernel.org
Mon Sep 26 00:33:31 PDT 2022
On Sat, Sep 24, 2022 at 07:02:58PM +0300, Dmitry Baryshkov wrote:
> Split the code using PHY programming tables into separate functions,
> which take a single struct qmp_phy_cfg_tables instance.
>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
> ---
> drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 80 ++++++++++++++----------
> 1 file changed, 48 insertions(+), 32 deletions(-)
>
> diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c b/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c
> index 30806816c8b0..6e8c74585670 100644
> --- a/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c
> +++ b/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c
> @@ -1877,15 +1877,53 @@ static void qmp_pcie_configure(void __iomem *base,
> qmp_pcie_configure_lane(base, regs, tbl, num, 0xff);
> }
>
> -static int qmp_pcie_serdes_init(struct qmp_phy *qphy)
> +static void qmp_pcie_serdes_init(struct qmp_phy *qphy, const struct qmp_phy_cfg_tables *tables)
> {
> const struct qmp_phy_cfg *cfg = qphy->cfg;
> void __iomem *serdes = qphy->serdes;
>
> - qmp_pcie_configure(serdes, cfg->regs, cfg->common.serdes_tbl, cfg->common.serdes_tbl_num);
> - qmp_pcie_configure(serdes, cfg->regs, cfg->extra->serdes_tbl, cfg->extra->serdes_tbl_num);
> + if (!tables)
> + return;
>
> - return 0;
> + qmp_pcie_configure(serdes, cfg->regs, tables->serdes_tbl, tables->serdes_tbl_num);
See what I mean about "_tbl" being redundant in "tables->serdes_tbl"?
> +}
> static int qmp_pcie_init(struct phy *phy)
> @@ -1957,15 +1995,13 @@ static int qmp_pcie_power_on(struct phy *phy)
> struct qmp_phy *qphy = phy_get_drvdata(phy);
> struct qcom_qmp *qmp = qphy->qmp;
> const struct qmp_phy_cfg *cfg = qphy->cfg;
> - void __iomem *tx = qphy->tx;
> - void __iomem *rx = qphy->rx;
> void __iomem *pcs = qphy->pcs;
> - void __iomem *pcs_misc = qphy->pcs_misc;
> void __iomem *status;
> unsigned int mask, val, ready;
> int ret;
>
> - qmp_pcie_serdes_init(qphy);
> + qmp_pcie_serdes_init(qphy, &cfg->common);
> + qmp_pcie_serdes_init(qphy, cfg->extra);
And "common" and "extra" doesn't really say what it is you're passing
here.
>
> ret = clk_prepare_enable(qphy->pipe_clk);
> if (ret) {
Johan
More information about the linux-phy
mailing list