// 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/input/linux-event-codes.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/spmi/spmi.h>
#include <dt-bindings/thermal/thermal.h>

/ {
	thermal-zones {
		pm6150_thermal: pm6150-thermal {
			polling-delay-passive = <100>;
			polling-delay = <0>;
			thermal-sensors = <&pm6150_temp>;

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

				pm6150_crit: crit {
					temperature = <115000>;
					hysteresis = <0>;
					type = "critical";
				};
			};
		};
	};
};

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

		pm6150_pon: pon@800 {
			compatible = "qcom,pm8998-pon";
			reg = <0x800>;
			mode-bootloader = <0x2>;
			mode-recovery = <0x1>;

			pm6150_pwrkey: pwrkey {
				compatible = "qcom,pm8941-pwrkey";
				interrupts = <0x0 0x8 0 IRQ_TYPE_EDGE_BOTH>;
				debounce = <15625>;
				bias-pull-up;
				linux,code = <KEY_POWER>;
			};

			pm6150_resin: resin {
				compatible = "qcom,pm8941-resin";
				interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
				debounce = <15625>;
				bias-pull-up;
				status = "disabled";
			};
		};

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

		pm6150_typec: typec@1500 {
			compatible = "qcom,pm6150-typec",
				     "qcom,pm8150b-typec";
			reg = <0x1500>, <0x1700>;
			interrupts = <0x0 0x15 0x00 IRQ_TYPE_EDGE_RISING>,
				     <0x0 0x15 0x01 IRQ_TYPE_EDGE_BOTH>,
				     <0x0 0x15 0x02 IRQ_TYPE_EDGE_RISING>,
				     <0x0 0x15 0x03 IRQ_TYPE_EDGE_BOTH>,
				     <0x0 0x15 0x04 IRQ_TYPE_EDGE_RISING>,
				     <0x0 0x15 0x05 IRQ_TYPE_EDGE_RISING>,
				     <0x0 0x15 0x06 IRQ_TYPE_EDGE_BOTH>,
				     <0x0 0x15 0x07 IRQ_TYPE_EDGE_RISING>,
				     <0x0 0x17 0x00 IRQ_TYPE_EDGE_RISING>,
				     <0x0 0x17 0x01 IRQ_TYPE_EDGE_RISING>,
				     <0x0 0x17 0x02 IRQ_TYPE_EDGE_RISING>,
				     <0x0 0x17 0x03 IRQ_TYPE_EDGE_RISING>,
				     <0x0 0x17 0x04 IRQ_TYPE_EDGE_RISING>,
				     <0x0 0x17 0x05 IRQ_TYPE_EDGE_RISING>,
				     <0x0 0x17 0x06 IRQ_TYPE_EDGE_RISING>,
				     <0x0 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";
			status = "disabled";
		};

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

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

			channel@6 {
				reg = <ADC5_DIE_TEMP>;
				label = "die_temp";
			};
		};

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

		pm6150_rtc: rtc@6000 {
			compatible = "qcom,pm8941-rtc";
			reg = <0x6000>, <0x6100>;
			reg-names = "rtc", "alarm";
			interrupts = <0x0 0x61 0x1 IRQ_TYPE_EDGE_RISING>;
			status = "disabled";
		};

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

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