linux/arch/arm/boot/dts/qcom/pm8921.dtsi

// SPDX-License-Identifier: GPL-2.0

&ssbi {
	pm8921: pmic {
		compatible = "qcom,pm8921";
		#interrupt-cells = <2>;
		interrupt-controller;
		#address-cells = <1>;
		#size-cells = <0>;

		pwrkey@1c {
			compatible = "qcom,pm8921-pwrkey";
			reg = <0x1c>;
			interrupts-extended = <&pm8921 50 IRQ_TYPE_EDGE_RISING>,
					      <&pm8921 51 IRQ_TYPE_EDGE_RISING>;
			debounce = <15625>;
			pull-up;
		};

		pm8921_mpps: mpps@50 {
			compatible = "qcom,pm8921-mpp",
				     "qcom,ssbi-mpp";
			reg = <0x50>;
			gpio-controller;
			#gpio-cells = <2>;
			gpio-ranges = <&pm8921_mpps 0 0 12>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};

		rtc@11d {
			compatible = "qcom,pm8921-rtc";
			reg = <0x11d>;
			interrupts-extended = <&pm8921 39 IRQ_TYPE_EDGE_RISING>;
			allow-set-time;
		};

		pm8921_keypad: keypad@148 {
			compatible = "qcom,pm8921-keypad";
			reg = <0x148>;
			interrupts-extended = <&pm8921 74 IRQ_TYPE_EDGE_RISING>,
					      <&pm8921 75 IRQ_TYPE_EDGE_RISING>;
			debounce = <15>;
			scan-delay = <32>;
			row-hold = <91500>;
			status = "disabled";
		};

		pm8921_gpio: gpio@150 {

			compatible = "qcom,pm8921-gpio",
				     "qcom,ssbi-gpio";
			reg = <0x150>;
			interrupt-controller;
			#interrupt-cells = <2>;
			gpio-controller;
			gpio-ranges = <&pm8921_gpio 0 0 44>;
			#gpio-cells = <2>;

		};

		pm8921_xoadc: xoadc@197 {
			compatible = "qcom,pm8921-adc";
			reg = <0x197>;
			interrupts-extended = <&pm8921 78 IRQ_TYPE_EDGE_RISING>;
			#address-cells = <2>;
			#size-cells = <0>;
			#io-channel-cells = <2>;

			vcoin: adc-channel@0 {
				reg = <0x00 0x00>;
			};

			vbat: adc-channel@1 {
				reg = <0x00 0x01>;
			};

			dcin: adc-channel@2 {
				reg = <0x00 0x02>;
			};

			vph_pwr: adc-channel@4 {
				reg = <0x00 0x04>;
			};

			batt_therm: adc-channel@8 {
				reg = <0x00 0x08>;
			};

			batt_id: adc-channel@9 {
				reg = <0x00 0x09>;
			};

			usb_vbus: adc-channel@a {
				reg = <0x00 0x0a>;
			};

			die_temp: adc-channel@b {
				reg = <0x00 0x0b>;
			};

			ref_625mv: adc-channel@c {
				reg = <0x00 0x0c>;
			};

			ref_1250mv: adc-channel@d {
				reg = <0x00 0x0d>;
			};

			chg_temp: adc-channel@e {
				reg = <0x00 0x0e>;
			};

			ref_muxoff: adc-channel@f {
				reg = <0x00 0x0f>;
			};
		};
	};
};

/ {
	/*
	 * These channels from the ADC are simply hardware monitors.
	 * That is why the ADC is referred to as "HKADC" - HouseKeeping
	 * ADC.
	 */
	iio-hwmon {
		compatible = "iio-hwmon";
		io-channels = <&pm8921_xoadc 0x00 0x01>, /* Battery */
			      <&pm8921_xoadc 0x00 0x02>, /* DC in (charger) */
			      <&pm8921_xoadc 0x00 0x04>, /* VPH the main system voltage */
			      <&pm8921_xoadc 0x00 0x0b>, /* Die temperature */
			      <&pm8921_xoadc 0x00 0x0c>, /* Reference voltage 1.25V */
			      <&pm8921_xoadc 0x00 0x0d>, /* Reference voltage 0.625V */
			      <&pm8921_xoadc 0x00 0x0e>; /* Charger temperature */
	};
};