Hi Stanley On Wed, Jan 29, 2020 at 1:11 PM Stanley Chu <stanley.chu@xxxxxxxxxxxx> wrote: > > If system suspend or runtime suspend mode is configured as > linkoff state, phy can be powered off and reference clock > can be gated in MediaTek Chipsets. > > In the same time, remove redundant reference clock control > in suspend and resume callbacks because such control can be > well-handled in setup_clocks callback.. > > Signed-off-by: Stanley Chu <stanley.chu@xxxxxxxxxxxx> Reviewed-by: Alim Akhtar <alim.akhtar@xxxxxxxxxxx> > --- > drivers/scsi/ufs/ufs-mediatek.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/drivers/scsi/ufs/ufs-mediatek.c b/drivers/scsi/ufs/ufs-mediatek.c > index 7ac838cc15d1..d78897a14905 100644 > --- a/drivers/scsi/ufs/ufs-mediatek.c > +++ b/drivers/scsi/ufs/ufs-mediatek.c > @@ -167,7 +167,7 @@ static int ufs_mtk_setup_clocks(struct ufs_hba *hba, bool on, > > switch (status) { > case PRE_CHANGE: > - if (!on) { > + if (!on && !ufshcd_is_link_active(hba)) { > ufs_mtk_setup_ref_clk(hba, on); > ret = phy_power_off(host->mphy); > } > @@ -437,10 +437,11 @@ static int ufs_mtk_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op) > err = ufs_mtk_link_set_lpm(hba); > if (err) > return -EAGAIN; > - phy_power_off(host->mphy); > - ufs_mtk_setup_ref_clk(hba, false); > } > > + if (!ufshcd_is_link_active(hba)) > + phy_power_off(host->mphy); > + > return 0; > } > > @@ -449,9 +450,10 @@ static int ufs_mtk_resume(struct ufs_hba *hba, enum ufs_pm_op pm_op) > struct ufs_mtk_host *host = ufshcd_get_variant(hba); > int err; > > - if (ufshcd_is_link_hibern8(hba)) { > - ufs_mtk_setup_ref_clk(hba, true); > + if (!ufshcd_is_link_active(hba)) > phy_power_on(host->mphy); > + > + if (ufshcd_is_link_hibern8(hba)) { > err = ufs_mtk_link_set_hpm(hba); > if (err) > return err; > -- > 2.18.0 -- Regards, Alim