// SPDX-License-Identifier: GPL-2.0
// Copyright (c) 2018, Linaro Limited

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

/ {
	thermal-zones {
		pms405-thermal {
			polling-delay-passive = <250>;
			polling-delay = <1000>;

			thermal-sensors = <&pms405_temp>;

			trips {
				pms405_alert0: pms405-alert0 {
					temperature = <105000>;
					hysteresis = <2000>;
					type = "passive";
				};
				pms405_crit: pms405-crit {
					temperature = <125000>;
					hysteresis = <2000>;
					type = "critical";
				};
			};
		};
	};
};

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

		pms405_gpios: gpio@c000 {
			compatible = "qcom,pms405-gpio";
			reg = <0xc000>;
			gpio-controller;
			#gpio-cells = <2>;
			interrupts = <0 0xc0 0 IRQ_TYPE_NONE>,
				<0 0xc1 0 IRQ_TYPE_NONE>,
				<0 0xc2 0 IRQ_TYPE_NONE>,
				<0 0xc3 0 IRQ_TYPE_NONE>,
				<0 0xc4 0 IRQ_TYPE_NONE>,
				<0 0xc5 0 IRQ_TYPE_NONE>,
				<0 0xc6 0 IRQ_TYPE_NONE>,
				<0 0xc7 0 IRQ_TYPE_NONE>,
				<0 0xc8 0 IRQ_TYPE_NONE>,
				<0 0xc9 0 IRQ_TYPE_NONE>,
				<0 0xca 0 IRQ_TYPE_NONE>,
				<0 0xcb 0 IRQ_TYPE_NONE>;
		};

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

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

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

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

			ref_gnd@0 {
				reg = <ADC5_REF_GND>;
				qcom,pre-scaling = <1 1>;
			};

			vref_1p25@1 {
				reg = <ADC5_1P25VREF>;
				qcom,pre-scaling = <1 1>;
			};

			pon_1: vph_pwr@131 {
				reg = <ADC5_VPH_PWR>;
				qcom,pre-scaling = <1 3>;
			};

			die_temp@6 {
				reg = <ADC5_DIE_TEMP>;
				qcom,pre-scaling = <1 1>;
			};

			pa_therm1: thermistor1@77 {
				reg = <ADC5_AMUX_THM1_100K_PU>;
				qcom,ratiometric;
				qcom,hw-settle-time = <200>;
				qcom,pre-scaling = <1 1>;
			};

			pa_therm3: thermistor3@79 {
				reg = <ADC5_AMUX_THM3_100K_PU>;
				qcom,ratiometric;
				qcom,hw-settle-time = <200>;
				qcom,pre-scaling = <1 1>;
			};

			xo_therm: xo_temp@76 {
				reg = <ADC5_XO_THERM_100K_PU>;
				qcom,ratiometric;
				qcom,hw-settle-time = <200>;
				qcom,pre-scaling = <1 1>;
			};
		};

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

	pms405_1: pms405@1 {
		compatible = "qcom,spmi-pmic";
		reg = <0x1 SPMI_USID>;

		pms405_spmi_regulators: regulators {
			compatible = "qcom,pms405-regulators";
		};
	};
};
