]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
arm64: dts: qcom: kaanapali: Add PMIC devices
authorJishnu Prakash <jishnu.prakash@oss.qualcomm.com>
Mon, 23 Mar 2026 06:19:41 +0000 (23:19 -0700)
committerBjorn Andersson <andersson@kernel.org>
Thu, 26 Mar 2026 14:40:45 +0000 (09:40 -0500)
Add a spmi-pmic-arb device for the SPMI PMIC arbiter found on Kaanapali.
It has two subnodes corresponding to the SPMI0 bus controller and the
SPMI1 bus controller.

Also add dtsi files for PMH0104, PMH0110, PMD8028, PMIH0108, PMR735D
and PM8010 along with temp-alarm and GPIO nodes under them, which are
needed on Kaanapali.

Signed-off-by: Jishnu Prakash <jishnu.prakash@oss.qualcomm.com>
Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260322-knp-pmic-dt-v1-1-70bc40ea4428@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
arch/arm64/boot/dts/qcom/kaanapali.dtsi
arch/arm64/boot/dts/qcom/pm8010-kaanapali.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/pmd8028-kaanapali.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/pmh0104-kaanapali.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/pmh0110-kaanapali.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/pmih0108-kaanapali.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/pmr735d-kaanapali.dtsi [new file with mode: 0644]

index 18c029f4917865775ae3927b4fcb0a0a45a7cee0..d86f116a4df8751fa81b990ee1a3014c8cd281d7 100644 (file)
                        #clock-cells = <0>;
                };
 
