// SPDX-License-Identifier: GPL-2.0
/*
 * Google GS201 felix-specific thermal device tree source
 *
 * Copyright (c) 2021 Google, LLC
 *		https://www.google.com
 */

#include <dt-bindings/thermal/thermal.h>

&acpm_mfd_bus1 {
	s2mpg13mfd@2f {
		gs201_tm1: gs201_spmic_tm1 {
			compatible = "google,s2mpg13-spmic-thermal";
			#thermal-sensor-cells = <1>;
			adc_chan_en = /bits/ 8 <0xFF>;
		};
	};
};

/* Thermal Zones */
&thermal_zones {
	neutral_therm {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&gs201_tm1 0>;
		trips {
			trip_config0: trip-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};
		};
	};
	quiet_therm {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&gs201_tm1 1>;
		trips {
			trip_config1: trip-config1 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};
		};
	};
	skin_therm {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&gs201_tm1 2>;
		trips {
			trip_config2: trip-config2 {
				temperature = <55500>;
				hysteresis = <1000>;
				type = "passive";
			};
			backup_shutdown_sw: backup-shutdown-sw {
				temperature = <56500>;
				hysteresis = <1000>;
				type = "critical";
			};
			backup_shutdown_hw: backup-shutdown-hw {
				temperature = <58500>;
				hysteresis = <1000>;
				type = "hot";
			};
		};
	};
	usb_pwr_therm {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&gs201_tm1 3>;
		trips {
			trip_config3: trip-config3 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};
		};
	};
	usb_pwr_therm2 {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&gs201_tm1 4>;
		trips {
			trip_config4: trip-config4 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};
		};
	};
	inner_disp_therm {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&gs201_tm1 5>;
		trips {
			trip_config5: trip-config5 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};
		};
	};
	outer_disp_therm {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&gs201_tm1 6>;
		trips {
			trip_config6: trip-config6 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};
		};
	};
	gnss_tcxo_therm {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&gs201_tm1 7>;
		trips {
			trip_config7: trip-config7 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};
		};
	};
};
