Thread (10 messages) 10 messages, 3 authors, 2020-02-02

Re: [PATCH v3 1/4] scsi: ufs-mediatek: ensure UniPro is not powered down before linkup

From: Alim Akhtar <hidden>
Date: 2020-02-02 14:35:35
Also in: linux-mediatek, linux-scsi, lkml

HI Stanley

On Wed, Jan 29, 2020 at 1:09 PM Stanley Chu [off-list ref] wrote:
MediaTek Chipsets can enter proprietary UniPro low-power mode during
suspend while link is in hibern8 state. Make sure leaving low-power
mode before every link startup to prevent lockup in any possible error recovery
path.

In the same time, re-factor related funcitons to improve code readability.

Signed-off-by: Stanley Chu <redacted>
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
quoted hunk ↗ jump to hunk
---
 drivers/scsi/ufs/ufs-mediatek.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/scsi/ufs/ufs-mediatek.c b/drivers/scsi/ufs/ufs-mediatek.c
index 53eae5fe2ade..7ac838cc15d1 100644
--- a/drivers/scsi/ufs/ufs-mediatek.c
+++ b/drivers/scsi/ufs/ufs-mediatek.c
@@ -30,6 +30,11 @@
 #define ufs_mtk_device_reset_ctrl(high, res) \
        ufs_mtk_smc(UFS_MTK_SIP_DEVICE_RESET, high, res)

+#define ufs_mtk_unipro_powerdown(hba, powerdown) \
+       ufshcd_dme_set(hba, \
+                      UIC_ARG_MIB_SEL(VS_UNIPROPOWERDOWNCONTROL, 0), \
+                      powerdown)
+
 static void ufs_mtk_cfg_unipro_cg(struct ufs_hba *hba, bool enable)
 {
        u32 tmp;
@@ -290,6 +295,8 @@ static int ufs_mtk_pre_link(struct ufs_hba *hba)
        int ret;
        u32 tmp;

+       ufs_mtk_unipro_powerdown(hba, 0);
+
        /* disable deep stall */
        ret = ufshcd_dme_get(hba, UIC_ARG_MIB(VS_SAVEPOWERCONTROL), &tmp);
        if (ret)
@@ -390,9 +397,7 @@ static int ufs_mtk_link_set_hpm(struct ufs_hba *hba)
        if (err)
                return err;

-       err = ufshcd_dme_set(hba,
-                            UIC_ARG_MIB_SEL(VS_UNIPROPOWERDOWNCONTROL, 0),
-                            0);
+       err = ufs_mtk_unipro_powerdown(hba, 0);
        if (err)
                return err;
@@ -413,14 +418,10 @@ static int ufs_mtk_link_set_lpm(struct ufs_hba *hba)
 {
        int err;

-       err = ufshcd_dme_set(hba,
-                            UIC_ARG_MIB_SEL(VS_UNIPROPOWERDOWNCONTROL, 0),
-                            1);
+       err = ufs_mtk_unipro_powerdown(hba, 1);
        if (err) {
                /* Resume UniPro state for following error recovery */
-               ufshcd_dme_set(hba,
-                              UIC_ARG_MIB_SEL(VS_UNIPROPOWERDOWNCONTROL, 0),
-                              0);
+               ufs_mtk_unipro_powerdown(hba, 0);
                return err;
        }

--
2.18.0


-- 
Regards,
Alim

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help