// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (C) 2022 Luca Weiss <luca.weiss@fairphone.com>
 */

#include <dt-bindings/iio/qcom,spmi-vadc.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/spmi/spmi.h>

/ {
	thermal-zones {
		pm7250b-thermal {
			polling-delay-passive = <100>;
			polling-delay = <0>;

			thermal-sensors = <&pm7250b_temp>;

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

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

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

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

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

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

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

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

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

			channel@7 {
				reg = <ADC5_USB_IN_I>;
				qcom,pre-scaling = <1 1>;
				label = "usb_in_i_uv";
			};

			channel@8 {
				reg = <ADC5_USB_IN_V_16>;
				qcom,pre-scaling = <1 16>;
				label = "usb_in_v_div_16";
			};

			channel@9 {
				reg = <ADC5_CHG_TEMP>;
				qcom,pre-scaling = <1 1>;
				label = "chg_temp";
			};

			channel@e {
				reg = <ADC5_AMUX_THM2>;
				qcom,hw-settle-time = <200>;
				qcom,pre-scaling = <1 1>;
				label = "smb1390_therm";
			};

			channel@1e {
				reg = <ADC5_MID_CHG_DIV6>;
				qcom,pre-scaling = <1 6>;
				label = "chg_mid";
			};

			channel@4b {
				reg = <ADC5_BAT_ID_100K_PU>;
				qcom,hw-settle-time = <200>;
				qcom,pre-scaling = <1 1>;
				qcom,ratiometric;
				label = "bat_id";
			};

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

			channel@84 {
				reg = <ADC5_VBAT_SNS>;
				qcom,pre-scaling = <1 3>;
				label = "vbat_sns";
			};

			channel@99 {
				reg = <ADC5_SBUx>;
				qcom,pre-scaling = <1 3>;
				label = "chg_sbux";
			};
		};

		pm7250b_adc_tm: adc-tm@3500 {
			compatible = "qcom,spmi-adc-tm5";
			reg = <0x3500>;
			interrupts = <PM7250B_SID 0x35 0x0 IRQ_TYPE_EDGE_RISING>;
			#thermal-sensor-cells = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

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

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