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