diff mbox series

phy: ufs-qcom: Invert PCS ready logic for SDM845 UFS

Message ID 20191209135934.1.Iaaf3ad8a27b00f2f2bc333486a1ecc9985bb5170@changeid (mailing list archive)
State New, archived
Headers show
Series phy: ufs-qcom: Invert PCS ready logic for SDM845 UFS | expand

Commit Message

Evan Green Dec. 9, 2019, 10 p.m. UTC
The SDM845 UFS phy seems to want to do a low transition to become
ready, rather than a high transition. Without this, I am unable to
enumerate UFS on SDM845 when booted from USB.

Fixes: 14ced7e3a1a ('phy: qcom-qmp: Correct ready status, again')

Signed-off-by: Evan Green <evgreen@chromium.org>
---

Bjorn,
At this point I'm super confused on what the correct behavior
should be. Lack of documentation doesn't help. I'm worried that this
change breaks UFS on some other platforms, so I'm hoping you or some
PHY folks might have some advice on what the right thing to do is.

---
 drivers/phy/qualcomm/phy-qcom-qmp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Evan Green Dec. 10, 2019, 6:49 p.m. UTC | #1
On Mon, Dec 9, 2019 at 2:00 PM Evan Green <evgreen@chromium.org> wrote:
>
> The SDM845 UFS phy seems to want to do a low transition to become
> ready, rather than a high transition. Without this, I am unable to
> enumerate UFS on SDM845 when booted from USB.
>
> Fixes: 14ced7e3a1a ('phy: qcom-qmp: Correct ready status, again')
>
> Signed-off-by: Evan Green <evgreen@chromium.org>
> ---
>
> Bjorn,
> At this point I'm super confused on what the correct behavior
> should be. Lack of documentation doesn't help. I'm worried that this
> change breaks UFS on some other platforms, so I'm hoping you or some
> PHY folks might have some advice on what the right thing to do is.

Disregard this patch. Bjorn pointed me to the patch below, which is
the right fix for my issue:
https://lore.kernel.org/linux-arm-msm/20191107000917.1092409-3-bjorn.andersson@linaro.org/
Bjorn Andersson Dec. 10, 2019, 7:02 p.m. UTC | #2
On Mon 09 Dec 14:00 PST 2019, Evan Green wrote:

> The SDM845 UFS phy seems to want to do a low transition to become
> ready, rather than a high transition. Without this, I am unable to
> enumerate UFS on SDM845 when booted from USB.
> 
> Fixes: 14ced7e3a1a ('phy: qcom-qmp: Correct ready status, again')
> 
> Signed-off-by: Evan Green <evgreen@chromium.org>

As concluded offline, the current logic is correct, but for some reason
we need a longer timeout on this particular device.

Regards,
Bjorn

> ---
> 
> Bjorn,
> At this point I'm super confused on what the correct behavior
> should be. Lack of documentation doesn't help. I'm worried that this
> change breaks UFS on some other platforms, so I'm hoping you or some
> PHY folks might have some advice on what the right thing to do is.
> 
> ---
>  drivers/phy/qualcomm/phy-qcom-qmp.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/phy/qualcomm/phy-qcom-qmp.c b/drivers/phy/qualcomm/phy-qcom-qmp.c
> index 091e20303a14d..c4f4294360b6e 100644
> --- a/drivers/phy/qualcomm/phy-qcom-qmp.c
> +++ b/drivers/phy/qualcomm/phy-qcom-qmp.c
> @@ -1657,7 +1657,7 @@ static int qcom_qmp_phy_enable(struct phy *phy)
>  	if (cfg->type == PHY_TYPE_UFS) {
>  		status = pcs + cfg->regs[QPHY_PCS_READY_STATUS];
>  		mask = PCS_READY;
> -		ready = PCS_READY;
> +		ready = 0;
>  	} else {
>  		status = pcs + cfg->regs[QPHY_PCS_STATUS];
>  		mask = PHYSTATUS;
> -- 
> 2.21.0
>
diff mbox series

Patch

diff --git a/drivers/phy/qualcomm/phy-qcom-qmp.c b/drivers/phy/qualcomm/phy-qcom-qmp.c
index 091e20303a14d..c4f4294360b6e 100644
--- a/drivers/phy/qualcomm/phy-qcom-qmp.c
+++ b/drivers/phy/qualcomm/phy-qcom-qmp.c
@@ -1657,7 +1657,7 @@  static int qcom_qmp_phy_enable(struct phy *phy)
 	if (cfg->type == PHY_TYPE_UFS) {
 		status = pcs + cfg->regs[QPHY_PCS_READY_STATUS];
 		mask = PCS_READY;
-		ready = PCS_READY;
+		ready = 0;
 	} else {
 		status = pcs + cfg->regs[QPHY_PCS_STATUS];
 		mask = PHYSTATUS;