Thread (5 messages) 5 messages, 4 authors, 2022-02-01

Re: [PATCH v2] arm64: dts: qcom: sm8350: Correct UFS symbol clocks

From: Dmitry Baryshkov <hidden>
Date: 2021-12-22 20:12:56
Also in: linux-arm-msm, lkml

On Wed, 22 Dec 2021 at 19:19, Bjorn Andersson
[off-list ref] wrote:
The introduction of '9a61f813fcc8 ("clk: qcom: regmap-mux: fix parent
clock lookup")' broke UFS support on SM8350.

The cause for this is that the symbol clocks have a specified rate in
the "freq-table-hz" table in the UFS node, which causes the UFS code to
request a rate change, for which the "bi_tcxo" happens to provide the
closest rate.  Prior to the change in regmap-mux it was determined
(incorrectly) that no change was needed and everything worked.

The rates of 75 and 300MHz matches the documentation for the symbol
clocks, but we don't represent the parent clocks today. So let's mimic
the configuration found in other platforms, by omitting the rate for the
symbol clocks as well to avoid the rate change.

While at it also fill in the dummy symbol clocks that was dropped from
the GCC driver as it was upstreamed.

Fixes: 59c7cf814783 ("arm64: dts: qcom: sm8350: Add UFS nodes")
Signed-off-by: Bjorn Andersson <redacted>
Reviewed-by: Dmitry Baryshkov <redacted>

We've had more or less the same change for sm8450 after adding my
regmap-mux fix (with the only difference that on sm8450 symbol clocks
are provided by the phy).
quoted hunk ↗ jump to hunk
---

Changes since v1:
- Updated commit message to clarify that the removed numbers are correct.

 arch/arm64/boot/dts/qcom/sm8350.dtsi | 28 +++++++++++++++++++++++-----
 1 file changed, 23 insertions(+), 5 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sm8350.dtsi b/arch/arm64/boot/dts/qcom/sm8350.dtsi
index bc176c252bca..ceb064a83038 100644
--- a/arch/arm64/boot/dts/qcom/sm8350.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8350.dtsi
@@ -38,6 +38,24 @@ sleep_clk: sleep-clk {
                        clock-frequency = <32000>;
                        #clock-cells = <0>;
                };
+
+               ufs_phy_rx_symbol_0_clk: ufs-phy-rx-symbol-0 {
+                       compatible = "fixed-clock";
+                       clock-frequency = <1000>;
+                       #clock-cells = <0>;
+               };
+
+               ufs_phy_rx_symbol_1_clk: ufs-phy-rx-symbol-1 {
+                       compatible = "fixed-clock";
+                       clock-frequency = <1000>;
+                       #clock-cells = <0>;
+               };
+
+               ufs_phy_tx_symbol_0_clk: ufs-phy-tx-symbol-0 {
+                       compatible = "fixed-clock";
+                       clock-frequency = <1000>;
+                       #clock-cells = <0>;
+               };
        };

        cpus {
@@ -606,9 +624,9 @@ gcc: clock-controller@100000 {
                                 <0>,
                                 <0>,
                                 <0>,
-                                <0>,
-                                <0>,
-                                <0>,
+                                <&ufs_phy_rx_symbol_0_clk>,
+                                <&ufs_phy_rx_symbol_1_clk>,
+                                <&ufs_phy_tx_symbol_0_clk>,
                                 <0>,
                                 <0>;
                };
@@ -2079,8 +2097,8 @@ ufs_mem_hc: ufshc@1d84000 {
                                <75000000 300000000>,
                                <0 0>,
                                <0 0>,
-                               <75000000 300000000>,
-                               <75000000 300000000>;
+                               <0 0>,
+                               <0 0>;
                        status = "disabled";
                };

--
2.33.1

-- 
With best wishes
Dmitry
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help