// SPDX-License-Identifier: BSD-3-Clause
#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>

/ {
	thermal-zones {
		pm8226-thermal {
			polling-delay-passive = <100>;
			polling-delay = <0>;
			thermal-sensors = <&pm8226_temp>;

			trips {
				trip0 {
					temperature = <105000>;
					hysteresis = <2000>;
					type = "passive";
				};

				trip1 {
					temperature = <125000>;
					hysteresis = <2000>;
					type = "hot";
				};

				crit {
					temperature = <145000>;
					hysteresis = <2000>;
					type = "critical";
				};
			};
		};
	};
};

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

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

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

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

		smbb: charger@1000 {
			compatible = "qcom,pm8226-charger";
			reg = <0x1000>;
			interrupts = <0x0 0x10 7 IRQ_TYPE_EDGE_BOTH>,
				     <0x0 0x10 5 IRQ_TYPE_EDGE_BOTH>,
				     <0x0 0x10 4 IRQ_TYPE_EDGE_BOTH>,
				     <0x0 0x12 1 IRQ_TYPE_EDGE_BOTH>,
				     <0x0 0x12 0 IRQ_TYPE_EDGE_BOTH>,
				     <0x0 0x13 2 IRQ_TYPE_EDGE_BOTH>,
				     <0x0 0x13 1 IRQ_TYPE_EDGE_BOTH>,
				     <0x0 0x14 1 IRQ_TYPE_EDGE_BOTH>;
			interrupt-names = "chg-done",
					  "chg-fast",
					  "chg-trkl",
					  "bat-temp-ok",
					  "bat-present",
					  "chg-gone",
					  "usb-valid",
					  "dc-valid";

			chg_otg: otg-vbus { };
		};

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

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

			channel@7 {
				reg = <VADC_VSYS>;
				qcom,pre-scaling = <1 3>;
				label = "vph_pwr";
			};
			channel@8 {
				reg = <VADC_DIE_TEMP>;
				label = "die_temp";
			};
			channel@9 {
				reg = <VADC_REF_625MV>;
				label = "ref_625mv";
			};
			channel@a {
				reg = <VADC_REF_1250MV>;
				label = "ref_1250mv";
			};
			channel@e {
				reg = <VADC_GND_REF>;
			};
			channel@f {
				reg = <VADC_VDD_VADC>;
			};
		};

		pm8226_iadc: adc@3600 {
			compatible = "qcom,pm8226-iadc", "qcom,spmi-iadc";
			reg = <0x3600>;
			interrupts = <0x0 0x36 0x0 IRQ_TYPE_EDGE_RISING>;
		};

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

		pm8226_mpps: mpps@a000 {
			compatible = "qcom,pm8226-mpp", "qcom,spmi-mpp";
			reg = <0xa000>;
			gpio-controller;
			#gpio-cells = <2>;
			gpio-ranges = <&pm8226_mpps 0 0 8>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};

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

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

		pm8226_spmi_regulators: regulators {
			compatible = "qcom,pm8226-regulators";
		};

		pm8226_vib: vibrator@c000 {
			compatible = "qcom,pm8916-vib";
			reg = <0xc000>;
			status = "disabled";
		};
	};
};
