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

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

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

			thermal-sensors = <&pm8150b_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@2 {
		compatible = "qcom,pm8150b", "qcom,spmi-pmic";
		reg = <0x2 SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		pon@800 {
			compatible = "qcom,pm8916-pon";
			reg = <0x0800>;

			status = "disabled";
		};

		pm8150b_vbus: usb-vbus-regulator@1100 {
			compatible = "qcom,pm8150b-vbus-reg";
			status = "disabled";
			reg = <0x1100>;
		};

		pm8150b_typec: typec@1500 {
			compatible = "qcom,pm8150b-typec";
			status = "disabled";
			reg = <0x1500>,
			      <0x1700>;
			interrupts = <0x2 0x15 0x00 IRQ_TYPE_EDGE_RISING>,
				     <0x2 0x15 0x01 IRQ_TYPE_EDGE_BOTH>,
				     <0x2 0x15 0x02 IRQ_TYPE_EDGE_RISING>,
				     <0x2 0x15 0x03 IRQ_TYPE_EDGE_BOTH>,
				     <0x2 0x15 0x04 IRQ_TYPE_EDGE_RISING>,
				     <0x2 0x15 0x05 IRQ_TYPE_EDGE_RISING>,
				     <0x2 0x15 0x06 IRQ_TYPE_EDGE_BOTH>,
				     <0x2 0x15 0x07 IRQ_TYPE_EDGE_RISING>,
				     <0x2 0x17 0x00 IRQ_TYPE_EDGE_RISING>,
				     <0x2 0x17 0x01 IRQ_TYPE_EDGE_RISING>,
				     <0x2 0x17 0x02 IRQ_TYPE_EDGE_RISING>,
				     <0x2 0x17 0x03 IRQ_TYPE_EDGE_RISING>,
				     <0x2 0x17 0x04 IRQ_TYPE_EDGE_RISING>,
				     <0x2 0x17 0x05 IRQ_TYPE_EDGE_RISING>,
				     <0x2 0x17 0x06 IRQ_TYPE_EDGE_RISING>,
				     <0x2 0x17 0x07 IRQ_TYPE_EDGE_RISING>;
			interrupt-names = "or-rid-detect-change",
					  "vpd-detect",
					  "cc-state-change",
					  "vconn-oc",
					  "vbus-change",
					  "attach-detach",
					  "legacy-cable-detect",
					  "try-snk-src-detect",
					  "sig-tx",
					  "sig-rx",
					  "msg-tx",
					  "msg-rx",
					  "msg-tx-failed",
					  "msg-tx-discarded",
					  "msg-rx-discarded",
					  "fr-swap";
			vdd-vbus-supply = <&pm8150b_vbus>;
		};

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

		pm8150b_adc: adc@3100 {
			compatible = "qcom,spmi-adc5";
			reg = <0x3100>;
			#address-cells = <1>;
			#size-cells = <0>;
			#io-channel-cells = <1>;
			interrupts = <0x2 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@6 {
				reg = <ADC5_DIE_TEMP>;
				qcom,pre-scaling = <1 1>;
				label = "die_temp";
			};

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

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

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

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

		pm8150b_lpg: pwm {
			compatible = "qcom,pm8150b-lpg";

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

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