scsi: ufs: ufs-mediatek: Add stage information for ref-clk control
Add "PRE_CHANGE" and "POST_CHANGE" information for ref-clk control to precisely configure the low-power state of the parent of ref-clk. Link: https://lore.kernel.org/r/20220623035052.18802-5-stanley.chu@mediatek.com Reviewed-by: Stanley Chu <stanley.chu@mediatek.com> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Peter Wang <peter.wang@mediatek.com> Signed-off-by: Stanley Chu <stanley.chu@mediatek.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
2bae03a6ac
commit
f53f191357
@ -244,8 +244,9 @@ static int ufs_mtk_setup_ref_clk(struct ufs_hba *hba, bool on)
|
||||
if (host->ref_clk_enabled == on)
|
||||
return 0;
|
||||
|
||||
ufs_mtk_ref_clk_notify(on, PRE_CHANGE, res);
|
||||
|
||||
if (on) {
|
||||
ufs_mtk_ref_clk_notify(on, res);
|
||||
ufshcd_writel(hba, REFCLK_REQUEST, REG_UFS_REFCLK_CTRL);
|
||||
} else {
|
||||
ufshcd_delay_us(host->ref_clk_gating_wait_us, 10);
|
||||
@ -267,7 +268,7 @@ static int ufs_mtk_setup_ref_clk(struct ufs_hba *hba, bool on)
|
||||
|
||||
dev_err(hba->dev, "missing ack of refclk req, reg: 0x%x\n", value);
|
||||
|
||||
ufs_mtk_ref_clk_notify(host->ref_clk_enabled, res);
|
||||
ufs_mtk_ref_clk_notify(host->ref_clk_enabled, POST_CHANGE, res);
|
||||
|
||||
return -ETIMEDOUT;
|
||||
|
||||
@ -275,8 +276,8 @@ out:
|
||||
host->ref_clk_enabled = on;
|
||||
if (on)
|
||||
ufshcd_delay_us(host->ref_clk_ungating_wait_us, 10);
|
||||
else
|
||||
ufs_mtk_ref_clk_notify(on, res);
|
||||
|
||||
ufs_mtk_ref_clk_notify(on, POST_CHANGE, res);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -189,8 +189,8 @@ static void _ufs_mtk_smc(struct ufs_mtk_smc_arg s)
|
||||
#define ufs_mtk_crypto_ctrl(res, enable) \
|
||||
ufs_mtk_smc(UFS_MTK_SIP_CRYPTO_CTRL, &(res), enable)
|
||||
|
||||
#define ufs_mtk_ref_clk_notify(on, res) \
|
||||
ufs_mtk_smc(UFS_MTK_SIP_REF_CLK_NOTIFICATION, &(res), on)
|
||||
#define ufs_mtk_ref_clk_notify(on, stage, res) \
|
||||
ufs_mtk_smc(UFS_MTK_SIP_REF_CLK_NOTIFICATION, &(res), on, stage)
|
||||
|
||||
#define ufs_mtk_device_reset_ctrl(high, res) \
|
||||
ufs_mtk_smc(UFS_MTK_SIP_DEVICE_RESET, &(res), high)
|
||||
|
Loading…
Reference in New Issue
Block a user