// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2022, Linaro Limited
 */

#include <dt-bindings/iio/qcom,spmi-adc7-pm8350.h>
#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
#include <dt-bindings/iio/qcom,spmi-adc7-pmr735a.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/spmi/spmi.h>

/ {
	thermal-zones {
		pm8280_1_thermal: pm8280-1-thermal {
			polling-delay-passive = <100>;

			thermal-sensors = <&pm8280_1_temp_alarm>;

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

				trip1 {
					temperature = <115000>;
					hysteresis = <0>;
					type = "critical";
				};
			};
		};

		pm8280_2_thermal: pm8280-2-thermal {
			polling-delay-passive = <100>;

			thermal-sensors = <&pm8280_2_temp_alarm>;

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

				trip1 {
					temperature = <115000>;
					hysteresis = <0>;
					type = "critical";
				};
			};
		};
	};
};

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

		pmk8280_pon: pon@1300 {
			compatible = "qcom,pmk8350-pon";
			reg = <0x1300>, <0x800>;
			reg-names = "hlos", "pbs";

			pmk8280_pon_pwrkey: pwrkey {
				compatible = "qcom,pmk8350-pwrkey";
				interrupts-extended = <&spmi_bus 0x0 0x13 0x7 IRQ_TYPE_EDGE_BOTH>;
				linux,code = <KEY_POWER>;
				status = "disabled";
			};

			pmk8280_pon_resin: resin {
				compatible = "qcom,pmk8350-resin";
				interrupts-extended = <&spmi_bus 0x0 0x13 0x6 IRQ_TYPE_EDGE_BOTH>;
				status = "disabled";
			};
		};

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

			channel@3 {
				reg = <PMK8350_ADC7_DIE_TEMP>;
				qcom,pre-scaling = <1 1>;
				label = "pmk8350_die_temp";
			};

			channel@44 {
				reg = <PMK8350_ADC7_AMUX_THM1_100K_PU>;
				qcom,hw-settle-time = <200>;
				qcom,ratiometric;
				label = "pmk8350_xo_therm";
			};

			channel@103 {
				reg = <PM8350_ADC7_DIE_TEMP(1)>;
				qcom,pre-scaling = <1 1>;
				label = "pmc8280_1_die_temp";
			};

			channel@303 {
				reg = <PM8350_ADC7_DIE_TEMP(3)>;
				qcom,pre-scaling = <1 1>;
				label = "pmc8280_2_die_temp";
			};

			channel@403 {
				reg = <PMR735A_ADC7_DIE_TEMP>;
				qcom,pre-scaling = <1 1>;
				label = "pmr735a_die_temp";
			};
		};

		pmk8280_adc_tm: adc-tm@3400 {
			compatible = "qcom,spmi-adc-tm5-gen2";
			reg = <0x3400>;
			interrupts-extended = <&spmi_bus 0x0 0x34 0x0 IRQ_TYPE_EDGE_RISING>;
			#address-cells = <1>;
			#size-cells = <0>;
			#thermal-sensor-cells = <1>;
			status = "disabled";
		};

		pmk8280_rtc: rtc@6100 {
			compatible = "qcom,pmk8350-rtc";
			reg = <0x6100>, <0x6200>;
			reg-names = "rtc", "alarm";
			interrupts-extended = <&spmi_bus 0x0 0x62 0x1 IRQ_TYPE_EDGE_RISING>;
			wakeup-source;
			status = "disabled";
		};

		pmk8280_sdam_6: nvram@8500 {
			compatible = "qcom,spmi-sdam";
			reg = <0x8500>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0 0x8500 0x100>;
			status = "disabled";
		};
	};

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

		pm8280_1_temp_alarm: temp-alarm@a00 {
			compatible = "qcom,spmi-temp-alarm";
			reg = <0xa00>;
			interrupts-extended = <&spmi_bus 0x1 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
			io-channels = <&pmk8280_vadc PM8350_ADC7_DIE_TEMP(1)>;
			io-channel-names = "thermal";
			#thermal-sensor-cells = <0>;
		};

		pmc8280_1_gpios: gpio@8800 {
			compatible = "qcom,pm8350-gpio", "qcom,spmi-gpio";
			reg = <0x8800>;
			gpio-controller;
			gpio-ranges = <&pmc8280_1_gpios 0 0 10>;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};
	};

	pmc8280c: pmic@2 {
		compatible = "qcom,pm8350c", "qcom,spmi-pmic";
		reg = <0x2 SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		pmc8280c_gpios: gpio@8800 {
			compatible = "qcom,pm8350c-gpio", "qcom,spmi-gpio";
			reg = <0x8800>;
			gpio-controller;
			gpio-ranges = <&pmc8280c_gpios 0 0 9>;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};

		pmc8280c_lpg: pwm {
			compatible = "qcom,pm8350c-pwm";

			#address-cells = <1>;
			#size-cells = <0>;

			#pwm-cells = <2>;

			status = "disabled";
		};
	};

	pmc8280_2: pmic@3 {
		compatible = "qcom,pm8350", "qcom,spmi-pmic";
		reg = <0x3 SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		pm8280_2_temp_alarm: temp-alarm@a00 {
			compatible = "qcom,spmi-temp-alarm";
			reg = <0xa00>;
			interrupts-extended = <&spmi_bus 0x2 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
			io-channels = <&pmk8280_vadc PM8350_ADC7_DIE_TEMP(3)>;
			io-channel-names = "thermal";
			#thermal-sensor-cells = <0>;
		};

		pmc8280_2_gpios: gpio@8800 {
			compatible = "qcom,pm8350-gpio", "qcom,spmi-gpio";
			reg = <0x8800>;
			gpio-controller;
			gpio-ranges = <&pmc8280_2_gpios 0 0 10>;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};
	};

	pmr735a: pmic@4 {
		compatible = "qcom,pmr735a", "qcom,spmi-pmic";
		reg = <0x4 SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		pmr735a_gpios: gpio@8800 {
			compatible = "qcom,pmr735a-gpio", "qcom,spmi-gpio";
			reg = <0x8800>;
			gpio-controller;
			gpio-ranges = <&pmr735a_gpios 0 0 4>;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};
	};
};