+               arbiter@c400000 {
+                       compatible = "qcom,kaanapali-spmi-pmic-arb", "qcom,glymur-spmi-pmic-arb";
+                       reg = <0x0 0x0c400000 0x0 0x3000>,
+                             <0x0 0x0c900000 0x0 0x400000>,
+                             <0x0 0x0c4c0000 0x0 0x400000>,
+                             <0x0 0x0c403000 0x0 0x8000>;
+                       reg-names = "core",
+                                   "chnls",
+                                   "obsrvr",
+                                   "chnl_map";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+                       qcom,channel = <0>;
+                       qcom,ee = <0>;
+
+                       spmi_bus0: spmi@c426000 {
+                               reg = <0x0 0x0c426000 0x0 0x4000>,
+                                     <0x0 0x0c8c0000 0x0 0x10000>,
+                                     <0x0 0x0c42a000 0x0 0x8000>;
+                               reg-names = "cnfg",
+                                           "intr",
+                                           "chnl_owner";
+                               interrupts-extended = <&pdc 1 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "periph_irq";
+                               interrupt-controller;
+                               #interrupt-cells = <4>;
+                               #address-cells = <2>;
+                               #size-cells = <0>;
+                       };
+
+                       spmi_bus1: spmi@c437000 {
+                               reg = <0x0 0x0c437000 0x0 0x4000>,
+                                     <0x0 0x0c8d0000 0x0 0x10000>,
+                                     <0x0 0x0c43b000 0x0 0x8000>;
+                               reg-names = "cnfg",
+                                           "intr",
+                                           "chnl_owner";
+                               interrupts-extended = <&pdc 3 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "periph_irq";
+                               interrupt-controller;
+                               #interrupt-cells = <4>;
+                               #address-cells = <2>;
+                               #size-cells = <0>;
+                       };
+               };
+
                tlmm: pinctrl@f100000 {
                        compatible = "qcom,kaanapali-tlmm";
                        reg = <0x0 0x0f100000 0x0 0x300000>;
diff --git a/arch/arm64/boot/dts/qcom/pm8010-kaanapali.dtsi b/arch/arm64/boot/dts/qcom/pm8010-kaanapali.dtsi
new file mode 100644 (file)
index 0000000..bfc58a6
--- /dev/null
@@ -0,0 +1,93 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/spmi/spmi.h>
+
+/ {
+       thermal-zones {
+               pm8010-m-thermal {
+                       polling-delay-passive = <100>;
+
+                       thermal-sensors = <&pm8010_m_e1_temp_alarm>;
+
+                       trips {
+                               trip0 {
+                                       temperature = <95000>;
+                                       hysteresis = <0>;
+                                       type = "passive";
+                               };
+
+                               trip1 {
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
+                                       type = "hot";
+                               };
+
+                               trip2 {
+                                       temperature = <145000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               pm8010-n-thermal {
+                       polling-delay-passive = <100>;
+
+                       thermal-sensors = <&pm8010_n_e1_temp_alarm>;
+
+                       trips {
+                               trip0 {
+                                       temperature = <95000>;
+                                       hysteresis = <0>;
+                                       type = "passive";
+                               };
+
+                               trip1 {
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
+                                       type = "hot";
+                               };
+
+                               trip2 {
+                                       temperature = <145000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
+};
+
+&spmi_bus1 {
+       pm8010_m_e1: pmic@c {
+               compatible = "qcom,pm8010", "qcom,spmi-pmic";
+               reg = <0xc SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pm8010_m_e1_temp_alarm: temp-alarm@2400 {
+                       compatible = "qcom,spmi-temp-alarm";
+                       reg = <0x2400>;
+                       interrupts = <0xc 0x24 0x0 IRQ_TYPE_EDGE_BOTH>;
+                       #thermal-sensor-cells = <0>;
+               };
+       };
+
+       pm8010_n_e1: pmic@d {
+               compatible = "qcom,pm8010", "qcom,spmi-pmic";
+               reg = <0xd SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pm8010_n_e1_temp_alarm: temp-alarm@2400 {
+                       compatible = "qcom,spmi-temp-alarm";
+                       reg = <0x2400>;
+                       interrupts = <0xd 0x24 0x0 IRQ_TYPE_EDGE_BOTH>;
+                       #thermal-sensor-cells = <0>;
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/qcom/pmd8028-kaanapali.dtsi b/arch/arm64/boot/dts/qcom/pmd8028-kaanapali.dtsi
new file mode 100644 (file)
index 0000000..db4dc16
--- /dev/null
@@ -0,0 +1,62 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/spmi/spmi.h>
+
+/ {
+       thermal-zones {
+               pmd8028-thermal {
+                       polling-delay-passive = <100>;
+                       thermal-sensors = <&pmd8028_e1_temp_alarm>;
+
+                       trips {
+                               trip0 {
+                                       temperature = <95000>;
+                                       hysteresis = <0>;
+                                       type = "passive";
+                               };
+
+                               trip1 {
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
+                                       type = "hot";
+                               };
+
+                               trip2 {
+                                       temperature = <145000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
+};
+
+&spmi_bus1 {
+       pmd8028_e1: pmic@4 {
+               compatible = "qcom,pmd8028", "qcom,spmi-pmic";
+               reg = <0x4 SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pmd8028_e1_temp_alarm: temp-alarm@a00 {
+                       compatible = "qcom,spmi-temp-alarm";
+                       reg = <0xa00>;
+                       interrupts = <0x4 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
+                       #thermal-sensor-cells = <0>;
+               };
+
+               pmd8028_e1_gpios: gpio@8800 {
+                       compatible = "qcom,pmd8028-gpio", "qcom,spmi-gpio";
+                       reg = <0x8800>;
+                       gpio-controller;
+                       gpio-ranges = <&pmd8028_e1_gpios 0 0 4>;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/qcom/pmh0104-kaanapali.dtsi b/arch/arm64/boot/dts/qcom/pmh0104-kaanapali.dtsi
new file mode 100644 (file)
index 0000000..d009c9a
--- /dev/null
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/spmi/spmi.h>
+
+/ {
+       thermal-zones {
+               pmh0104-thermal {
+                       polling-delay-passive = <100>;
+
+                       thermal-sensors = <&pmh0104_j_e1_temp_alarm>;
+
+                       trips {
+                               trip0 {
+                                       temperature = <95000>;
+                                       hysteresis = <0>;
+                                       type = "passive";
+                               };
+
+                               trip1 {
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
+                                       type = "hot";
+                               };
+
+                               trip2 {
+                                       temperature = <145000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
+};
+
+&spmi_bus1 {
+       pmh0104_j_e1: pmic@9 {
+               compatible = "qcom,pmh0104", "qcom,spmi-pmic";
+               reg = <0x9 SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pmh0104_j_e1_temp_alarm: temp-alarm@a00 {
+                       compatible = "qcom,spmi-temp-alarm";
+                       reg = <0xa00>;
+                       interrupts = <0x9 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
+                       #thermal-sensor-cells = <0>;
+               };
+
+               pmh0104_j_e1_gpios: gpio@8800 {
+                       compatible = "qcom,pmh0104-gpio", "qcom,spmi-gpio";
+                       reg = <0x8800>;
+                       gpio-controller;
+                       gpio-ranges = <&pmh0104_j_e1_gpios 0 0 8>;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/qcom/pmh0110-kaanapali.dtsi b/arch/arm64/boot/dts/qcom/pmh0110-kaanapali.dtsi
new file mode 100644 (file)
index 0000000..15d9cff
--- /dev/null
@@ -0,0 +1,213 @@
+// SPDX-License-Identifier: BSD-3-Clause-Clear
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/spmi/spmi.h>
+
+/ {
+       thermal-zones {
+               pmh0110-d-thermal {
+                       polling-delay-passive = <100>;
+
+                       thermal-sensors = <&pmh0110_d_e0_temp_alarm>;
+
+                       trips {
+                               trip0 {
+                                       temperature = <95000>;
+                                       hysteresis = <0>;
+                                       type = "passive";
+                               };
+
+                               trip1 {
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
+                                       type = "hot";
+                               };
+
+                               trip2 {
+                                       temperature = <145000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               pmh0110-f-thermal {
+                       polling-delay-passive = <100>;
+
+                       thermal-sensors = <&pmh0110_f_e0_temp_alarm>;
+
+                       trips {
+                               trip0 {
+                                       temperature = <95000>;
+                                       hysteresis = <0>;
+                                       type = "passive";
+                               };
+
+                               trip1 {
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
+                                       type = "hot";
+                               };
+
+                               trip2 {
+                                       temperature = <145000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               pmh0110-g-thermal {
+                       polling-delay-passive = <100>;
+
+                       thermal-sensors = <&pmh0110_g_e0_temp_alarm>;
+
+                       trips {
+                               trip0 {
+                                       temperature = <95000>;
+                                       hysteresis = <0>;
+                                       type = "passive";
+                               };
+
+                               trip1 {
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
+                                       type = "hot";
+                               };
+
+                               trip2 {
+                                       temperature = <145000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               pmh0110-i-thermal {
+                       polling-delay-passive = <100>;
+
+                       thermal-sensors = <&pmh0110_i_e0_temp_alarm>;
+
+                       trips {
+                               trip0 {
+                                       temperature = <95000>;
+                                       hysteresis = <0>;
+                                       type = "passive";
+                               };
+
+                               trip1 {
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
+                                       type = "hot";
+                               };
+
+                               trip2 {
+                                       temperature = <145000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
+};
+
+&spmi_bus0 {
+       pmh0110_d_e0: pmic@3 {
+               compatible = "qcom,pmh0110", "qcom,spmi-pmic";
+               reg = <0x3 SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pmh0110_d_e0_temp_alarm: temp-alarm@a00 {
+                       compatible = "qcom,spmi-temp-alarm";
+                       reg = <0xa00>;
+                       interrupts = <0x3 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
+                       #thermal-sensor-cells = <0>;
+               };
+
+               pmh0110_d_e0_gpios: gpio@8800 {
+                       compatible = "qcom,pmh0110-gpio", "qcom,spmi-gpio";
+                       reg = <0x8800>;
+                       gpio-controller;
+                       gpio-ranges = <&pmh0110_d_e0_gpios 0 0 14>;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+
+       pmh0110_f_e0: pmic@5 {
+               compatible = "qcom,pmh0110", "qcom,spmi-pmic";
+               reg = <0x5 SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pmh0110_f_e0_temp_alarm: temp-alarm@a00 {
+                       compatible = "qcom,spmi-temp-alarm";
+                       reg = <0xa00>;
+                       interrupts = <0x5 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
+                       #thermal-sensor-cells = <0>;
+               };
+
+               pmh0110_f_e0_gpios: gpio@8800 {
+                       compatible = "qcom,pmh0110-gpio", "qcom,spmi-gpio";
+                       reg = <0x8800>;
+                       gpio-controller;
+                       gpio-ranges = <&pmh0110_f_e0_gpios 0 0 14>;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+
+       pmh0110_g_e0: pmic@6 {
+               compatible = "qcom,pmh0110", "qcom,spmi-pmic";
+               reg = <0x6 SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pmh0110_g_e0_temp_alarm: temp-alarm@a00 {
+                       compatible = "qcom,spmi-temp-alarm";
+                       reg = <0xa00>;
+                       interrupts = <0x6 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
+                       #thermal-sensor-cells = <0>;
+               };
+
+               pmh0110_g_e0_gpios: gpio@8800 {
+                       compatible = "qcom,pmh0110-gpio", "qcom,spmi-gpio";
+                       reg = <0x8800>;
+                       gpio-controller;
+                       gpio-ranges = <&pmh0110_g_e0_gpios 0 0 14>;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+
+       pmh0110_i_e0: pmic@8 {
+               compatible = "qcom,pmh0110", "qcom,spmi-pmic";
+               reg = <0x8 SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pmh0110_i_e0_temp_alarm: temp-alarm@a00 {
+                       compatible = "qcom,spmi-temp-alarm";
+                       reg = <0xa00>;
+                       interrupts = <0x8 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
+                       #thermal-sensor-cells = <0>;
+               };
+
+               pmh0110_i_e0_gpios: gpio@8800 {
+                       compatible = "qcom,pmh0110-gpio", "qcom,spmi-gpio";
+                       reg = <0x8800>;
+                       gpio-controller;
+                       gpio-ranges = <&pmh0110_i_e0_gpios 0 0 14>;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/qcom/pmih0108-kaanapali.dtsi b/arch/arm64/boot/dts/qcom/pmih0108-kaanapali.dtsi
new file mode 100644 (file)
index 0000000..b73b0e8
--- /dev/null
@@ -0,0 +1,68 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/spmi/spmi.h>
+
+/ {
+       thermal-zones {
+               pmih0108-thermal {
+                       polling-delay-passive = <100>;
+                       thermal-sensors = <&pmih0108_e1_temp_alarm>;
+
+                       trips {
+                               trip0 {
+                                       temperature = <95000>;
+                                       hysteresis = <0>;
+                                       type = "passive";
+                               };
+
+                               trip1 {
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
+                                       type = "hot";
+                               };
+
+                               trip2 {
+                                       temperature = <145000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
+};
+
+&spmi_bus1 {
+       pmih0108_e1: pmic@7 {
+               compatible = "qcom,pmih0108", "qcom,spmi-pmic";
+               reg = <0x7 SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pmih0108_e1_temp_alarm: temp-alarm@a00 {
+                       compatible = "qcom,spmi-temp-alarm";
+                       reg = <0xa00>;
+                       interrupts = <0x7 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
+                       #thermal-sensor-cells = <0>;
+               };
+
+               pmih0108_e1_gpios: gpio@8800 {
+                       compatible = "qcom,pmih0108-gpio", "qcom,spmi-gpio";
+                       reg = <0x8800>;
+                       gpio-controller;
+                       gpio-ranges = <&pmih0108_e1_gpios 0 0 18>;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               pmih0108_e1_eusb2_repeater: phy@fd00 {
+                       compatible = "qcom,pm8550b-eusb2-repeater";
+                       reg = <0xfd00>;
+                       #phy-cells = <0>;
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/qcom/pmr735d-kaanapali.dtsi b/arch/arm64/boot/dts/qcom/pmr735d-kaanapali.dtsi
new file mode 100644 (file)
index 0000000..d0dd5e0
--- /dev/null
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/spmi/spmi.h>
+
+/ {
+       thermal-zones {
+               pmr735d-thermal {
+                       polling-delay-passive = <100>;
+
+                       thermal-sensors = <&pmr735d_e1_temp_alarm>;
+
+                       trips {
+                               trip0 {
+                                       temperature = <95000>;
+                                       hysteresis = <0>;
+                                       type = "passive";
+                               };
+
+                               trip1 {
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
+                                       type = "hot";
+                               };
+
+                               trip2 {
+                                       temperature = <145000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
+};
+
+&spmi_bus1 {
+       pmr735d_e1: pmic@a {
+               compatible = "qcom,pmr735d", "qcom,spmi-pmic";
+               reg = <0xa SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pmr735d_e1_temp_alarm: temp-alarm@a00 {
+                       compatible = "qcom,spmi-temp-alarm";
+                       reg = <0xa00>;
+                       interrupts = <0xa 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
+                       #thermal-sensor-cells = <0>;
+               };
+
+               pmr735d_e1_gpios: gpio@8800 {
+                       compatible = "qcom,pmr735d-gpio", "qcom,spmi-gpio";
+                       reg = <0x8800>;
+                       gpio-controller;
+                       gpio-ranges = <&pmr735d_e1_gpios 0 0 2>;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+};