// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2019, The Linux Foundation. All rights reserved.
 */

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

/ {
	thermal-zones {
		pm6150l-thermal {
			thermal-sensors = <&pm6150l_temp>;

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

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

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

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

		pm6150l_temp: temp-alarm@2400 {
			compatible = "qcom,spmi-temp-alarm";
			reg = <0x2400>;
			interrupts = <0x4 0x24 0x0 IRQ_TYPE_EDGE_BOTH>;
			#thermal-sensor-cells = <0>;
		};

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

			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@6 {
				reg = <ADC5_DIE_TEMP>;
				qcom,pre-scaling = <1 1>;
				label = "die_temp";
			};

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

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

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

	pm6150l_lsid5: pmic@5 {
		compatible = "qcom,pm6150l", "qcom,spmi-pmic";
		reg = <0x5 SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		pm6150l_flash: led-controller@d300 {
			compatible = "qcom,pm6150l-flash-led", "qcom,spmi-flash-led";
			reg = <0xd300>;
			status = "disabled";
		};

		pm6150l_lpg: pwm {
			compatible = "qcom,pm6150l-lpg", "qcom,pm8150l-lpg";

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

			status = "disabled";
		};

		pm6150l_wled: leds@d800 {
			compatible = "qcom,pm6150l-wled";
			reg = <0xd800>, <0xd900>;
			interrupts = <0x5 0xd8 0x1 IRQ_TYPE_EDGE_RISING>,
				     <0x5 0xd8 0x2 IRQ_TYPE_EDGE_RISING>;
			interrupt-names = "ovp", "short";
			label = "backlight";

			status = "disabled";
		};
	};
};
