* [PATCH v2 0/3] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper
@ 2026-08-06 5:34 Qiang Yu
2026-08-06 5:34 ` [PATCH v2 1/3] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding Qiang Yu
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Qiang Yu @ 2026-08-06 5:34 UTC (permalink / raw)
To: Bjorn Andersson, Michael Turquette, Stephen Boyd, Brian Masney,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Taniya Das,
Konrad Dybcio
Cc: linux-arm-msm, linux-clk, devicetree, linux-kernel, Qiang Yu,
Konrad Dybcio
The QREF block on X1E80100 supplies reference clocks to PCIe/USB/UFS
PHYs and requires dedicated LDO supplies to operate. The digital
control interface for QREF (clkref_en registers) resides in TCSR on
X1E80100. This series migrates the x1e80100 TCSR driver to the common
clkref_en helper introduced for Glymur/Mahua, and wires up the
required regulator supplies.
Patch 1 splits qcom,x1e80100-tcsr out of the shared qcom,sm8550-tcsr.yaml
into its own binding file and documents the QREF/refgen supply
properties, mirroring the qcom,glymur-tcsr.yaml split.
Patch 2 converts tcsrcc-x1e80100.c from local clk_branch definitions to
descriptor-based registration via qcom_clk_ref_probe(), reusing the
common regulator handling and enable/disable sequencing.
Patch 3 wires up the QREF/refgen LDO supplies on the boards Qualcomm
maintains directly: the CRD, QCP, Snapdragon Devkit, and the hamoa and
purwa IoT SoMs (purwa shares hamoa's QREF topology, so it reuses the
same qcom,x1e80100-tcsr compatible and supply set rather than needing a
dedicated one).
---
Changes in v2:
- Patch 1: Explain in the commit message about the ABI break.
- Link to v1: https://lore.kernel.org/all/20260714-hamoa_tcsr_qref_0714_2-v1-0-13047922a376@oss.qualcomm.com/
To: Bjorn Andersson <andersson@kernel.org>
To: Michael Turquette <mturquette@baylibre.com>
To: Stephen Boyd <sboyd@kernel.org>
To: Brian Masney <bmasney@redhat.com>
To: Rob Herring <robh@kernel.org>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>
To: Conor Dooley <conor+dt@kernel.org>
To: Taniya Das <taniya.das@oss.qualcomm.com>
To: Konrad Dybcio <konradybcio@kernel.org>
Cc: linux-arm-msm@vger.kernel.org
Cc: linux-clk@vger.kernel.org
Cc: devicetree@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Qiang Yu <qiang.yu@oss.qualcomm.com>
---
Qiang Yu (3):
dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding
clk: qcom: tcsrcc-x1e80100: Migrate to clk_ref helper
arm64: dts: qcom: hamoa/purwa: Add QREF regulator supplies
.../bindings/clock/qcom,sm8550-tcsr.yaml | 1 -
.../bindings/clock/qcom,x1e80100-tcsr.yaml | 118 ++++++++
arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi | 21 ++
.../qcom/hamoa-lenovo-ideacentre-mini-01q8x10.dts | 21 ++
arch/arm64/boot/dts/qcom/purwa-iot-som.dtsi | 21 ++
arch/arm64/boot/dts/qcom/x1-asus-vivobook-s15.dtsi | 21 ++
arch/arm64/boot/dts/qcom/x1-asus-zenbook-a14.dtsi | 21 ++
arch/arm64/boot/dts/qcom/x1-crd.dtsi | 21 ++
arch/arm64/boot/dts/qcom/x1-dell-thena.dtsi | 21 ++
arch/arm64/boot/dts/qcom/x1-hp-omnibook-x14.dtsi | 21 ++
arch/arm64/boot/dts/qcom/x1-microsoft-denali.dtsi | 21 ++
arch/arm64/boot/dts/qcom/x1e001de-devkit.dts | 21 ++
.../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 21 ++
.../boot/dts/qcom/x1e80100-dell-xps13-9345.dts | 21 ++
.../dts/qcom/x1e80100-honor-magicbook-art-14.dts | 21 ++
.../boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts | 21 ++
.../dts/qcom/x1e80100-medion-sprchrgd-14-s1.dts | 21 ++
.../boot/dts/qcom/x1e80100-microsoft-romulus.dtsi | 21 ++
arch/arm64/boot/dts/qcom/x1e80100-qcp.dts | 21 ++
.../boot/dts/qcom/x1p42100-lenovo-thinkbook-16.dts | 21 ++
.../boot/dts/qcom/x1p42100-microsoft-sp12in.dts | 21 ++
drivers/clk/qcom/tcsrcc-x1e80100.c | 335 +++++++--------------
22 files changed, 630 insertions(+), 223 deletions(-)
---
base-commit: 0f6da28aab51b16762ed82e8fdeaa5042da45b08
change-id: 20260805-hamoa_tcsr_qref_0805-86ca7100778d
Best regards,
--
Qiang Yu <qiang.yu@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/3] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding
2026-08-06 5:34 [PATCH v2 0/3] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper Qiang Yu
@ 2026-08-06 5:34 ` Qiang Yu
2026-08-06 5:39 ` sashiko-bot
2026-08-12 2:14 ` Rob Herring
2026-08-06 5:34 ` [PATCH v2 2/3] clk: qcom: tcsrcc-x1e80100: Migrate to clk_ref helper Qiang Yu
2026-08-06 5:34 ` [PATCH v2 3/3] arm64: dts: qcom: hamoa/purwa: Add QREF regulator supplies Qiang Yu
2 siblings, 2 replies; 6+ messages in thread
From: Qiang Yu @ 2026-08-06 5:34 UTC (permalink / raw)
To: Bjorn Andersson, Michael Turquette, Stephen Boyd, Brian Masney,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Taniya Das,
Konrad Dybcio
Cc: linux-arm-msm, linux-clk, devicetree, linux-kernel, Qiang Yu
The QREF block supplies reference clocks to PCIe/USB/UFS PHYs and
requires dedicated LDO supplies to operate. The digital control
interface for QREF (clkref_en registers) resides in TCSR on x1e80100.
Since QREF has no dedicated DT node of its own, these supply
properties are placed in the TCSR node which acts as the control
interface for QREF.
These LDOs are required by QREF to provide a stable reference clock,
without which the USB/PCIe/eDP PHYs cannot work properly, so they are
marked required even though it breaks ABI.
Add a dedicated binding file for qcom,x1e80100-tcsr and document the
supply properties.
Signed-off-by: Qiang Yu <qiang.yu@oss.qualcomm.com>
---
.../bindings/clock/qcom,sm8550-tcsr.yaml | 1 -
.../bindings/clock/qcom,x1e80100-tcsr.yaml | 118 +++++++++++++++++++++
2 files changed, 118 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/clock/qcom,sm8550-tcsr.yaml b/Documentation/devicetree/bindings/clock/qcom,sm8550-tcsr.yaml
index 1f3332275c17..f199655790da 100644
--- a/Documentation/devicetree/bindings/clock/qcom,sm8550-tcsr.yaml
+++ b/Documentation/devicetree/bindings/clock/qcom,sm8550-tcsr.yaml
@@ -36,7 +36,6 @@ properties:
- qcom,sm8550-tcsr
- qcom,sm8650-tcsr
- qcom,sm8750-tcsr
- - qcom,x1e80100-tcsr
- const: syscon
- items:
- enum:
diff --git a/Documentation/devicetree/bindings/clock/qcom,x1e80100-tcsr.yaml b/Documentation/devicetree/bindings/clock/qcom,x1e80100-tcsr.yaml
new file mode 100644
index 000000000000..55182cf550e7
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/qcom,x1e80100-tcsr.yaml
@@ -0,0 +1,118 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/qcom,x1e80100-tcsr.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm TCSR Clock Controller on X1E80100
+
+maintainers:
+ - Bjorn Andersson <andersson@kernel.org>
+ - Taniya Das <taniya.das@oss.qualcomm.com>
+
+description: |
+ Qualcomm TCSR clock control module provides the clocks, resets and
+ power domains on X1E80100
+
+ See also:
+ - include/dt-bindings/clock/qcom,x1e80100-tcsr.h
+
+properties:
+ compatible:
+ items:
+ - enum:
+ - qcom,x1e80100-tcsr
+ - const: syscon
+
+ clocks:
+ items:
+ - description: TCXO pad clock
+
+ reg:
+ maxItems: 1
+
+ '#clock-cells':
+ const: 1
+
+ '#reset-cells':
+ const: 1
+
+ vdda-qrefrpt0-0p9-supply: true
+ vdda-qrefrpt1-0p9-supply: true
+ vdda-qrefrpt2-0p9-supply: true
+ vdda-qrefrpt3-0p9-supply: true
+ vdda-qrefrpt4-0p9-supply: true
+ vdda-qrefrx0-0p9-supply: true
+ vdda-qrefrx1-0p9-supply: true
+ vdda-qrefrx2-0p9-supply: true
+ vdda-qrefrx3-0p9-supply: true
+ vdda-qrefrx4-0p9-supply: true
+ vdda-qreftx0-0p9-supply: true
+ vdda-qreftx0-1p2-supply: true
+ vdda-qreftx1-0p9-supply: true
+ vdda-qreftx1-1p2-supply: true
+ vdda-refgen0-0p9-supply: true
+ vdda-refgen0-1p2-supply: true
+ vdda-refgen2-0p9-supply: true
+ vdda-refgen2-1p2-supply: true
+
+required:
+ - compatible
+ - clocks
+ - vdda-qrefrpt0-0p9-supply
+ - vdda-qrefrpt1-0p9-supply
+ - vdda-qrefrpt2-0p9-supply
+ - vdda-qrefrpt3-0p9-supply
+ - vdda-qrefrpt4-0p9-supply
+ - vdda-qrefrx0-0p9-supply
+ - vdda-qrefrx1-0p9-supply
+ - vdda-qrefrx2-0p9-supply
+ - vdda-qrefrx3-0p9-supply
+ - vdda-qrefrx4-0p9-supply
+ - vdda-qreftx0-0p9-supply
+ - vdda-qreftx0-1p2-supply
+ - vdda-qreftx1-0p9-supply
+ - vdda-qreftx1-1p2-supply
+ - vdda-refgen0-0p9-supply
+ - vdda-refgen0-1p2-supply
+ - vdda-refgen2-0p9-supply
+ - vdda-refgen2-1p2-supply
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/qcom,rpmh.h>
+
+ soc {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ clock-controller@1fc0000 {
+ compatible = "qcom,x1e80100-tcsr", "syscon";
+ reg = <0x0 0x1fc0000 0x0 0x30000>;
+ clocks = <&rpmhcc RPMH_CXO_CLK>;
+ #clock-cells = <1>;
+ #reset-cells = <1>;
+ vdda-qrefrpt0-0p9-supply = <&vreg_l1a>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l1a>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l1a>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l1a>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1a>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l1a>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l1a>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l1a>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l1a>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1a>;
+ vdda-qreftx0-0p9-supply = <&vreg_l1a>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2a>;
+ vdda-qreftx1-0p9-supply = <&vreg_l1a>;
+ vdda-qreftx1-1p2-supply = <&vreg_l2a>;
+ vdda-refgen0-0p9-supply = <&vreg_l1a>;
+ vdda-refgen0-1p2-supply = <&vreg_l2a>;
+ vdda-refgen2-0p9-supply = <&vreg_l1a>;
+ vdda-refgen2-1p2-supply = <&vreg_l2a>;
+ };
+ };
+
+...
--
2.34.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/3] clk: qcom: tcsrcc-x1e80100: Migrate to clk_ref helper
2026-08-06 5:34 [PATCH v2 0/3] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper Qiang Yu
2026-08-06 5:34 ` [PATCH v2 1/3] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding Qiang Yu
@ 2026-08-06 5:34 ` Qiang Yu
2026-08-06 5:34 ` [PATCH v2 3/3] arm64: dts: qcom: hamoa/purwa: Add QREF regulator supplies Qiang Yu
2 siblings, 0 replies; 6+ messages in thread
From: Qiang Yu @ 2026-08-06 5:34 UTC (permalink / raw)
To: Bjorn Andersson, Michael Turquette, Stephen Boyd, Brian Masney,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Taniya Das,
Konrad Dybcio
Cc: linux-arm-msm, linux-clk, devicetree, linux-kernel, Qiang Yu,
Konrad Dybcio
Replace local clk_branch-based clkref definitions with descriptor-based
registration via qcom_clk_ref_probe().
This keeps the x1e80100 driver focused on clock metadata and reuses
common runtime logic for regulator handling, enable/disable sequencing,
and OF provider wiring.
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Qiang Yu <qiang.yu@oss.qualcomm.com>
---
drivers/clk/qcom/tcsrcc-x1e80100.c | 335 +++++++++++++------------------------
1 file changed, 113 insertions(+), 222 deletions(-)
diff --git a/drivers/clk/qcom/tcsrcc-x1e80100.c b/drivers/clk/qcom/tcsrcc-x1e80100.c
index 0b05c27b619b..ad1f6be83a53 100644
--- a/drivers/clk/qcom/tcsrcc-x1e80100.c
+++ b/drivers/clk/qcom/tcsrcc-x1e80100.c
@@ -5,252 +5,141 @@
*/
#include <linux/clk-provider.h>
+#include <linux/clk/qcom.h>
#include <linux/module.h>
+#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <dt-bindings/clock/qcom,x1e80100-tcsr.h>
-#include "clk-branch.h"
-#include "clk-regmap.h"
-#include "common.h"
-#include "reset.h"
-
-enum {
- DT_BI_TCXO_PAD,
+static const char * const x1e80100_tcsr_tx1_rpt0_rx0_regulators[] = {
+ "vdda-refgen0-0p9",
+ "vdda-refgen0-1p2",
+ "vdda-qreftx1-0p9",
+ "vdda-qreftx1-1p2",
+ "vdda-qrefrpt0-0p9",
+ "vdda-qrefrx0-0p9",
};
-static struct clk_branch tcsr_edp_clkref_en = {
- .halt_reg = 0x15130,
- .halt_check = BRANCH_HALT_DELAY,
- .clkr = {
- .enable_reg = 0x15130,
- .enable_mask = BIT(0),
- .hw.init = &(const struct clk_init_data) {
- .name = "tcsr_edp_clkref_en",
- .parent_data = &(const struct clk_parent_data){
- .index = DT_BI_TCXO_PAD,
- },
- .num_parents = 1,
- .ops = &clk_branch2_ops,
- },
- },
+static const char * const x1e80100_tcsr_tx1_rpt1_rx1_regulators[] = {
+ "vdda-refgen0-0p9",
+ "vdda-refgen0-1p2",
+ "vdda-qreftx1-0p9",
+ "vdda-qreftx1-1p2",
+ "vdda-qrefrpt1-0p9",
+ "vdda-qrefrx1-0p9",
};
-static struct clk_branch tcsr_pcie_2l_4_clkref_en = {
- .halt_reg = 0x15100,
- .halt_check = BRANCH_HALT_DELAY,
- .clkr = {
- .enable_reg = 0x15100,
- .enable_mask = BIT(0),
- .hw.init = &(struct clk_init_data){
- .name = "tcsr_pcie_2l_4_clkref_en",
- .parent_data = &(const struct clk_parent_data){
- .index = DT_BI_TCXO_PAD,
- },
- .num_parents = 1,
- .ops = &clk_branch2_ops,
- },
- },
+static const char * const x1e80100_tcsr_tx1_rpt12_rx2_regulators[] = {
+ "vdda-refgen0-0p9",
+ "vdda-refgen0-1p2",
+ "vdda-qreftx1-0p9",
+ "vdda-qreftx1-1p2",
+ "vdda-qrefrpt1-0p9",
+ "vdda-qrefrpt2-0p9",
+ "vdda-qrefrx2-0p9",
};
-static struct clk_branch tcsr_pcie_2l_5_clkref_en = {
- .halt_reg = 0x15104,
- .halt_check = BRANCH_HALT_DELAY,
- .clkr = {
- .enable_reg = 0x15104,
- .enable_mask = BIT(0),
- .hw.init = &(struct clk_init_data){
- .name = "tcsr_pcie_2l_5_clkref_en",
- .parent_data = &(const struct clk_parent_data){
- .index = DT_BI_TCXO_PAD,
- },
- .num_parents = 1,
- .ops = &clk_branch2_ops,
- },
- },
+static const char * const x1e80100_tcsr_tx0_rpt3_rx3_regulators[] = {
+ "vdda-refgen2-0p9",
+ "vdda-refgen2-1p2",
+ "vdda-qreftx0-0p9",
+ "vdda-qreftx0-1p2",
+ "vdda-qrefrpt3-0p9",
+ "vdda-qrefrx3-0p9",
};
-static struct clk_branch tcsr_pcie_8l_clkref_en = {
- .halt_reg = 0x15108,
- .halt_check = BRANCH_HALT_DELAY,
- .clkr = {
- .enable_reg = 0x15108,
- .enable_mask = BIT(0),
- .hw.init = &(struct clk_init_data){
- .name = "tcsr_pcie_8l_clkref_en",
- .parent_data = &(const struct clk_parent_data){
- .index = DT_BI_TCXO_PAD,
- },
- .num_parents = 1,
- .ops = &clk_branch2_ops,
- },
- },
+static const char * const x1e80100_tcsr_tx0_rpt4_rx4_regulators[] = {
+ "vdda-refgen2-0p9",
+ "vdda-refgen2-1p2",
+ "vdda-qreftx0-0p9",
+ "vdda-qreftx0-1p2",
+ "vdda-qrefrpt4-0p9",
+ "vdda-qrefrx4-0p9",
};
-static struct clk_branch tcsr_usb3_mp0_clkref_en = {
- .halt_reg = 0x1510c,
- .halt_check = BRANCH_HALT_DELAY,
- .clkr = {
- .enable_reg = 0x1510c,
- .enable_mask = BIT(0),
- .hw.init = &(struct clk_init_data){
- .name = "tcsr_usb3_mp0_clkref_en",
- .parent_data = &(const struct clk_parent_data){
- .index = DT_BI_TCXO_PAD,
- },
- .num_parents = 1,
- .ops = &clk_branch2_ops,
- },
- },
+static const struct regmap_config tcsr_cc_x1e80100_regmap_config = {
+ .reg_bits = 32,
+ .reg_stride = 4,
+ .val_bits = 32,
+ .max_register = 0x2f000,
+ .fast_io = true,
};
-static struct clk_branch tcsr_usb3_mp1_clkref_en = {
- .halt_reg = 0x15110,
- .halt_check = BRANCH_HALT_DELAY,
- .clkr = {
- .enable_reg = 0x15110,
- .enable_mask = BIT(0),
- .hw.init = &(struct clk_init_data){
- .name = "tcsr_usb3_mp1_clkref_en",
- .parent_data = &(const struct clk_parent_data){
- .index = DT_BI_TCXO_PAD,
- },
- .num_parents = 1,
- .ops = &clk_branch2_ops,
- },
+static const struct qcom_clk_ref_desc * const tcsr_cc_x1e80100_clk_descs[] = {
+ [TCSR_EDP_CLKREF_EN] = &(const struct qcom_clk_ref_desc) {
+ .name = "tcsr_edp_clkref_en",
+ .offset = 0x15130,
+ .regulator_names = x1e80100_tcsr_tx0_rpt3_rx3_regulators,
+ .num_regulators = ARRAY_SIZE(x1e80100_tcsr_tx0_rpt3_rx3_regulators),
},
-};
-
-static struct clk_branch tcsr_usb2_1_clkref_en = {
- .halt_reg = 0x15114,
- .halt_check = BRANCH_HALT_DELAY,
- .clkr = {
- .enable_reg = 0x15114,
- .enable_mask = BIT(0),
- .hw.init = &(struct clk_init_data){
- .name = "tcsr_usb2_1_clkref_en",
- .parent_data = &(const struct clk_parent_data){
- .index = DT_BI_TCXO_PAD,
- },
- .num_parents = 1,
- .ops = &clk_branch2_ops,
- },
+ [TCSR_PCIE_2L_4_CLKREF_EN] = &(const struct qcom_clk_ref_desc) {
+ .name = "tcsr_pcie_2l_4_clkref_en",
+ .offset = 0x15100,
+ .regulator_names = x1e80100_tcsr_tx1_rpt1_rx1_regulators,
+ .num_regulators = ARRAY_SIZE(x1e80100_tcsr_tx1_rpt1_rx1_regulators),
},
-};
-
-static struct clk_branch tcsr_ufs_phy_clkref_en = {
- .halt_reg = 0x15118,
- .halt_check = BRANCH_HALT_DELAY,
- .clkr = {
- .enable_reg = 0x15118,
- .enable_mask = BIT(0),
- .hw.init = &(struct clk_init_data){
- .name = "tcsr_ufs_phy_clkref_en",
- .parent_data = &(const struct clk_parent_data){
- .index = DT_BI_TCXO_PAD,
- },
- .num_parents = 1,
- .ops = &clk_branch2_ops,
- },
+ [TCSR_PCIE_2L_5_CLKREF_EN] = &(const struct qcom_clk_ref_desc) {
+ .name = "tcsr_pcie_2l_5_clkref_en",
+ .offset = 0x15104,
+ .regulator_names = x1e80100_tcsr_tx1_rpt12_rx2_regulators,
+ .num_regulators = ARRAY_SIZE(x1e80100_tcsr_tx1_rpt12_rx2_regulators),
},
-};
-
-static struct clk_branch tcsr_usb4_1_clkref_en = {
- .halt_reg = 0x15120,
- .halt_check = BRANCH_HALT_DELAY,
- .clkr = {
- .enable_reg = 0x15120,
- .enable_mask = BIT(0),
- .hw.init = &(struct clk_init_data){
- .name = "tcsr_usb4_1_clkref_en",
- .parent_data = &(const struct clk_parent_data){
- .index = DT_BI_TCXO_PAD,
- },
- .num_parents = 1,
- .ops = &clk_branch2_ops,
- },
+ [TCSR_PCIE_8L_CLKREF_EN] = &(const struct qcom_clk_ref_desc) {
+ .name = "tcsr_pcie_8l_clkref_en",
+ .offset = 0x15108,
+ .regulator_names = x1e80100_tcsr_tx1_rpt0_rx0_regulators,
+ .num_regulators = ARRAY_SIZE(x1e80100_tcsr_tx1_rpt0_rx0_regulators),
},
-};
-
-static struct clk_branch tcsr_usb4_2_clkref_en = {
- .halt_reg = 0x15124,
- .halt_check = BRANCH_HALT_DELAY,
- .clkr = {
- .enable_reg = 0x15124,
- .enable_mask = BIT(0),
- .hw.init = &(struct clk_init_data){
- .name = "tcsr_usb4_2_clkref_en",
- .parent_data = &(const struct clk_parent_data){
- .index = DT_BI_TCXO_PAD,
- },
- .num_parents = 1,
- .ops = &clk_branch2_ops,
- },
+ [TCSR_USB3_MP0_CLKREF_EN] = &(const struct qcom_clk_ref_desc) {
+ .name = "tcsr_usb3_mp0_clkref_en",
+ .offset = 0x1510c,
+ .regulator_names = x1e80100_tcsr_tx1_rpt0_rx0_regulators,
+ .num_regulators = ARRAY_SIZE(x1e80100_tcsr_tx1_rpt0_rx0_regulators),
},
-};
-
-static struct clk_branch tcsr_usb2_2_clkref_en = {
- .halt_reg = 0x15128,
- .halt_check = BRANCH_HALT_DELAY,
- .clkr = {
- .enable_reg = 0x15128,
- .enable_mask = BIT(0),
- .hw.init = &(struct clk_init_data){
- .name = "tcsr_usb2_2_clkref_en",
- .parent_data = &(const struct clk_parent_data){
- .index = DT_BI_TCXO_PAD,
- },
- .num_parents = 1,
- .ops = &clk_branch2_ops,
- },
+ [TCSR_USB3_MP1_CLKREF_EN] = &(const struct qcom_clk_ref_desc) {
+ .name = "tcsr_usb3_mp1_clkref_en",
+ .offset = 0x15110,
+ .regulator_names = x1e80100_tcsr_tx1_rpt0_rx0_regulators,
+ .num_regulators = ARRAY_SIZE(x1e80100_tcsr_tx1_rpt0_rx0_regulators),
},
-};
-
-static struct clk_branch tcsr_pcie_4l_clkref_en = {
- .halt_reg = 0x1512c,
- .halt_check = BRANCH_HALT_DELAY,
- .clkr = {
- .enable_reg = 0x1512c,
- .enable_mask = BIT(0),
- .hw.init = &(struct clk_init_data){
- .name = "tcsr_pcie_4l_clkref_en",
- .parent_data = &(const struct clk_parent_data){
- .index = DT_BI_TCXO_PAD,
- },
- .num_parents = 1,
- .ops = &clk_branch2_ops,
- },
+ [TCSR_USB2_1_CLKREF_EN] = &(const struct qcom_clk_ref_desc) {
+ .name = "tcsr_usb2_1_clkref_en",
+ .offset = 0x15114,
+ .regulator_names = x1e80100_tcsr_tx0_rpt3_rx3_regulators,
+ .num_regulators = ARRAY_SIZE(x1e80100_tcsr_tx0_rpt3_rx3_regulators),
+ },
+ [TCSR_UFS_PHY_CLKREF_EN] = &(const struct qcom_clk_ref_desc) {
+ .name = "tcsr_ufs_phy_clkref_en",
+ .offset = 0x15118,
+ .regulator_names = x1e80100_tcsr_tx1_rpt12_rx2_regulators,
+ .num_regulators = ARRAY_SIZE(x1e80100_tcsr_tx1_rpt12_rx2_regulators),
+ },
+ [TCSR_USB4_1_CLKREF_EN] = &(const struct qcom_clk_ref_desc) {
+ .name = "tcsr_usb4_1_clkref_en",
+ .offset = 0x15120,
+ .regulator_names = x1e80100_tcsr_tx0_rpt4_rx4_regulators,
+ .num_regulators = ARRAY_SIZE(x1e80100_tcsr_tx0_rpt4_rx4_regulators),
+ },
+ [TCSR_USB4_2_CLKREF_EN] = &(const struct qcom_clk_ref_desc) {
+ .name = "tcsr_usb4_2_clkref_en",
+ .offset = 0x15124,
+ .regulator_names = x1e80100_tcsr_tx0_rpt3_rx3_regulators,
+ .num_regulators = ARRAY_SIZE(x1e80100_tcsr_tx0_rpt3_rx3_regulators),
+ },
+ [TCSR_USB2_2_CLKREF_EN] = &(const struct qcom_clk_ref_desc) {
+ .name = "tcsr_usb2_2_clkref_en",
+ .offset = 0x15128,
+ .regulator_names = x1e80100_tcsr_tx0_rpt3_rx3_regulators,
+ .num_regulators = ARRAY_SIZE(x1e80100_tcsr_tx0_rpt3_rx3_regulators),
+ },
+ [TCSR_PCIE_4L_CLKREF_EN] = &(const struct qcom_clk_ref_desc) {
+ .name = "tcsr_pcie_4l_clkref_en",
+ .offset = 0x1512c,
+ .regulator_names = x1e80100_tcsr_tx0_rpt4_rx4_regulators,
+ .num_regulators = ARRAY_SIZE(x1e80100_tcsr_tx0_rpt4_rx4_regulators),
},
-};
-
-static struct clk_regmap *tcsr_cc_x1e80100_clocks[] = {
- [TCSR_EDP_CLKREF_EN] = &tcsr_edp_clkref_en.clkr,
- [TCSR_PCIE_2L_4_CLKREF_EN] = &tcsr_pcie_2l_4_clkref_en.clkr,
- [TCSR_PCIE_2L_5_CLKREF_EN] = &tcsr_pcie_2l_5_clkref_en.clkr,
- [TCSR_PCIE_8L_CLKREF_EN] = &tcsr_pcie_8l_clkref_en.clkr,
- [TCSR_USB3_MP0_CLKREF_EN] = &tcsr_usb3_mp0_clkref_en.clkr,
- [TCSR_USB3_MP1_CLKREF_EN] = &tcsr_usb3_mp1_clkref_en.clkr,
- [TCSR_USB2_1_CLKREF_EN] = &tcsr_usb2_1_clkref_en.clkr,
- [TCSR_UFS_PHY_CLKREF_EN] = &tcsr_ufs_phy_clkref_en.clkr,
- [TCSR_USB4_1_CLKREF_EN] = &tcsr_usb4_1_clkref_en.clkr,
- [TCSR_USB4_2_CLKREF_EN] = &tcsr_usb4_2_clkref_en.clkr,
- [TCSR_USB2_2_CLKREF_EN] = &tcsr_usb2_2_clkref_en.clkr,
- [TCSR_PCIE_4L_CLKREF_EN] = &tcsr_pcie_4l_clkref_en.clkr,
-};
-
-static const struct regmap_config tcsr_cc_x1e80100_regmap_config = {
- .reg_bits = 32,
- .reg_stride = 4,
- .val_bits = 32,
- .max_register = 0x2f000,
- .fast_io = true,
-};
-
-static const struct qcom_cc_desc tcsr_cc_x1e80100_desc = {
- .config = &tcsr_cc_x1e80100_regmap_config,
- .clks = tcsr_cc_x1e80100_clocks,
- .num_clks = ARRAY_SIZE(tcsr_cc_x1e80100_clocks),
};
static const struct of_device_id tcsr_cc_x1e80100_match_table[] = {
@@ -261,7 +150,9 @@ MODULE_DEVICE_TABLE(of, tcsr_cc_x1e80100_match_table);
static int tcsr_cc_x1e80100_probe(struct platform_device *pdev)
{
- return qcom_cc_probe(pdev, &tcsr_cc_x1e80100_desc);
+ return qcom_clk_ref_probe(pdev, &tcsr_cc_x1e80100_regmap_config,
+ tcsr_cc_x1e80100_clk_descs,
+ ARRAY_SIZE(tcsr_cc_x1e80100_clk_descs));
}
static struct platform_driver tcsr_cc_x1e80100_driver = {
--
2.34.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 3/3] arm64: dts: qcom: hamoa/purwa: Add QREF regulator supplies
2026-08-06 5:34 [PATCH v2 0/3] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper Qiang Yu
2026-08-06 5:34 ` [PATCH v2 1/3] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding Qiang Yu
2026-08-06 5:34 ` [PATCH v2 2/3] clk: qcom: tcsrcc-x1e80100: Migrate to clk_ref helper Qiang Yu
@ 2026-08-06 5:34 ` Qiang Yu
2 siblings, 0 replies; 6+ messages in thread
From: Qiang Yu @ 2026-08-06 5:34 UTC (permalink / raw)
To: Bjorn Andersson, Michael Turquette, Stephen Boyd, Brian Masney,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Taniya Das,
Konrad Dybcio
Cc: linux-arm-msm, linux-clk, devicetree, linux-kernel, Qiang Yu
Wire up the LDO supplies required by the QREF and refgen blocks on Purwa
and Hamoa boards. Purwa's QREF topology is same as Hamoa's, so it reuses
the same qcom,x1e80100-tcsr compatible and supply set rather than needing
a dedicated one.
Signed-off-by: Qiang Yu <qiang.yu@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi | 21 +++++++++++++++++++++
.../qcom/hamoa-lenovo-ideacentre-mini-01q8x10.dts | 21 +++++++++++++++++++++
arch/arm64/boot/dts/qcom/purwa-iot-som.dtsi | 21 +++++++++++++++++++++
arch/arm64/boot/dts/qcom/x1-asus-vivobook-s15.dtsi | 21 +++++++++++++++++++++
arch/arm64/boot/dts/qcom/x1-asus-zenbook-a14.dtsi | 21 +++++++++++++++++++++
arch/arm64/boot/dts/qcom/x1-crd.dtsi | 21 +++++++++++++++++++++
arch/arm64/boot/dts/qcom/x1-dell-thena.dtsi | 21 +++++++++++++++++++++
arch/arm64/boot/dts/qcom/x1-hp-omnibook-x14.dtsi | 21 +++++++++++++++++++++
arch/arm64/boot/dts/qcom/x1-microsoft-denali.dtsi | 21 +++++++++++++++++++++
arch/arm64/boot/dts/qcom/x1e001de-devkit.dts | 21 +++++++++++++++++++++
.../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 21 +++++++++++++++++++++
.../boot/dts/qcom/x1e80100-dell-xps13-9345.dts | 21 +++++++++++++++++++++
.../dts/qcom/x1e80100-honor-magicbook-art-14.dts | 21 +++++++++++++++++++++
.../boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts | 21 +++++++++++++++++++++
.../dts/qcom/x1e80100-medion-sprchrgd-14-s1.dts | 21 +++++++++++++++++++++
.../boot/dts/qcom/x1e80100-microsoft-romulus.dtsi | 21 +++++++++++++++++++++
arch/arm64/boot/dts/qcom/x1e80100-qcp.dts | 21 +++++++++++++++++++++
.../boot/dts/qcom/x1p42100-lenovo-thinkbook-16.dts | 21 +++++++++++++++++++++
.../boot/dts/qcom/x1p42100-microsoft-sp12in.dts | 21 +++++++++++++++++++++
19 files changed, 399 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi b/arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi
index 9c5e77df0054..c035bc890f36 100644
--- a/arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi
+++ b/arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi
@@ -478,6 +478,27 @@ &remoteproc_cdsp {
status = "okay";
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j_1p2>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j_1p2>;
+};
+
&tlmm {
gpio-reserved-ranges = <34 2>; /* TPM LP & INT */
diff --git a/arch/arm64/boot/dts/qcom/hamoa-lenovo-ideacentre-mini-01q8x10.dts b/arch/arm64/boot/dts/qcom/hamoa-lenovo-ideacentre-mini-01q8x10.dts
index bfb7cea56df9..4c77c51768ab 100644
--- a/arch/arm64/boot/dts/qcom/hamoa-lenovo-ideacentre-mini-01q8x10.dts
+++ b/arch/arm64/boot/dts/qcom/hamoa-lenovo-ideacentre-mini-01q8x10.dts
@@ -902,6 +902,27 @@ wcd_tx: codec@0,3 {
};
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j>;
+};
+
&tlmm {
gpio-reserved-ranges = <44 4>, /* SPI11 (TPM) */
<76 4>, /* SPI19 (TZ Protected) */
diff --git a/arch/arm64/boot/dts/qcom/purwa-iot-som.dtsi b/arch/arm64/boot/dts/qcom/purwa-iot-som.dtsi
index fb2dcbc7c393..bbcc03dc7f7c 100644
--- a/arch/arm64/boot/dts/qcom/purwa-iot-som.dtsi
+++ b/arch/arm64/boot/dts/qcom/purwa-iot-som.dtsi
@@ -476,6 +476,27 @@ &remoteproc_cdsp {
status = "okay";
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j_1p2>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j_1p2>;
+};
+
&tlmm {
gpio-reserved-ranges = <34 2>; /* TPM LP & INT */
diff --git a/arch/arm64/boot/dts/qcom/x1-asus-vivobook-s15.dtsi b/arch/arm64/boot/dts/qcom/x1-asus-vivobook-s15.dtsi
index 48c4ad648354..57c306047d7a 100644
--- a/arch/arm64/boot/dts/qcom/x1-asus-vivobook-s15.dtsi
+++ b/arch/arm64/boot/dts/qcom/x1-asus-vivobook-s15.dtsi
@@ -1036,6 +1036,27 @@ &smb2360_1_eusb2_repeater {
vdd3-supply = <&vreg_l14b_3p0>;
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j_1p2>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j_1p2>;
+};
+
&tlmm {
gpio-reserved-ranges = <34 2>, /* Unused */
<44 4>, /* SPI (TPM) */
diff --git a/arch/arm64/boot/dts/qcom/x1-asus-zenbook-a14.dtsi b/arch/arm64/boot/dts/qcom/x1-asus-zenbook-a14.dtsi
index 66d566808f58..da6ecd4a1452 100644
--- a/arch/arm64/boot/dts/qcom/x1-asus-zenbook-a14.dtsi
+++ b/arch/arm64/boot/dts/qcom/x1-asus-zenbook-a14.dtsi
@@ -1272,6 +1272,27 @@ wcd_tx: codec@0,3 {
};
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c_0p9>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c_0p9>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j_1p2>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j_1p2>;
+};
+
&tlmm {
gpio-reserved-ranges = <44 4>, /* SPI11, TZ Protected */
<90 1>; /* Unknown, TZ Protected */
diff --git a/arch/arm64/boot/dts/qcom/x1-crd.dtsi b/arch/arm64/boot/dts/qcom/x1-crd.dtsi
index 9602d65c8b3d..8bd58f194f82 100644
--- a/arch/arm64/boot/dts/qcom/x1-crd.dtsi
+++ b/arch/arm64/boot/dts/qcom/x1-crd.dtsi
@@ -1528,6 +1528,27 @@ right_tweeter: speaker@0,1 {
};
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j_1p2>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j_1p2>;
+};
+
&tlmm {
gpio-reserved-ranges = <34 2>, /* Unused */
<44 4>, /* SPI (TPM) */
diff --git a/arch/arm64/boot/dts/qcom/x1-dell-thena.dtsi b/arch/arm64/boot/dts/qcom/x1-dell-thena.dtsi
index d6de4da02dcd..dd466aac10f2 100644
--- a/arch/arm64/boot/dts/qcom/x1-dell-thena.dtsi
+++ b/arch/arm64/boot/dts/qcom/x1-dell-thena.dtsi
@@ -1301,6 +1301,27 @@ right_tweeter: speaker@0,1 {
};
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j_1p2>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j_1p2>;
+};
+
&tlmm {
gpio-reserved-ranges = <44 4>, /* SPI11 (TPM) */
<76 4>, /* SPI19 (TZ Protected) */
diff --git a/arch/arm64/boot/dts/qcom/x1-hp-omnibook-x14.dtsi b/arch/arm64/boot/dts/qcom/x1-hp-omnibook-x14.dtsi
index 02708f23a865..224474678ed2 100644
--- a/arch/arm64/boot/dts/qcom/x1-hp-omnibook-x14.dtsi
+++ b/arch/arm64/boot/dts/qcom/x1-hp-omnibook-x14.dtsi
@@ -1284,6 +1284,27 @@ wcd_tx: codec@0,3 {
};
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j_1p2>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j_1p2>;
+};
+
&tlmm {
gpio-reserved-ranges = <34 2>, /* Unused */
<44 4>, /* SPI (TPM) */
diff --git a/arch/arm64/boot/dts/qcom/x1-microsoft-denali.dtsi b/arch/arm64/boot/dts/qcom/x1-microsoft-denali.dtsi
index 7559557610ed..9f677319a0e0 100644
--- a/arch/arm64/boot/dts/qcom/x1-microsoft-denali.dtsi
+++ b/arch/arm64/boot/dts/qcom/x1-microsoft-denali.dtsi
@@ -1107,6 +1107,27 @@ right_spkr: speaker@0,1 {
};
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j_1p2>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j_1p2>;
+};
+
&tlmm {
gpio-reserved-ranges = <44 4>, /* SPI (TPM) */
<238 1>; /* UFS Reset */
diff --git a/arch/arm64/boot/dts/qcom/x1e001de-devkit.dts b/arch/arm64/boot/dts/qcom/x1e001de-devkit.dts
index 2e38402e2c14..9ccfaaa3065e 100644
--- a/arch/arm64/boot/dts/qcom/x1e001de-devkit.dts
+++ b/arch/arm64/boot/dts/qcom/x1e001de-devkit.dts
@@ -1193,6 +1193,27 @@ wcd_tx: codec@0,3 {
};
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j_1p2>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j_1p2>;
+};
+
&tlmm {
gpio-reserved-ranges = <44 4>; /* SPI (TPM) */
diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
index 5d49df41be02..d172d8eb52c6 100644
--- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
+++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
@@ -1382,6 +1382,27 @@ wcd_tx: codec@0,3 {
};
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j_1p2>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j_1p2>;
+};
+
&tlmm {
gpio-reserved-ranges = <34 2>, /* Unused */
<44 4>, /* SPI (TPM) */
diff --git a/arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts b/arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts
index ce7b10ea89b6..ed812cf349dc 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts
+++ b/arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts
@@ -1069,6 +1069,27 @@ &smb2360_1_eusb2_repeater {
vdd3-supply = <&vreg_l14b_3p0>;
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c_0p9>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c_0p9>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j_1p2>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j_1p2>;
+};
+
&tlmm {
gpio-reserved-ranges = <44 4>, /* SPI11 (TPM) */
<76 4>, /* SPI19 (TZ Protected) */
diff --git a/arch/arm64/boot/dts/qcom/x1e80100-honor-magicbook-art-14.dts b/arch/arm64/boot/dts/qcom/x1e80100-honor-magicbook-art-14.dts
index b70c1e094bbf..603f6d7717f3 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100-honor-magicbook-art-14.dts
+++ b/arch/arm64/boot/dts/qcom/x1e80100-honor-magicbook-art-14.dts
@@ -1066,6 +1066,27 @@ right_tweeter: speaker@0,1 {
};
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j_1p2>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j_1p2>;
+};
+
&tlmm {
gpio-reserved-ranges = <34 2>, /* Unused */
<44 4>; /* SPI (TPM) */
diff --git a/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts b/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
index beb1475d7fa0..0ddec7b4a473 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
+++ b/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
@@ -1347,6 +1347,27 @@ right_tweeter: speaker@0,1 {
};
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j_1p2>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j_1p2>;
+};
+
&tlmm {
gpio-reserved-ranges = <34 2>, /* Unused */
<44 4>, /* SPI (TPM) */
diff --git a/arch/arm64/boot/dts/qcom/x1e80100-medion-sprchrgd-14-s1.dts b/arch/arm64/boot/dts/qcom/x1e80100-medion-sprchrgd-14-s1.dts
index f95b1f9f439d..ac4e7943c608 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100-medion-sprchrgd-14-s1.dts
+++ b/arch/arm64/boot/dts/qcom/x1e80100-medion-sprchrgd-14-s1.dts
@@ -1248,6 +1248,27 @@ right_tweeter: speaker@0,1 {
};
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c_0p9>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c_0p9>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j_1p2>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j_1p2>;
+};
+
&tlmm {
gpio-reserved-ranges = <28 4>, /* Unused */
<44 4>, /* SPI (TPM) */
diff --git a/arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus.dtsi b/arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus.dtsi
index 28342cb84ded..47018bb4e7ec 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus.dtsi
+++ b/arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus.dtsi
@@ -1322,6 +1322,27 @@ wcd_tx: codec@0,3 {
};
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j>;
+};
+
&tlmm {
gpio-reserved-ranges = <44 4>, /* SPI (TPM) */
<238 1>; /* UFS Reset */
diff --git a/arch/arm64/boot/dts/qcom/x1e80100-qcp.dts b/arch/arm64/boot/dts/qcom/x1e80100-qcp.dts
index 8afbac349cc9..8c41ff76c68e 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100-qcp.dts
+++ b/arch/arm64/boot/dts/qcom/x1e80100-qcp.dts
@@ -1177,6 +1177,27 @@ wcd_tx: codec@0,3 {
};
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j_1p2>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j_1p2>;
+};
+
&tlmm {
gpio-reserved-ranges = <33 3>, /* Unused */
<44 4>, /* SPI (TPM) */
diff --git a/arch/arm64/boot/dts/qcom/x1p42100-lenovo-thinkbook-16.dts b/arch/arm64/boot/dts/qcom/x1p42100-lenovo-thinkbook-16.dts
index 9e6f679758a9..c2946cfebaf0 100644
--- a/arch/arm64/boot/dts/qcom/x1p42100-lenovo-thinkbook-16.dts
+++ b/arch/arm64/boot/dts/qcom/x1p42100-lenovo-thinkbook-16.dts
@@ -1325,6 +1325,27 @@ wcd_tx: codec@0,3 {
};
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j_1p2>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j_1p2>;
+};
+
&tlmm {
gpio-reserved-ranges = <34 2>, /* Unused */
<72 2>; /* Secure EC I2C connection (?) */
diff --git a/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts b/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts
index 0314b2246cdb..edcb6b99a384 100644
--- a/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts
+++ b/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts
@@ -968,6 +968,27 @@ right_spkr: speaker@0,1 {
};
};
+&tcsr {
+ vdda-qrefrpt0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrpt1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrpt3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrpt4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qrefrx0-0p9-supply = <&vreg_l3c_0p8>;
+ vdda-qrefrx1-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx2-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-qrefrx3-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qrefrx4-0p9-supply = <&vreg_l1d_0p8>;
+ vdda-qreftx0-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx0-1p2-supply = <&vreg_l2j_1p2>;
+ vdda-qreftx1-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-qreftx1-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen0-0p9-supply = <&vreg_l3i_0p8>;
+ vdda-refgen0-1p2-supply = <&vreg_l3e_1p2>;
+ vdda-refgen2-0p9-supply = <&vreg_l3j_0p8>;
+ vdda-refgen2-1p2-supply = <&vreg_l2j_1p2>;
+};
+
&tlmm {
gpio-reserved-ranges = <34 2>, /* Unused */
<44 4>; /* SPI (TPM) */
--
2.34.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/3] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding
2026-08-06 5:34 ` [PATCH v2 1/3] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding Qiang Yu
@ 2026-08-06 5:39 ` sashiko-bot
2026-08-12 2:14 ` Rob Herring
1 sibling, 0 replies; 6+ messages in thread
From: sashiko-bot @ 2026-08-06 5:39 UTC (permalink / raw)
To: Qiang Yu; +Cc: robh, devicetree, conor+dt
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] The newly added binding for the x1e80100 TCSR defines provider capabilities (`#clock-cells` and `#reset-cells`) in the `properties` block but omits them from the `required` list.
--
--- Patch [1]: [PATCH v2 1/3] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding ---
commit 16b928cadee464be45b850ff14bcbce5380b441f
Author: Qiang Yu <qiang.yu@oss.qualcomm.com>
dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding
The QREF block supplies reference clocks to PCIe/USB/UFS PHYs and requires
dedicated LDO supplies to operate. The digital control interface for QREF
resides in TCSR on x1e80100, so these supply properties are placed in the
TCSR node. Add a dedicated binding file for qcom,x1e80100-tcsr to document
these supply properties.
> diff --git a/Documentation/devicetree/bindings/clock/qcom,x1e80100-tcsr.yaml b/Documentation/devicetree/bindings/clock/qcom,x1e80100-tcsr.yaml
> new file mode 100644
> index 0000000000000..55182cf550e7d
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/clock/qcom,x1e80100-tcsr.yaml
[ ... ]
> + '#clock-cells':
> + const: 1
> +
> + '#reset-cells':
> + const: 1
[ ... ]
> +required:
> + - compatible
> + - clocks
> + - vdda-qrefrpt0-0p9-supply
[Severity: Medium]
Should #clock-cells and #reset-cells be included in this required list?
Since the TCSR acts as a clock and reset provider, omitting the cell-count
properties from the required list allows incomplete device tree nodes to
silently pass schema validation. This can lead to runtime failures in drivers
that depend on the hardware as a provider.
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260805-hamoa_tcsr_qref_0805-v2-0-4f1cfb1fcab2@oss.qualcomm.com?part=1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/3] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding
2026-08-06 5:34 ` [PATCH v2 1/3] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding Qiang Yu
2026-08-06 5:39 ` sashiko-bot
@ 2026-08-12 2:14 ` Rob Herring
1 sibling, 0 replies; 6+ messages in thread
From: Rob Herring @ 2026-08-12 2:14 UTC (permalink / raw)
To: Qiang Yu
Cc: Bjorn Andersson, Michael Turquette, Stephen Boyd, Brian Masney,
Krzysztof Kozlowski, Conor Dooley, Taniya Das, Konrad Dybcio,
linux-arm-msm, linux-clk, devicetree, linux-kernel
On Wed, Aug 05, 2026 at 10:34:55PM -0700, Qiang Yu wrote:
> The QREF block supplies reference clocks to PCIe/USB/UFS PHYs and
> requires dedicated LDO supplies to operate. The digital control
> interface for QREF (clkref_en registers) resides in TCSR on x1e80100.
> Since QREF has no dedicated DT node of its own, these supply
> properties are placed in the TCSR node which acts as the control
> interface for QREF.
>
> These LDOs are required by QREF to provide a stable reference clock,
> without which the USB/PCIe/eDP PHYs cannot work properly, so they are
> marked required even though it breaks ABI.
>
> Add a dedicated binding file for qcom,x1e80100-tcsr and document the
> supply properties.
>
> Signed-off-by: Qiang Yu <qiang.yu@oss.qualcomm.com>
> ---
> .../bindings/clock/qcom,sm8550-tcsr.yaml | 1 -
> .../bindings/clock/qcom,x1e80100-tcsr.yaml | 118 +++++++++++++++++++++
> 2 files changed, 118 insertions(+), 1 deletion(-)
sashiko issue needs to be addressed.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-08-12 2:14 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-06 5:34 [PATCH v2 0/3] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper Qiang Yu
2026-08-06 5:34 ` [PATCH v2 1/3] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding Qiang Yu
2026-08-06 5:39 ` sashiko-bot
2026-08-12 2:14 ` Rob Herring
2026-08-06 5:34 ` [PATCH v2 2/3] clk: qcom: tcsrcc-x1e80100: Migrate to clk_ref helper Qiang Yu
2026-08-06 5:34 ` [PATCH v2 3/3] arm64: dts: qcom: hamoa/purwa: Add QREF regulator supplies Qiang Yu
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.