* [PATCH v5 1/2] scsi: ufs: Fix ufs clk specs violation
[not found] <1610090885-50099-1-git-send-email-ziqichen@codeaurora.org>
@ 2021-01-08 7:28 ` Ziqi Chen
2021-01-08 8:23 ` Can Guo
2021-01-08 7:28 ` [PATCH v5 2/2] scsi: ufs-qcom: Fix ufs RST_n " Ziqi Chen
1 sibling, 1 reply; 5+ messages in thread
From: Ziqi Chen @ 2021-01-08 7:28 UTC (permalink / raw)
To: asutoshd, nguyenb, cang, hongwus, rnayak, vinholikatti, jejb,
martin.petersen, linux-scsi, kernel-team, saravanak, salyzyn,
ziqichen, kwmad.kim, stanley.chu
Cc: Alim Akhtar, Avri Altman, James E.J. Bottomley, Bean Huo, open list
As per specs, e.g, JESD220E chapter 7.2, while powering
off/on the ufs device, REF_CLK signal should be between
VSS(Ground) and VCCQ/VCCQ2.
Signed-off-by: Ziqi Chen <ziqichen@codeaurora.org>
---
drivers/scsi/ufs/ufshcd.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index e221add..3f807f7 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -8686,8 +8686,6 @@ static int ufshcd_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op)
if (ret)
goto set_dev_active;
- ufshcd_vreg_set_lpm(hba);
-
disable_clks:
/*
* Call vendor specific suspend callback. As these callbacks may access
@@ -8711,6 +8709,8 @@ static int ufshcd_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op)
hba->clk_gating.state);
}
+ ufshcd_vreg_set_lpm(hba);
+
/* Put the host controller in low power mode if possible */
ufshcd_hba_vreg_set_lpm(hba);
goto out;
@@ -8778,18 +8778,18 @@ static int ufshcd_resume(struct ufs_hba *hba, enum ufs_pm_op pm_op)
old_link_state = hba->uic_link_state;
ufshcd_hba_vreg_set_hpm(hba);
+ ret = ufshcd_vreg_set_hpm(hba);
+ if (ret)
+ goto out;
+
/* Make sure clocks are enabled before accessing controller */
ret = ufshcd_setup_clocks(hba, true);
if (ret)
- goto out;
+ goto disable_vreg;
/* enable the host irq as host controller would be active soon */
ufshcd_enable_irq(hba);
- ret = ufshcd_vreg_set_hpm(hba);
- if (ret)
- goto disable_irq_and_vops_clks;
-
/*
* Call vendor specific resume callback. As these callbacks may access
* vendor specific host controller register space call them when the
@@ -8797,7 +8797,7 @@ static int ufshcd_resume(struct ufs_hba *hba, enum ufs_pm_op pm_op)
*/
ret = ufshcd_vops_resume(hba, pm_op);
if (ret)
- goto disable_vreg;
+ goto disable_irq_and_vops_clks;
/* For DeepSleep, the only supported option is to have the link off */
WARN_ON(ufshcd_is_ufs_dev_deepsleep(hba) && !ufshcd_is_link_off(hba));
@@ -8864,8 +8864,6 @@ static int ufshcd_resume(struct ufs_hba *hba, enum ufs_pm_op pm_op)
ufshcd_link_state_transition(hba, old_link_state, 0);
vendor_suspend:
ufshcd_vops_suspend(hba, pm_op);
-disable_vreg:
- ufshcd_vreg_set_lpm(hba);
disable_irq_and_vops_clks:
ufshcd_disable_irq(hba);
if (hba->clk_scaling.is_allowed)
@@ -8876,6 +8874,8 @@ static int ufshcd_resume(struct ufs_hba *hba, enum ufs_pm_op pm_op)
trace_ufshcd_clk_gating(dev_name(hba->dev),
hba->clk_gating.state);
}
+disable_vreg:
+ ufshcd_vreg_set_lpm(hba);
out:
hba->pm_op_in_progress = 0;
if (ret)
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v5 2/2] scsi: ufs-qcom: Fix ufs RST_n specs violation
[not found] <1610090885-50099-1-git-send-email-ziqichen@codeaurora.org>
2021-01-08 7:28 ` [PATCH v5 1/2] scsi: ufs: Fix ufs clk specs violation Ziqi Chen
@ 2021-01-08 7:28 ` Ziqi Chen
2021-01-08 8:05 ` Can Guo
1 sibling, 1 reply; 5+ messages in thread
From: Ziqi Chen @ 2021-01-08 7:28 UTC (permalink / raw)
To: asutoshd, nguyenb, cang, hongwus, rnayak, vinholikatti, jejb,
martin.petersen, linux-scsi, kernel-team, saravanak, salyzyn,
ziqichen, kwmad.kim, stanley.chu
Cc: Andy Gross, Bjorn Andersson, Alim Akhtar, Avri Altman,
James E.J. Bottomley, open list:ARM/QUALCOMM SUPPORT, open list
As per specs, e.g, JESD220E chapter 7.2, while powering
off/on the ufs device, RST_n signal should be between
VSS(Ground) and VCCQ/VCCQ2.
Signed-off-by: Ziqi Chen <ziqichen@codeaurora.org>
---
drivers/scsi/ufs/ufs-qcom.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c
index 2206b1e..d8b896c 100644
--- a/drivers/scsi/ufs/ufs-qcom.c
+++ b/drivers/scsi/ufs/ufs-qcom.c
@@ -582,6 +582,10 @@ static int ufs_qcom_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op)
ufs_qcom_disable_lane_clks(host);
phy_power_off(phy);
+ /* reset the connected UFS device during power down */
+ if (host->device_reset)
+ gpiod_set_value_cansleep(host->device_reset, 1);
+
} else if (!ufs_qcom_is_link_active(hba)) {
ufs_qcom_disable_lane_clks(host);
}
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v5 2/2] scsi: ufs-qcom: Fix ufs RST_n specs violation
2021-01-08 7:28 ` [PATCH v5 2/2] scsi: ufs-qcom: Fix ufs RST_n " Ziqi Chen
@ 2021-01-08 8:05 ` Can Guo
2021-01-08 8:15 ` ziqichen
0 siblings, 1 reply; 5+ messages in thread
From: Can Guo @ 2021-01-08 8:05 UTC (permalink / raw)
To: Ziqi Chen
Cc: asutoshd, nguyenb, hongwus, rnayak, vinholikatti, jejb,
martin.petersen, linux-scsi, kernel-team, saravanak, salyzyn,
kwmad.kim, stanley.chu, Andy Gross, Bjorn Andersson, Alim Akhtar,
Avri Altman, James E.J. Bottomley, linux-arm-msm, linux-kernel
On 2021-01-08 15:28, Ziqi Chen wrote:
> As per specs, e.g, JESD220E chapter 7.2, while powering
> off/on the ufs device, RST_n signal should be between
> VSS(Ground) and VCCQ/VCCQ2.
>
> Signed-off-by: Ziqi Chen <ziqichen@codeaurora.org>
> ---
> drivers/scsi/ufs/ufs-qcom.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c
> index 2206b1e..d8b896c 100644
> --- a/drivers/scsi/ufs/ufs-qcom.c
> +++ b/drivers/scsi/ufs/ufs-qcom.c
> @@ -582,6 +582,10 @@ static int ufs_qcom_suspend(struct ufs_hba *hba,
> enum ufs_pm_op pm_op)
> ufs_qcom_disable_lane_clks(host);
> phy_power_off(phy);
>
> + /* reset the connected UFS device during power down */
> + if (host->device_reset)
> + gpiod_set_value_cansleep(host->device_reset, 1);
> +
Instead of calling gpiod_set_value(1/0) directly,
can we have a wrapper func for it?
Thanks,
Can Guo.
> } else if (!ufs_qcom_is_link_active(hba)) {
> ufs_qcom_disable_lane_clks(host);
> }
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v5 2/2] scsi: ufs-qcom: Fix ufs RST_n specs violation
2021-01-08 8:05 ` Can Guo
@ 2021-01-08 8:15 ` ziqichen
0 siblings, 0 replies; 5+ messages in thread
From: ziqichen @ 2021-01-08 8:15 UTC (permalink / raw)
To: Can Guo
Cc: asutoshd, nguyenb, hongwus, rnayak, vinholikatti, jejb,
martin.petersen, linux-scsi, kernel-team, saravanak, salyzyn,
kwmad.kim, stanley.chu, Andy Gross, Bjorn Andersson, Alim Akhtar,
Avri Altman, James E.J. Bottomley, linux-arm-msm, linux-kernel
On 2021-01-08 16:05, Can Guo wrote:
> On 2021-01-08 15:28, Ziqi Chen wrote:
>> As per specs, e.g, JESD220E chapter 7.2, while powering
>> off/on the ufs device, RST_n signal should be between
>> VSS(Ground) and VCCQ/VCCQ2.
>>
>> Signed-off-by: Ziqi Chen <ziqichen@codeaurora.org>
>> ---
>> drivers/scsi/ufs/ufs-qcom.c | 4 ++++
>> 1 file changed, 4 insertions(+)
>>
>> diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c
>> index 2206b1e..d8b896c 100644
>> --- a/drivers/scsi/ufs/ufs-qcom.c
>> +++ b/drivers/scsi/ufs/ufs-qcom.c
>> @@ -582,6 +582,10 @@ static int ufs_qcom_suspend(struct ufs_hba *hba,
>> enum ufs_pm_op pm_op)
>> ufs_qcom_disable_lane_clks(host);
>> phy_power_off(phy);
>>
>> + /* reset the connected UFS device during power down */
>> + if (host->device_reset)
>> + gpiod_set_value_cansleep(host->device_reset, 1);
>> +
>
> Instead of calling gpiod_set_value(1/0) directly,
> can we have a wrapper func for it?
>
> Thanks,
> Can Guo.
Sure, it'll be better that way.
Best Regards,
Ziqi
>
>> } else if (!ufs_qcom_is_link_active(hba)) {
>> ufs_qcom_disable_lane_clks(host);
>> }
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v5 1/2] scsi: ufs: Fix ufs clk specs violation
2021-01-08 7:28 ` [PATCH v5 1/2] scsi: ufs: Fix ufs clk specs violation Ziqi Chen
@ 2021-01-08 8:23 ` Can Guo
0 siblings, 0 replies; 5+ messages in thread
From: Can Guo @ 2021-01-08 8:23 UTC (permalink / raw)
To: Ziqi Chen
Cc: asutoshd, nguyenb, hongwus, rnayak, vinholikatti, jejb,
martin.petersen, linux-scsi, kernel-team, saravanak, salyzyn,
kwmad.kim, stanley.chu, Alim Akhtar, Avri Altman,
James E.J. Bottomley, Bean Huo, linux-kernel
On 2021-01-08 15:28, Ziqi Chen wrote:
> As per specs, e.g, JESD220E chapter 7.2, while powering
> off/on the ufs device, REF_CLK signal should be between
> VSS(Ground) and VCCQ/VCCQ2.
>
> Signed-off-by: Ziqi Chen <ziqichen@codeaurora.org>
Reviewed-by: Can Guo <cang@codeaurora.org>
> ---
> drivers/scsi/ufs/ufshcd.c | 20 ++++++++++----------
> 1 file changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
> index e221add..3f807f7 100644
> --- a/drivers/scsi/ufs/ufshcd.c
> +++ b/drivers/scsi/ufs/ufshcd.c
> @@ -8686,8 +8686,6 @@ static int ufshcd_suspend(struct ufs_hba *hba,
> enum ufs_pm_op pm_op)
> if (ret)
> goto set_dev_active;
>
> - ufshcd_vreg_set_lpm(hba);
> -
> disable_clks:
> /*
> * Call vendor specific suspend callback. As these callbacks may
> access
> @@ -8711,6 +8709,8 @@ static int ufshcd_suspend(struct ufs_hba *hba,
> enum ufs_pm_op pm_op)
> hba->clk_gating.state);
> }
>
> + ufshcd_vreg_set_lpm(hba);
> +
> /* Put the host controller in low power mode if possible */
> ufshcd_hba_vreg_set_lpm(hba);
> goto out;
> @@ -8778,18 +8778,18 @@ static int ufshcd_resume(struct ufs_hba *hba,
> enum ufs_pm_op pm_op)
> old_link_state = hba->uic_link_state;
>
> ufshcd_hba_vreg_set_hpm(hba);
> + ret = ufshcd_vreg_set_hpm(hba);
> + if (ret)
> + goto out;
> +
> /* Make sure clocks are enabled before accessing controller */
> ret = ufshcd_setup_clocks(hba, true);
> if (ret)
> - goto out;
> + goto disable_vreg;
>
> /* enable the host irq as host controller would be active soon */
> ufshcd_enable_irq(hba);
>
> - ret = ufshcd_vreg_set_hpm(hba);
> - if (ret)
> - goto disable_irq_and_vops_clks;
> -
> /*
> * Call vendor specific resume callback. As these callbacks may
> access
> * vendor specific host controller register space call them when the
> @@ -8797,7 +8797,7 @@ static int ufshcd_resume(struct ufs_hba *hba,
> enum ufs_pm_op pm_op)
> */
> ret = ufshcd_vops_resume(hba, pm_op);
> if (ret)
> - goto disable_vreg;
> + goto disable_irq_and_vops_clks;
>
> /* For DeepSleep, the only supported option is to have the link off
> */
> WARN_ON(ufshcd_is_ufs_dev_deepsleep(hba) &&
> !ufshcd_is_link_off(hba));
> @@ -8864,8 +8864,6 @@ static int ufshcd_resume(struct ufs_hba *hba,
> enum ufs_pm_op pm_op)
> ufshcd_link_state_transition(hba, old_link_state, 0);
> vendor_suspend:
> ufshcd_vops_suspend(hba, pm_op);
> -disable_vreg:
> - ufshcd_vreg_set_lpm(hba);
> disable_irq_and_vops_clks:
> ufshcd_disable_irq(hba);
> if (hba->clk_scaling.is_allowed)
> @@ -8876,6 +8874,8 @@ static int ufshcd_resume(struct ufs_hba *hba,
> enum ufs_pm_op pm_op)
> trace_ufshcd_clk_gating(dev_name(hba->dev),
> hba->clk_gating.state);
> }
> +disable_vreg:
> + ufshcd_vreg_set_lpm(hba);
> out:
> hba->pm_op_in_progress = 0;
> if (ret)
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-01-08 8:24 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <1610090885-50099-1-git-send-email-ziqichen@codeaurora.org>
2021-01-08 7:28 ` [PATCH v5 1/2] scsi: ufs: Fix ufs clk specs violation Ziqi Chen
2021-01-08 8:23 ` Can Guo
2021-01-08 7:28 ` [PATCH v5 2/2] scsi: ufs-qcom: Fix ufs RST_n " Ziqi Chen
2021-01-08 8:05 ` Can Guo
2021-01-08 8:15 ` ziqichen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).