All of lore.kernel.org
 help / color / mirror / Atom feed
From: Varadarajan Narayanan <quic_varada@quicinc.com>
To: Thinh Nguyen <Thinh.Nguyen@synopsys.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Varadarajan Narayanan <quic_varada@quicinc.com>,
	<linux-usb@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: [PATCH 1/8] usb: dwc3: core: Handle fladj becoming zero
Date: Thu, 2 Mar 2023 15:25:08 +0530	[thread overview]
Message-ID: <6f5cd1d796fb7c666348cc611b2f8178c009e2e4.1677749625.git.quic_varada@quicinc.com> (raw)
In-Reply-To: <cover.1677749625.git.quic_varada@quicinc.com>

In dwc3_ref_clk_period, the computation

	fladj = div64_u64(125000ULL * NSEC_PER_SEC, (u64)rate * period);
	fladj -= 125000;

could turn out to be zero. If fladj is zero, the following
FIELD_PREP clears out that field and the user overridden value
set in the DTS using "snps,quirk-frame-length-adjustment" is
lost. Ensure to retain the user overridden value if the above
evaluates to 0.

Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
---
 drivers/usb/dwc3/core.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 476b636..63af83b 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -401,6 +401,33 @@ static void dwc3_ref_clk_period(struct dwc3 *dwc)
 	fladj -= 125000;
 
 	/*
+	 * Since rate = NSEC_PER_SEC / period and period = NSEC_PER_SEC / rate
+	 * above calculation could turn out to be zero.
+	 *
+	 * if (dwc->ref_clk)
+	 *	125000 * NSEC_PER_SEC    125000 * NSEC_PER_SEC
+	 *	--------------------- => ---------------------
+	 *	    rate * period         rate * NSEC_PER_SEC
+	 *					 ------------
+	 *					     rate
+	 * else
+	 *	125000 * NSEC_PER_SEC    125000 * NSEC_PER_SEC
+	 *	--------------------- => ---------------------
+	 *	    rate * period        NSEC_PER_SEC * period
+	 *				 ------------
+	 *				    period
+	 * Hence, the calculation
+	 *	div64_u64(125000ULL * NSEC_PER_SEC, (u64)rate * period)
+	 * returns 125000ULL and fladj -= 125000 sets fladj to zero.
+	 * If fladj is zero, the following FIELD_PREP clears out that
+	 * field and the user overridden value set in the DTS using
+	 * "snps,quirk-frame-length-adjustment" is lost. Ensure to retain
+	 * the user overridden value if the above calculation evaluates to 0.
+	 */
+	if (fladj == 0)
+		fladj = FIELD_GET(DWC3_GFLADJ_REFCLK_FLADJ_MASK, dwc->fladj);
+
+	/*
 	 * The documented 240MHz constant is scaled by 2 to get PLS1 as well.
 	 */
 	decr = 480000000 / rate;
