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

// SPDX-License-Identifier: GPL-2.0

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

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

		pm8058_led48: led@48 {
			compatible = "qcom,pm8058-keypad-led";
			reg = <0x48>;
			status = "disabled";
		};

		vibrator@4a {
			compatible = "qcom,pm8058-vib";
			reg = <0x4a>;
		};

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

		pm8058_led131: led@131 {
			compatible = "qcom,pm8058-led";
			reg = <0x131>;
			status = "disabled";
		};

		pm8058_led132: led@132 {
			compatible = "qcom,pm8058-led";
			reg = <0x132>;
			status = "disabled";
		};

		pm8058_led133: led@133 {
			compatible = "qcom,pm8058-led";
			reg = <0x133>;
			status = "disabled";
		};

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

		pm8058_gpio: gpio@150 {
			compatible = "qcom,pm8058-gpio",
				     "qcom,ssbi-gpio";
			reg = <0x150>;
			interrupt-controller;
			#interrupt-cells = <2>;
			gpio-controller;
			gpio-ranges = <&pm8058_gpio 0 0 44>;
			#gpio-cells = <2>;
		};

		pm8058_xoadc: xoadc@197 {
			compatible = "qcom,pm8058-adc";
			reg = <0x197>;
			interrupts-extended = <&pm8058 76 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>;
			};

			ichg: adc-channel@3 {
				reg = <0x00 0x03>;
			};

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

			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>;
			};

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

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

		rtc@1e8 {
			compatible = "qcom,pm8058-rtc";
			reg = <0x1e8>;
			interrupts-extended = <&pm8058 39 IRQ_TYPE_EDGE_RISING>;
			allow-set-time;
		};
	};
};

/ {
	/*
	 * 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 = <&pm8058_xoadc 0x00 0x01>, /* Battery */
			      <&pm8058_xoadc 0x00 0x02>, /* DC in (charger) */
			      <&pm8058_xoadc 0x00 0x04>, /* VPH the main system voltage */
			      <&pm8058_xoadc 0x00 0x0b>, /* Die temperature */
			      <&pm8058_xoadc 0x00 0x0c>, /* Reference voltage 1.25V */
			      <&pm8058_xoadc 0x00 0x0d>, /* Reference voltage 0.625V */
			      <&pm8058_xoadc 0x00 0x0e>; /* Reference voltage 0.325V */
	};
};