diff mbox series

[v5,2/2] scsi: ufs-qcom: Fix ufs RST_n specs violation

Message ID 1610090885-50099-3-git-send-email-ziqichen@codeaurora.org (mailing list archive)
State Superseded
Headers show
Series Two changes to fix ufs power down/on specs violation | expand

Commit Message

Ziqi Chen Jan. 8, 2021, 7:28 a.m. UTC
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(+)

Comments

Can Guo Jan. 8, 2021, 8:05 a.m. UTC | #1
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);
>  	}
Ziqi Chen Jan. 8, 2021, 8:15 a.m. UTC | #2
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);
>>  	}
diff mbox series

Patch

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);
 	}