-- 
2.7.4


  reply	other threads:[~2023-03-02  9:56 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-02  9:54 [PATCH 0/8] Enable IPQ9754 USB Varadarajan Narayanan
2023-03-02  9:54 ` Varadarajan Narayanan
2023-03-02  9:55 ` Varadarajan Narayanan [this message]
2023-03-02  9:55 ` [PATCH 2/8] dt-bindings: phy: qcom,qusb2: Document IPQ9574 compatible Varadarajan Narayanan
2023-03-02  9:55   ` Varadarajan Narayanan
2023-03-02 16:23   ` Dmitry Baryshkov
2023-03-02 16:23     ` Dmitry Baryshkov
2023-03-03  9:10     ` Varadarajan Narayanan
2023-03-03  9:10       ` Varadarajan Narayanan
2023-03-03  7:36   ` Krzysztof Kozlowski
2023-03-03  7:36     ` Krzysztof Kozlowski
2023-03-02  9:55 ` [PATCH 3/8] dt-bindings: phy: qcom,qmp-usb: Add IPQ9574 USB3 PHY Varadarajan Narayanan
2023-03-02  9:55   ` Varadarajan Narayanan
2023-03-02  9:55 ` [PATCH 4/8] clk: qcom: gcc-ipq9574: Add USB related clocks Varadarajan Narayanan
2023-03-02 16:24   ` Dmitry Baryshkov
2023-03-03  9:18     ` Varadarajan Narayanan
2023-03-02  9:55 ` [PATCH 5/8] phy: qcom-qusb2: add QUSB2 support for IPQ9574 Varadarajan Narayanan
2023-03-02  9:55   ` Varadarajan Narayanan
2023-03-02 16:17   ` Dmitry Baryshkov
2023-03-02 16:17     ` Dmitry Baryshkov
2023-03-03  9:19     ` Varadarajan Narayanan
2023-03-03  9:19       ` Varadarajan Narayanan
2023-03-02  9:55 ` [PATCH 6/8] phy: qcom: qmp: Update IPQ9574 USB Phy initialization Sequence Varadarajan Narayanan
2023-03-02  9:55   ` Varadarajan Narayanan
2023-03-02 16:16   ` Dmitry Baryshkov
2023-03-02 16:16     ` Dmitry Baryshkov
2023-03-03  9:36     ` Varadarajan Narayanan
2023-03-03  9:36       ` Varadarajan Narayanan
2023-03-02  9:55 ` [PATCH 7/8] arm64: dts: qcom: ipq9574: Add USB related nodes Varadarajan Narayanan
2023-03-02 16:22   ` Dmitry Baryshkov
2023-03-06 11:26     ` Varadarajan Narayanan
2023-03-06 11:51       ` Dmitry Baryshkov
2023-03-07  6:36         ` Varadarajan Narayanan
2023-03-07 11:49           ` Dmitry Baryshkov
2023-03-08  5:52             ` Varadarajan Narayanan
2023-03-16  6:30             ` Varadarajan Narayanan
2023-03-16  6:45               ` Manivannan Sadhasivam
2023-03-03  7:39   ` Krzysztof Kozlowski
2023-03-03  9:52     ` Varadarajan Narayanan
2023-03-02  9:55 ` [PATCH 8/8] arm64: dts: qcom: ipq9574: Enable USB Varadarajan Narayanan
2023-03-02 16:18   ` Dmitry Baryshkov
2023-03-03  9:54     ` Varadarajan Narayanan
2023-03-03  7:38   ` Krzysztof Kozlowski
2023-03-21  8:54 ` [PATCH v2 0/8] Enable IPQ9754 USB Varadarajan Narayanan
2023-03-21  8:54   ` Varadarajan Narayanan
2023-03-21  8:54   ` [PATCH v2 1/8] dt-bindings: phy: qcom,qusb2: Document IPQ9574 compatible Varadarajan Narayanan
2023-03-21  8:54     ` Varadarajan Narayanan
2023-03-21 11:17     ` Dmitry Baryshkov
2023-03-21 11:17       ` Dmitry Baryshkov
2023-03-22  6:13       ` Varadarajan Narayanan
2023-03-22  6:13         ` Varadarajan Narayanan
2023-03-21  8:54   ` [PATCH v2 2/8] dt-bindings: phy: qcom,qmp-usb: Add IPQ9574 USB3 PHY Varadarajan Narayanan
2023-03-21  8:54     ` Varadarajan Narayanan
2023-03-21  8:54   ` [PATCH v2 3/8] dt-bindings: usb: dwc3: Add IPQ9574 compatible Varadarajan Narayanan
2023-03-21  8:54     ` Varadarajan Narayanan
2023-03-21  8:54   ` [PATCH v2 4/8] clk: qcom: gcc-ipq9574: Add USB related clocks Varadarajan Narayanan
2023-03-21  8:54     ` Varadarajan Narayanan
2023-03-21 17:45     ` Stephen Boyd
2023-03-21 17:45       ` Stephen Boyd
2023-04-06 18:45     ` Bjorn Andersson
2023-04-06 18:45       ` Bjorn Andersson
2023-04-06 18:44       ` Krzysztof Kozlowski
2023-04-06 18:44         ` Krzysztof Kozlowski
2023-03-21  8:54   ` [PATCH v2 5/8] phy: qcom-qusb2: add QUSB2 support for IPQ9574 Varadarajan Narayanan
2023-03-21  8:54     ` Varadarajan Narayanan
2023-03-21  8:54   ` [PATCH v2 6/8] phy: qcom: qmp: Update IPQ9574 USB Phy initialization Sequence Varadarajan Narayanan
2023-03-21  8:54     ` Varadarajan Narayanan
2023-03-21 12:07     ` Konrad Dybcio
2023-03-21 12:07       ` Konrad Dybcio
2023-03-22  6:14       ` Varadarajan Narayanan
2023-03-22  6:14         ` Varadarajan Narayanan
2023-03-21  8:54   ` [PATCH v2 7/8] arm64: dts: qcom: ipq9574: Add USB related nodes Varadarajan Narayanan
2023-03-21  8:54     ` Varadarajan Narayanan
2023-03-21 11:23     ` Dmitry Baryshkov
2023-03-21 11:23       ` Dmitry Baryshkov
2023-03-22  6:16       ` Varadarajan Narayanan
2023-03-22  6:16         ` Varadarajan Narayanan
2023-03-21  8:54   ` [PATCH v2 8/8] arm64: dts: qcom: ipq9574: Enable USB Varadarajan Narayanan
2023-03-21  8:54     ` Varadarajan Narayanan
2023-03-21 11:53   ` [PATCH v2 0/8] Enable IPQ9754 USB Konrad Dybcio
2023-03-21 11:53     ` Konrad Dybcio
2023-03-22  6:18     ` Varadarajan Narayanan
2023-03-22  6:18       ` Varadarajan Narayanan

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=6f5cd1d796fb7c666348cc611b2f8178c009e2e4.1677749625.git.quic_varada@quicinc.com \
    --to=quic_varada@quicinc.com \
    --cc=Thinh.Nguyen@synopsys.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    /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.