// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2020, Konrad Dybcio
 */

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

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

			thermal-sensors = <&pm660_temp>;

			trips {
				pm660_alert0: pm660-alert0 {
					temperature = <95000>;
					hysteresis = <2000>;
					type = "passive";
				};
				pm660_crit: pm660-crit {
					temperature = <125000>;
					hysteresis = <2000>;
					type = "critical";
				};
			};
		};
	};
};

&spmi_bus {

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

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

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

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

				status = "disabled";
			};

			pon_resin: resin {
				compatible = "qcom,pm8941-resin";
				interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
				debounce = <15625>;
				bias-pull-up;

				status = "disabled";
			};
		};

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

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

			channel@0 {
				reg = <ADC5_REF_GND>;
				qcom,decimation = <1024>;
				qcom,pre-scaling = <1 1>;
				label = "ref_gnd";
			};

			channel@1 {
				reg = <ADC5_1P25VREF>;
				qcom,decimation = <1024>;
				qcom,pre-scaling = <1 1>;
				label = "vref_1p25";
			};

			channel@6 {
				reg = <ADC5_DIE_TEMP>;
				qcom,decimation = <1024>;
				qcom,pre-scaling = <1 1>;
				label = "die_temp";
			};

			channel@4c {
				reg = <ADC5_XO_THERM_100K_PU>;
				qcom,pre-scaling = <1 1>;
				qcom,decimation = <1024>;
				qcom,hw-settle-time = <200>;
				qcom,ratiometric;
				label = "xo_therm";
			};

			channel@4d {
				reg = <ADC5_AMUX_THM1_100K_PU>;
				qcom,pre-scaling = <1 1>;
				qcom,decimation = <1024>;
				qcom,hw-settle-time = <200>;
				qcom,ratiometric;
				label = "msm_therm";
			};

			channel@4e {
				reg = <ADC5_AMUX_THM2_100K_PU>;
				qcom,pre-scaling = <1 1>;
				qcom,decimation = <1024>;
				qcom,hw-settle-time = <200>;
				qcom,ratiometric;
				label = "emmc_therm";
			};

			channel@4f {
				reg = <ADC5_AMUX_THM3_100K_PU>;
				qcom,pre-scaling = <1 1>;
				qcom,decimation = <1024>;
				qcom,hw-settle-time = <200>;
				qcom,ratiometric;
				label = "pa_therm0";
			};

			channel@50 {
				reg = <ADC5_AMUX_THM4_100K_PU>;
				qcom,pre-scaling = <1 1>;
				qcom,decimation = <1024>;
				qcom,hw-settle-time = <200>;
				qcom,ratiometric;
				label = "pa_therm1";
			};

			channel@51 {
				reg = <ADC5_AMUX_THM5_100K_PU>;
				qcom,pre-scaling = <1 1>;
				qcom,decimation = <1024>;
				qcom,hw-settle-time = <200>;
				qcom,ratiometric;
				label = "quiet_therm";
			};

			channel@83 {
				reg = <ADC5_VPH_PWR>;
				qcom,decimation = <1024>;
				qcom,pre-scaling = <1 3>;
				label = "vph_pwr";
			};

			channel@85 {
				reg = <ADC5_VCOIN>;
				qcom,decimation = <1024>;
				qcom,pre-scaling = <1 3>;
				label = "vcoin";
			};
		};

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

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

		pm660_spmi_regulators: regulators {
			compatible = "qcom,pm660-regulators";
		};
	};
};
