Commit 89f6e025 authored by Dang Huynh's avatar Dang Huynh Committed by Bjorn Andersson
Browse files

arm64: dts: qcom: Add PM8937 PMIC



The PM8937 features integrated peripherals like ADC, GPIO controller,
MPPs, PON keys and others.

Add the device tree so that any boards with this PMIC can use it.

Reviewed-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: default avatarDang Huynh <danct12@riseup.net>
Signed-off-by: default avatarBarnabás Czémán <barnabas.czeman@mainlining.org>
Link: https://lore.kernel.org/r/20241221-msm8917-v11-1-901a74db4805@mainlining.org


Signed-off-by: default avatarBjorn Andersson <andersson@kernel.org>
parent 4861ba7c
Loading
Loading
Loading
Loading
+150 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2023, Dang Huynh <danct12@riseup.net>
 */

#include <dt-bindings/iio/qcom,spmi-vadc.h>
#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/spmi/spmi.h>

/ {
	thermal-zones {
		pm8937-thermal {
			polling-delay-passive = <0>;
			polling-delay = <0>;
			thermal-sensors = <&pm8937_temp>;

			trips {
				trip0 {
					temperature = <105000>;
					hysteresis = <0>;
					type = "passive";
				};

				trip1 {
					temperature = <125000>;
					hysteresis = <0>;
					type = "hot";
				};

				trip2 {
					temperature = <145000>;
					hysteresis = <0>;
					type = "critical";
				};
			};
		};
	};
};

&spmi_bus {
	pmic@0 {
		compatible = "qcom,pm8937", "qcom,spmi-pmic";
		reg = <0x0 SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		pon@800 {
			compatible = "qcom,pm8916-pon";
			reg = <0x800>;
			mode-bootloader = <0x2>;
			mode-recovery = <0x1>;

			pm8937_pwrkey: pwrkey {
				compatible = "qcom,pm8941-pwrkey";
				interrupts = <0 0x8 0 IRQ_TYPE_EDGE_BOTH>;
				debounce = <15625>;
				bias-pull-up;
				linux,code = <KEY_POWER>;
			};

			pm8937_resin: resin {
				compatible = "qcom,pm8941-resin";
				interrupts = <0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
				debounce = <15625>;
				bias-pull-up;
				status = "disabled";
			};
		};

		pm8937_gpios: gpio@c000 {
			compatible = "qcom,pm8937-gpio", "qcom,spmi-gpio";
			reg = <0xc000>;
			gpio-controller;
			gpio-ranges = <&pm8937_gpios 0 0 8>;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};

		pm8937_mpps: mpps@a000 {
			compatible = "qcom,pm8937-mpp", "qcom,spmi-mpp";
			reg = <0xa000>;
			gpio-controller;
			gpio-ranges = <&pm8937_mpps 0 0 4>;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};

		pm8937_temp: temp-alarm@2400 {
			compatible = "qcom,spmi-temp-alarm";
			reg = <0x2400>;
			interrupts = <0 0x24 0 IRQ_TYPE_EDGE_RISING>;
			io-channels = <&pm8937_vadc VADC_DIE_TEMP>;
			io-channel-names = "thermal";
			#thermal-sensor-cells = <0>;
		};

		pm8937_vadc: adc@3100 {
			compatible = "qcom,spmi-vadc";
			reg = <0x3100>;
			interrupts = <0 0x31 0 IRQ_TYPE_EDGE_RISING>;
			#address-cells = <1>;
			#size-cells = <0>;
			#io-channel-cells = <1>;

			channel@8 {
				reg = <VADC_DIE_TEMP>;
			};

			channel@9 {
				reg = <VADC_REF_625MV>;
			};

			channel@a {
				reg = <VADC_REF_1250MV>;
			};

			channel@c {
				reg = <VADC_SPARE1>;
			};

			channel@e {
				reg = <VADC_GND_REF>;
			};

			channel@f {
				reg = <VADC_VDD_VADC>;
			};
		};

		rtc@6000 {
			compatible = "qcom,pm8941-rtc";
			reg = <0x6000>, <0x6100>;
			reg-names = "rtc", "alarm";
			interrupts = <0x0 0x61 0x1 IRQ_TYPE_EDGE_RISING>;
		};
	};

	pmic@1 {
		compatible = "qcom,pm8937", "qcom,spmi-pmic";
		reg = <0x1 SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		pm8937_spmi_regulators: regulators {
			compatible = "qcom,pm8937-regulators";
		};
	};
};