* [PATCH v4 0/4] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper
@ 2026-08-28 6:00 Qiang Yu
2026-08-28 6:00 ` [PATCH v4 1/4] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding Qiang Yu
` (6 more replies)
0 siblings, 7 replies; 12+ messages in thread
From: Qiang Yu @ 2026-08-28 6:00 UTC (permalink / raw)
To: Bjorn Andersson, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Taniya Das,
Konrad Dybcio
Cc: Qiang Yu, linux-arm-msm, linux-clk, devicetree, linux-kernel,
Konrad Dybcio, Abel Vesa
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 removes reset-cells from tcsr dts node.
Patch 4 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).
Signed-off-by: Qiang Yu <qiang.yu@oss.qualcomm.com>
---
Changes in v4:
- Drop #reset-cells from the binding entirely.
- Add new patch: Drop the stale #reset-cells property from the TCSR node in hamoa.dtsi.
- Link to v3: https://lore.kernel.org/all/20260812-hamoa_tcsr_qref_0812-v3-0-dc7627169c6d@oss.qualcomm.com/
Changes in v3:
- Patch 1: `#clock-cells` and `#reset-cells` in `required` list.
- Link to v2: https://lore.kernel.org/all/20260805-hamoa_tcsr_qref_0805-v2-0-4f1cfb1fcab2@oss.qualcomm.com/
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: Stephen Boyd <sboyd@kernel.org>
To: Brian Masney <bmasney+clk@redhat.com>
To: Jerome Brunet <jbrunet+clk@baylibre.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
---
Qiang Yu (4):
dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding
clk: qcom: tcsrcc-x1e80100: Migrate to clk_ref helper
arm64: dts: qcom: hamoa: Drop unused #reset-cells from TCSR node
arm64: dts: qcom: hamoa/purwa: Add QREF regulator supplies
.../bindings/clock/qcom,sm8550-tcsr.yaml | 1 -
.../bindings/clock/qcom,x1e80100-tcsr.yaml | 114 +++++++
arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi | 21 ++
.../qcom/hamoa-lenovo-ideacentre-mini-01q8x10.dts | 21 ++
arch/arm64/boot/dts/qcom/hamoa.dtsi | 1 -
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 +++++++--------------
23 files changed, 626 insertions(+), 224 deletions(-)
---
base-commit: a8406e6c0b793ce0788019683837c40855b55995
change-id: 20260825-hamoa_tcsr_qref_0826-00c0aaf8bc3c
Best regards,
--
Qiang Yu <qiang.yu@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v4 1/4] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding
2026-08-28 6:00 [PATCH v4 0/4] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper Qiang Yu
@ 2026-08-28 6:00 ` Qiang Yu
2026-08-31 7:27 ` Krzysztof Kozlowski
2026-08-28 6:00 ` [PATCH v4 2/4] clk: qcom: tcsrcc-x1e80100: Migrate to clk_ref helper Qiang Yu
` (5 subsequent siblings)
6 siblings, 1 reply; 12+ messages in thread
From: Qiang Yu @ 2026-08-28 6:00 UTC (permalink / raw)
To: Bjorn Andersson, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Taniya Das,
Konrad Dybcio
Cc: Qiang Yu, linux-arm-msm, linux-clk, devicetree, linux-kernel
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 the supplies
are marked required even though it breaks ABI.
TCSR does not act as a reset provider on x1e80100: no driver has ever
registered a reset controller for it, and no consumer references it as a
reset, so #reset-cells is dropped entirely rather than documented.
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 | 114 +++++++++++++++++++++
2 files changed, 114 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..8163c679fc54
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/qcom,x1e80100-tcsr.yaml
@@ -0,0 +1,114 @@
+# 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 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
+
+ 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
+ - '#clock-cells'
+ - 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>;
+ 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] 12+ messages in thread
* [PATCH v4 2/4] clk: qcom: tcsrcc-x1e80100: Migrate to clk_ref helper
2026-08-28 6:00 [PATCH v4 0/4] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper Qiang Yu
2026-08-28 6:00 ` [PATCH v4 1/4] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding Qiang Yu
@ 2026-08-28 6:00 ` Qiang Yu
2026-08-28 6:00 ` [PATCH v4 3/4] arm64: dts: qcom: hamoa: Drop unused #reset-cells from TCSR node Qiang Yu
` (4 subsequent siblings)
6 siblings, 0 replies; 12+ messages in thread
From: Qiang Yu @ 2026-08-28 6:00 UTC (permalink / raw)
To: Bjorn Andersson, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Taniya Das,
Konrad Dybcio
Cc: Qiang Yu, linux-arm-msm, linux-clk, devicetree, linux-kernel,
Konrad Dybcio, Abel Vesa
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>
Reviewed-by: Abel Vesa <abel.vesa@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] 12+ messages in thread
* [PATCH v4 3/4] arm64: dts: qcom: hamoa: Drop unused #reset-cells from TCSR node
2026-08-28 6:00 [PATCH v4 0/4] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper Qiang Yu
2026-08-28 6:00 ` [PATCH v4 1/4] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding Qiang Yu
2026-08-28 6:00 ` [PATCH v4 2/4] clk: qcom: tcsrcc-x1e80100: Migrate to clk_ref helper Qiang Yu
@ 2026-08-28 6:00 ` Qiang Yu
2026-08-28 9:15 ` Abel Vesa
2026-08-31 7:43 ` Konrad Dybcio
2026-08-28 6:00 ` [PATCH v4 4/4] arm64: dts: qcom: hamoa/purwa: Add QREF regulator supplies Qiang Yu
` (3 subsequent siblings)
6 siblings, 2 replies; 12+ messages in thread
From: Qiang Yu @ 2026-08-28 6:00 UTC (permalink / raw)
To: Bjorn Andersson, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Taniya Das,
Konrad Dybcio
Cc: Qiang Yu, linux-arm-msm, linux-clk, devicetree, linux-kernel
TCSR does not act as a reset provider on x1e80100: the driver never
registered a reset controller for it, and no consumer references
&tcsr as a reset. Drop the stale #reset-cells property to match the
qcom,x1e80100-tcsr binding, which no longer declares it either.
Signed-off-by: Qiang Yu <qiang.yu@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/hamoa.dtsi | 1 -
1 file changed, 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/hamoa.dtsi b/arch/arm64/boot/dts/qcom/hamoa.dtsi
index 8a96ea1bdb9c..7f62c624e4ca 100644
--- a/arch/arm64/boot/dts/qcom/hamoa.dtsi
+++ b/arch/arm64/boot/dts/qcom/hamoa.dtsi
@@ -3984,7 +3984,6 @@ tcsr: clock-controller@1fc0000 {
reg = <0 0x01fc0000 0 0x30000>;
clocks = <&rpmhcc RPMH_CXO_CLK>;
#clock-cells = <1>;
- #reset-cells = <1>;
};
gpu: gpu@3d00000 {
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v4 4/4] arm64: dts: qcom: hamoa/purwa: Add QREF regulator supplies
2026-08-28 6:00 [PATCH v4 0/4] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper Qiang Yu
` (2 preceding siblings ...)
2026-08-28 6:00 ` [PATCH v4 3/4] arm64: dts: qcom: hamoa: Drop unused #reset-cells from TCSR node Qiang Yu
@ 2026-08-28 6:00 ` Qiang Yu
2026-09-02 21:44 ` (subset) " Bjorn Andersson
2026-08-31 17:53 ` (subset) [PATCH v4 0/4] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper Bjorn Andersson
` (2 subsequent siblings)
6 siblings, 1 reply; 12+ messages in thread
From: Qiang Yu @ 2026-08-28 6:00 UTC (permalink / raw)
To: Bjorn Andersson, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Taniya Das,
Konrad Dybcio
Cc: Qiang Yu, linux-arm-msm, linux-clk, devicetree, linux-kernel,
Abel Vesa
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.
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
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 bc70fe5db96f..f139f3adb933 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 284825008389..75ce8b0c94d2 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 488e98413c3a..4ef3a5407ce8 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 0dc7c1b5a14a..6bf12d8f0431 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 59cbbfbce490..7b1486469730 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 60db83b8985f..ef9c8836c33a 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 4cda708455d8..2ebb42906c9b 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 dba8cee43e29..6b4b17acc069 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 ce7d958ca687..db4bffe486c0 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 be1a8ac8c699..21303340a530 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 0bee2a3d6e7a..75ad74bcb042 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 2be5a37c00cc..ad62350ba670 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 9eb2dfd99f20..2692e48537aa 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 e4a0b86847cd..039f68807376 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 13d0f09e0c2a..9f45ad9305e8 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 78380fec8839..9d4fa442d158 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 c2f21fcb1b09..8891ad6188ed 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] 12+ messages in thread
* Re: [PATCH v4 3/4] arm64: dts: qcom: hamoa: Drop unused #reset-cells from TCSR node
2026-08-28 6:00 ` [PATCH v4 3/4] arm64: dts: qcom: hamoa: Drop unused #reset-cells from TCSR node Qiang Yu
@ 2026-08-28 9:15 ` Abel Vesa
2026-08-31 7:43 ` Konrad Dybcio
1 sibling, 0 replies; 12+ messages in thread
From: Abel Vesa @ 2026-08-28 9:15 UTC (permalink / raw)
To: Qiang Yu
Cc: Bjorn Andersson, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Taniya Das,
Konrad Dybcio, linux-arm-msm, linux-clk, devicetree, linux-kernel
On 26-08-27 23:00:35, Qiang Yu wrote:
> TCSR does not act as a reset provider on x1e80100: the driver never
> registered a reset controller for it, and no consumer references
> &tcsr as a reset. Drop the stale #reset-cells property to match the
> qcom,x1e80100-tcsr binding, which no longer declares it either.
>
> Signed-off-by: Qiang Yu <qiang.yu@oss.qualcomm.com>
Assuming this doesn't break ABI ...
LGTM, otherwise:
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 1/4] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding
2026-08-28 6:00 ` [PATCH v4 1/4] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding Qiang Yu
@ 2026-08-31 7:27 ` Krzysztof Kozlowski
0 siblings, 0 replies; 12+ messages in thread
From: Krzysztof Kozlowski @ 2026-08-31 7:27 UTC (permalink / raw)
To: Qiang Yu
Cc: Bjorn Andersson, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Taniya Das,
Konrad Dybcio, linux-arm-msm, linux-clk, devicetree, linux-kernel
On Thu, Aug 27, 2026 at 11:00:33PM -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 the supplies
> are marked required even though it breaks ABI.
>
> TCSR does not act as a reset provider on x1e80100: no driver has ever
> registered a reset controller for it, and no consumer references it as a
> reset, so #reset-cells is dropped entirely rather than documented.
>
> 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 | 114 +++++++++++++++++++++
> 2 files changed, 114 insertions(+), 1 deletion(-)
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 3/4] arm64: dts: qcom: hamoa: Drop unused #reset-cells from TCSR node
2026-08-28 6:00 ` [PATCH v4 3/4] arm64: dts: qcom: hamoa: Drop unused #reset-cells from TCSR node Qiang Yu
2026-08-28 9:15 ` Abel Vesa
@ 2026-08-31 7:43 ` Konrad Dybcio
1 sibling, 0 replies; 12+ messages in thread
From: Konrad Dybcio @ 2026-08-31 7:43 UTC (permalink / raw)
To: Qiang Yu, Bjorn Andersson, Stephen Boyd, Brian Masney,
Jerome Brunet, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Taniya Das, Konrad Dybcio
Cc: linux-arm-msm, linux-clk, devicetree, linux-kernel
On 8/28/26 8:00 AM, Qiang Yu wrote:
> TCSR does not act as a reset provider on x1e80100: the driver never
> registered a reset controller for it, and no consumer references
> &tcsr as a reset. Drop the stale #reset-cells property to match the
> qcom,x1e80100-tcsr binding, which no longer declares it either.
>
> Signed-off-by: Qiang Yu <qiang.yu@oss.qualcomm.com>
> ---
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Konrad
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: (subset) [PATCH v4 0/4] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper
2026-08-28 6:00 [PATCH v4 0/4] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper Qiang Yu
` (3 preceding siblings ...)
2026-08-28 6:00 ` [PATCH v4 4/4] arm64: dts: qcom: hamoa/purwa: Add QREF regulator supplies Qiang Yu
@ 2026-08-31 17:53 ` Bjorn Andersson
2026-09-01 2:09 ` Bjorn Andersson
2026-09-02 21:44 ` Bjorn Andersson
6 siblings, 0 replies; 12+ messages in thread
From: Bjorn Andersson @ 2026-08-31 17:53 UTC (permalink / raw)
To: Stephen Boyd, Brian Masney, Jerome Brunet, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Taniya Das, Konrad Dybcio,
Qiang Yu
Cc: linux-arm-msm, linux-clk, devicetree, linux-kernel, Konrad Dybcio,
Abel Vesa
On Thu, 27 Aug 2026 23:00:32 -0700, Qiang Yu wrote:
> 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.
>
> [...]
Applied, thanks!
[1/4] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding
commit: fcbd3151c9beffca044ea7a085d7e595ebf34f74
[2/4] clk: qcom: tcsrcc-x1e80100: Migrate to clk_ref helper
commit: 011ed2a61f44b352bda71a82213f621bbfdb40f9
Best regards,
--
Bjorn Andersson <andersson@kernel.org>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: (subset) [PATCH v4 0/4] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper
2026-08-28 6:00 [PATCH v4 0/4] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper Qiang Yu
` (4 preceding siblings ...)
2026-08-31 17:53 ` (subset) [PATCH v4 0/4] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper Bjorn Andersson
@ 2026-09-01 2:09 ` Bjorn Andersson
2026-09-02 21:44 ` Bjorn Andersson
6 siblings, 0 replies; 12+ messages in thread
From: Bjorn Andersson @ 2026-09-01 2:09 UTC (permalink / raw)
To: Stephen Boyd, Brian Masney, Jerome Brunet, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Taniya Das, Konrad Dybcio,
Qiang Yu
Cc: linux-arm-msm, linux-clk, devicetree, linux-kernel, Konrad Dybcio,
Abel Vesa
On Thu, 27 Aug 2026 23:00:32 -0700, Qiang Yu wrote:
> 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.
>
> [...]
Applied, thanks!
[3/4] arm64: dts: qcom: hamoa: Drop unused #reset-cells from TCSR node
commit: 4d8ff3d92241d9ae4fdd5fed7a810a116e37eb0d
[4/4] arm64: dts: qcom: hamoa/purwa: Add QREF regulator supplies
(no commit info)
Best regards,
--
Bjorn Andersson <andersson@kernel.org>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 0/4] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper
2026-08-28 6:00 [PATCH v4 0/4] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper Qiang Yu
` (5 preceding siblings ...)
2026-09-01 2:09 ` Bjorn Andersson
@ 2026-09-02 21:44 ` Bjorn Andersson
6 siblings, 0 replies; 12+ messages in thread
From: Bjorn Andersson @ 2026-09-02 21:44 UTC (permalink / raw)
To: Stephen Boyd, Brian Masney, Jerome Brunet, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Taniya Das, Konrad Dybcio,
Qiang Yu
Cc: linux-arm-msm, linux-clk, devicetree, linux-kernel, Konrad Dybcio,
Abel Vesa
On Thu, 27 Aug 2026 23:00:32 -0700, Qiang Yu wrote:
> 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.
>
> [...]
Applied, thanks!
[1/4] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding
commit: fcbd3151c9beffca044ea7a085d7e595ebf34f74
[2/4] clk: qcom: tcsrcc-x1e80100: Migrate to clk_ref helper
commit: 011ed2a61f44b352bda71a82213f621bbfdb40f9
[3/4] arm64: dts: qcom: hamoa: Drop unused #reset-cells from TCSR node
commit: 4d8ff3d92241d9ae4fdd5fed7a810a116e37eb0d
[4/4] arm64: dts: qcom: hamoa/purwa: Add QREF regulator supplies
commit: d9d07e230c45cc11a0046b46354e413f2353bdf8
Best regards,
--
Bjorn Andersson <andersson@kernel.org>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: (subset) [PATCH v4 4/4] arm64: dts: qcom: hamoa/purwa: Add QREF regulator supplies
2026-08-28 6:00 ` [PATCH v4 4/4] arm64: dts: qcom: hamoa/purwa: Add QREF regulator supplies Qiang Yu
@ 2026-09-02 21:44 ` Bjorn Andersson
0 siblings, 0 replies; 12+ messages in thread
From: Bjorn Andersson @ 2026-09-02 21:44 UTC (permalink / raw)
To: Stephen Boyd, Brian Masney, Jerome Brunet, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Taniya Das, Konrad Dybcio,
Qiang Yu
Cc: linux-arm-msm, linux-clk, devicetree, linux-kernel, Abel Vesa
On Thu, 27 Aug 2026 23:00:36 -0700, Qiang Yu wrote:
> 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.
>
>
Applied, thanks!
[4/4] arm64: dts: qcom: hamoa/purwa: Add QREF regulator supplies
commit: d9d07e230c45cc11a0046b46354e413f2353bdf8
Best regards,
--
Bjorn Andersson <andersson@kernel.org>
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2026-09-02 21:45 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-28 6:00 [PATCH v4 0/4] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper Qiang Yu
2026-08-28 6:00 ` [PATCH v4 1/4] dt-bindings: clock: qcom: Move x1e80100 TCSR to own binding Qiang Yu
2026-08-31 7:27 ` Krzysztof Kozlowski
2026-08-28 6:00 ` [PATCH v4 2/4] clk: qcom: tcsrcc-x1e80100: Migrate to clk_ref helper Qiang Yu
2026-08-28 6:00 ` [PATCH v4 3/4] arm64: dts: qcom: hamoa: Drop unused #reset-cells from TCSR node Qiang Yu
2026-08-28 9:15 ` Abel Vesa
2026-08-31 7:43 ` Konrad Dybcio
2026-08-28 6:00 ` [PATCH v4 4/4] arm64: dts: qcom: hamoa/purwa: Add QREF regulator supplies Qiang Yu
2026-09-02 21:44 ` (subset) " Bjorn Andersson
2026-08-31 17:53 ` (subset) [PATCH v4 0/4] clk: qcom: Migrate x1e80100 TCSR to clk_ref helper Bjorn Andersson
2026-09-01 2:09 ` Bjorn Andersson
2026-09-02 21:44 ` Bjorn Andersson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).