2021-01-08 07:31:36

by Ziqi Chen

[permalink] [raw]
Subject: [PATCH v5 2/2] scsi: ufs-qcom: Fix ufs RST_n specs violation

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 <[email protected]>
---
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


2021-01-08 08:08:36

by Can Guo

[permalink] [raw]
Subject: Re: [PATCH v5 2/2] scsi: ufs-qcom: Fix ufs RST_n specs violation

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 <[email protected]>
> ---
> 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);
> }

2021-01-08 08:18:54

by Ziqi Chen

[permalink] [raw]
Subject: Re: [PATCH v5 2/2] scsi: ufs-qcom: Fix ufs RST_n specs violation

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 <[email protected]>
>> ---
>> 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);
>> }