From: Stephan Gerhold <stephan@gerhold.net>
To: Marijn Suijten <marijn.suijten@somainline.org>
Cc: phone-devel@vger.kernel.org,
~postmarketos/upstreaming@lists.sr.ht,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@somainline.org>,
Konrad Dybcio <konrad.dybcio@somainline.org>,
Martin Botka <martin.botka@somainline.org>,
Jami Kettunen <jami.kettunen@somainline.org>,
Michael Srba <Michael.Srba@seznam.cz>,
Andy Gross <agross@kernel.org>,
Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konrad.dybcio@linaro.org>,
Vinod Koul <vkoul@kernel.org>,
Kishon Vijay Abraham I <kishon@kernel.org>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Bryan O'Donoghue <bryan.odonoghue@linaro.org>,
linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Revert "phy: qualcomm: usb28nm: Add MDM9607 init sequence"
Date: Thu, 15 Dec 2022 11:01:36 +0100 [thread overview]
Message-ID: <Y5rwgMOCSC2z/Xv9@gerhold.net> (raw)
In-Reply-To: <20221214223733.648167-1-marijn.suijten@somainline.org>
On Wed, Dec 14, 2022 at 11:37:32PM +0100, Marijn Suijten wrote:
> This reverts commit 557a28811c7e0286d3816842032db5eb7bb5f156.
>
> This commit introduced an init sequence from downstream DT [1] in the
> driver. As mentioned by the comment above the HSPHY_INIT_CFG macro for
> this sequence:
>
> /*
> * The macro is used to define an initialization sequence. Each tuple
> * is meant to program 'value' into phy register at 'offset' with 'delay'
> * in us followed.
> */
>
> Instead of corresponding to offsets into the phy register, the sequence
> read by the downstream driver [2] is passed into ulpi_write [3] which
> crafts the address-value pair into a new value and writes it into the
> same register at USB_ULPI_VIEWPORT [4]. In other words, this init
> sequence is programmed into the hardware in a totally different way than
> downstream and is unlikely to achieve the desired result, if the hsphy
> is working at all.
>
Thanks for sending this, I've also been meaning to do this for quite
some time :)
Reviewed-by: Stephan Gerhold <stephan@gerhold.net>
> An alternative method needs to be found to write these init values at
> the desired location. Fortunately mdm9607 did not land upstream yet [5]
> and should have its compatible revised to use the generic one, instead
> of a compatible that writes wrong data to the wrong registers.
>
There is a simple solution to write the init values correctly: You can
just use the ULPI PHY driver for MSM8916 (phy-qcom-usb-hs.c), which
writes those init values correctly.
If you look closely at downstream you can see that all targets with the
"SNPS Femto PHY" (at least MSM8909, MDM9607, MSM8976) actually use a
mixture of the code currently implemented in the mainline ULPI PHY
driver (phy-qcom-usb-hs.c) and the actual Femto PHY driver
(phy-qcom-usb-hs-28nm.c):
- The device trees contains "qcom,dp-manual-pullup", which enables the
ULPI_MISC_A_VBUSVLDEXT magic that is currently implemented partly in
phy-qcom-usb-hs.c and partly in ci_hdrc_msm.c:
- Downstream: https://git.codelinaro.org/clo/la/kernel/msm-4.9/-/blob/29f81c613f4c853f4125ef189ede1f6d610653c0/drivers/usb/gadget/ci13xxx_msm.c#L113
- Mainline: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/phy/qualcomm/phy-qcom-usb-hs.c?h=v6.1#n92
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/usb/chipidea/ci_hdrc_msm.c?h=v6.1#n117
- The ULPI init sequence is also implemented by phy-qcom-usb-hs.c in
mainline: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/phy/qualcomm/phy-qcom-usb-hs.c?h=v6.1#n144
- The PHY CSR registers implemented by phy-qcom-usb-hs-28nm.c are only
used to enter retention mode downstream (I guess some low-power mode
where an USB device/host could still wake up the other host/device).
We don't have support for proper support for retention on mainline
(phy-qcom-usb-hs-28nm.c never enables the retention mode without
fully powering off the PHY immediately after using the regulators).
So I suggest that we simply use the ULPI PHY driver for MSM8916 at least
for MSM8909 and MDM9607 (haven't checked MSM8976 in detail). I have
tried it and it works without any problems on both MSM8909 and MDM9607.
No driver changes needed!
Thanks,
Stephan
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
WARNING: multiple messages have this Message-ID (diff)
From: Stephan Gerhold <stephan@gerhold.net>
To: Marijn Suijten <marijn.suijten@somainline.org>
Cc: phone-devel@vger.kernel.org,
~postmarketos/upstreaming@lists.sr.ht,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@somainline.org>,
Konrad Dybcio <konrad.dybcio@somainline.org>,
Martin Botka <martin.botka@somainline.org>,
Jami Kettunen <jami.kettunen@somainline.org>,
Michael Srba <Michael.Srba@seznam.cz>,
Andy Gross <agross@kernel.org>,
Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konrad.dybcio@linaro.org>,
Vinod Koul <vkoul@kernel.org>,
Kishon Vijay Abraham I <kishon@kernel.org>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Bryan O'Donoghue <bryan.odonoghue@linaro.org>,
linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Revert "phy: qualcomm: usb28nm: Add MDM9607 init sequence"
Date: Thu, 15 Dec 2022 11:01:36 +0100 [thread overview]
Message-ID: <Y5rwgMOCSC2z/Xv9@gerhold.net> (raw)
In-Reply-To: <20221214223733.648167-1-marijn.suijten@somainline.org>
On Wed, Dec 14, 2022 at 11:37:32PM +0100, Marijn Suijten wrote:
> This reverts commit 557a28811c7e0286d3816842032db5eb7bb5f156.
>
> This commit introduced an init sequence from downstream DT [1] in the
> driver. As mentioned by the comment above the HSPHY_INIT_CFG macro for
> this sequence:
>
> /*
> * The macro is used to define an initialization sequence. Each tuple
> * is meant to program 'value' into phy register at 'offset' with 'delay'
> * in us followed.
> */
>
> Instead of corresponding to offsets into the phy register, the sequence
> read by the downstream driver [2] is passed into ulpi_write [3] which
> crafts the address-value pair into a new value and writes it into the
> same register at USB_ULPI_VIEWPORT [4]. In other words, this init
> sequence is programmed into the hardware in a totally different way than
> downstream and is unlikely to achieve the desired result, if the hsphy
> is working at all.
>
Thanks for sending this, I've also been meaning to do this for quite
some time :)
Reviewed-by: Stephan Gerhold <stephan@gerhold.net>
> An alternative method needs to be found to write these init values at
> the desired location. Fortunately mdm9607 did not land upstream yet [5]
> and should have its compatible revised to use the generic one, instead
> of a compatible that writes wrong data to the wrong registers.
>
There is a simple solution to write the init values correctly: You can
just use the ULPI PHY driver for MSM8916 (phy-qcom-usb-hs.c), which
writes those init values correctly.
If you look closely at downstream you can see that all targets with the
"SNPS Femto PHY" (at least MSM8909, MDM9607, MSM8976) actually use a
mixture of the code currently implemented in the mainline ULPI PHY
driver (phy-qcom-usb-hs.c) and the actual Femto PHY driver
(phy-qcom-usb-hs-28nm.c):
- The device trees contains "qcom,dp-manual-pullup", which enables the
ULPI_MISC_A_VBUSVLDEXT magic that is currently implemented partly in
phy-qcom-usb-hs.c and partly in ci_hdrc_msm.c:
- Downstream: https://git.codelinaro.org/clo/la/kernel/msm-4.9/-/blob/29f81c613f4c853f4125ef189ede1f6d610653c0/drivers/usb/gadget/ci13xxx_msm.c#L113
- Mainline: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/phy/qualcomm/phy-qcom-usb-hs.c?h=v6.1#n92
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/usb/chipidea/ci_hdrc_msm.c?h=v6.1#n117
- The ULPI init sequence is also implemented by phy-qcom-usb-hs.c in
mainline: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/phy/qualcomm/phy-qcom-usb-hs.c?h=v6.1#n144
- The PHY CSR registers implemented by phy-qcom-usb-hs-28nm.c are only
used to enter retention mode downstream (I guess some low-power mode
where an USB device/host could still wake up the other host/device).
We don't have support for proper support for retention on mainline
(phy-qcom-usb-hs-28nm.c never enables the retention mode without
fully powering off the PHY immediately after using the regulators).
So I suggest that we simply use the ULPI PHY driver for MSM8916 at least
for MSM8909 and MDM9607 (haven't checked MSM8976 in detail). I have
tried it and it works without any problems on both MSM8909 and MDM9607.
No driver changes needed!
Thanks,
Stephan
next prev parent reply other threads:[~2022-12-15 10:01 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-14 22:37 [PATCH] Revert "phy: qualcomm: usb28nm: Add MDM9607 init sequence" Marijn Suijten
2022-12-14 22:37 ` Marijn Suijten
2022-12-15 1:51 ` Bryan O'Donoghue
2022-12-15 1:51 ` Bryan O'Donoghue
2022-12-15 10:01 ` Stephan Gerhold [this message]
2022-12-15 10:01 ` Stephan Gerhold
2023-01-13 17:46 ` Vinod Koul
2023-01-13 17:46 ` Vinod Koul
2023-01-16 20:35 ` Marijn Suijten
2023-01-16 20:35 ` Marijn Suijten
2023-01-17 5:36 ` Vinod Koul
2023-01-17 5:36 ` Vinod Koul
2023-01-17 9:19 ` Marijn Suijten
2023-01-17 9:19 ` Marijn Suijten
2023-01-18 16:55 ` Vinod Koul
2023-01-18 16:55 ` Vinod Koul
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y5rwgMOCSC2z/Xv9@gerhold.net \
--to=stephan@gerhold.net \
--cc=Michael.Srba@seznam.cz \
--cc=agross@kernel.org \
--cc=andersson@kernel.org \
--cc=angelogioacchino.delregno@somainline.org \
--cc=bryan.odonoghue@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=jami.kettunen@somainline.org \
--cc=kishon@kernel.org \
--cc=konrad.dybcio@linaro.org \
--cc=konrad.dybcio@somainline.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-phy@lists.infradead.org \
--cc=marijn.suijten@somainline.org \
--cc=martin.botka@somainline.org \
--cc=phone-devel@vger.kernel.org \
--cc=robh+dt@kernel.org \
--cc=vkoul@kernel.org \
--cc=~postmarketos/upstreaming@lists.sr.ht \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.