Message ID | 20250318144944.19749-5-quic_nitirawa@quicinc.com |
---|---|
State | New |
Headers | show |
Series | Refactor phy powerup sequence | expand |
On 18/03/2025 15:49, Nitin Rawat wrote: > Rename qmp_ufs_disable to qmp_ufs_power_off and refactor > the code to move all the power off sequence to qmp_ufs_power_off. > > Co-developed-by: Ram Kumar Dwivedi <quic_rdwivedi@quicinc.com> > Signed-off-by: Ram Kumar Dwivedi <quic_rdwivedi@quicinc.com> > Signed-off-by: Nitin Rawat <quic_nitirawa@quicinc.com> > --- > drivers/phy/qualcomm/phy-qcom-qmp-ufs.c | 41 ++----------------------- > 1 file changed, 3 insertions(+), 38 deletions(-) > > diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c b/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c > index 3a80c2c110d2..675fef106d3b 100644 > --- a/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c > +++ b/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c > @@ -1757,19 +1757,6 @@ static void qmp_ufs_init_registers(struct qmp_ufs *qmp, const struct qmp_phy_cfg > qmp_ufs_init_all(qmp, &cfg->tbls_hs_b); > } > > -static int qmp_ufs_com_exit(struct qmp_ufs *qmp) > -{ > - const struct qmp_phy_cfg *cfg = qmp->cfg; > - > - reset_control_assert(qmp->ufs_reset); > - > - clk_bulk_disable_unprepare(qmp->num_clks, qmp->clks); > - > - regulator_bulk_disable(cfg->num_vregs, qmp->vregs); > - > - return 0; > -} > - > static int qmp_ufs_power_on(struct phy *phy) > { > struct qmp_ufs *qmp = phy_get_drvdata(phy); > @@ -1839,39 +1826,17 @@ static int qmp_ufs_power_off(struct phy *phy) > struct qmp_ufs *qmp = phy_get_drvdata(phy); > const struct qmp_phy_cfg *cfg = qmp->cfg; > > - /* PHY reset */ > - if (!cfg->no_pcs_sw_reset) > - qphy_setbits(qmp->pcs, cfg->regs[QPHY_SW_RESET], SW_RESET); > - > - /* stop SerDes */ > - qphy_clrbits(qmp->pcs, cfg->regs[QPHY_START_CTRL], SERDES_START); > - > /* Put PHY into POWER DOWN state: active low */ > qphy_clrbits(qmp->pcs, cfg->regs[QPHY_PCS_POWER_DOWN_CONTROL], > SW_PWRDN); So where goes this code ? I think it should go in a new exit PHY op. > > - return 0; > -} > - > -static int qmp_ufs_exit(struct phy *phy) > -{ > - struct qmp_ufs *qmp = phy_get_drvdata(phy); > + clk_bulk_disable_unprepare(qmp->num_clks, qmp->clks); > > - qmp_ufs_com_exit(qmp); > + regulator_bulk_disable(cfg->num_vregs, qmp->vregs); > > return 0; > } > > -static int qmp_ufs_disable(struct phy *phy) > -{ > - int ret; > - > - ret = qmp_ufs_power_off(phy); > - if (ret) > - return ret; > - return qmp_ufs_exit(phy); > -} > - > static int qmp_ufs_set_mode(struct phy *phy, enum phy_mode mode, int submode) > { > struct qmp_ufs *qmp = phy_get_drvdata(phy); > @@ -1890,7 +1855,7 @@ static int qmp_ufs_set_mode(struct phy *phy, enum phy_mode mode, int submode) > > static const struct phy_ops qcom_qmp_ufs_phy_ops = { > .power_on = qmp_ufs_power_on, > - .power_off = qmp_ufs_disable, > + .power_off = qmp_ufs_power_off, > .calibrate = qmp_ufs_phy_calibrate, > .set_mode = qmp_ufs_set_mode, > .owner = THIS_MODULE, > -- > 2.48.1 > >
diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c b/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c index 3a80c2c110d2..675fef106d3b 100644 --- a/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c +++ b/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c @@ -1757,19 +1757,6 @@ static void qmp_ufs_init_registers(struct qmp_ufs *qmp, const struct qmp_phy_cfg qmp_ufs_init_all(qmp, &cfg->tbls_hs_b); } -static int qmp_ufs_com_exit(struct qmp_ufs *qmp) -{ - const struct qmp_phy_cfg *cfg = qmp->cfg; - - reset_control_assert(qmp->ufs_reset); - - clk_bulk_disable_unprepare(qmp->num_clks, qmp->clks); - - regulator_bulk_disable(cfg->num_vregs, qmp->vregs); - - return 0; -} - static int qmp_ufs_power_on(struct phy *phy) { struct qmp_ufs *qmp = phy_get_drvdata(phy); @@ -1839,39 +1826,17 @@ static int qmp_ufs_power_off(struct phy *phy) struct qmp_ufs *qmp = phy_get_drvdata(phy); const struct qmp_phy_cfg *cfg = qmp->cfg; - /* PHY reset */ - if (!cfg->no_pcs_sw_reset) - qphy_setbits(qmp->pcs, cfg->regs[QPHY_SW_RESET], SW_RESET); - - /* stop SerDes */ - qphy_clrbits(qmp->pcs, cfg->regs[QPHY_START_CTRL], SERDES_START); - /* Put PHY into POWER DOWN state: active low */ qphy_clrbits(qmp->pcs, cfg->regs[QPHY_PCS_POWER_DOWN_CONTROL], SW_PWRDN); - return 0; -} - -static int qmp_ufs_exit(struct phy *phy) -{ - struct qmp_ufs *qmp = phy_get_drvdata(phy); + clk_bulk_disable_unprepare(qmp->num_clks, qmp->clks); - qmp_ufs_com_exit(qmp); + regulator_bulk_disable(cfg->num_vregs, qmp->vregs); return 0; } -static int qmp_ufs_disable(struct phy *phy) -{ - int ret; - - ret = qmp_ufs_power_off(phy); - if (ret) - return ret; - return qmp_ufs_exit(phy); -} - static int qmp_ufs_set_mode(struct phy *phy, enum phy_mode mode, int submode) { struct qmp_ufs *qmp = phy_get_drvdata(phy); @@ -1890,7 +1855,7 @@ static int qmp_ufs_set_mode(struct phy *phy, enum phy_mode mode, int submode) static const struct phy_ops qcom_qmp_ufs_phy_ops = { .power_on = qmp_ufs_power_on, - .power_off = qmp_ufs_disable, + .power_off = qmp_ufs_power_off, .calibrate = qmp_ufs_phy_calibrate, .set_mode = qmp_ufs_set_mode, .owner = THIS_MODULE,