// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2024, Linaro Limited
 */

#include <dt-bindings/input/input.h>
#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/spmi/spmi.h>

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

			thermal-sensors = <&pm8550_temp_alarm>;

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

				trip1 {
					temperature = <115000>;
					hysteresis = <0>;
					type = "hot";
				};
			};
		};

		pm8550ve-2-thermal {
			polling-delay-passive = <100>;

			thermal-sensors = <&pm8550ve_2_temp_alarm>;

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

				trip1 {
					temperature = <115000>;
					hysteresis = <0>;
					type = "hot";
				};
			};
		};

		pmc8380-3-thermal {
			polling-delay-passive = <100>;

			thermal-sensors = <&pmc8380_3_temp_alarm>;

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

				trip1 {
					temperature = <115000>;
					hysteresis = <0>;
					type = "hot";
				};
			};
		};

		pmc8380-4-thermal {
			polling-delay-passive = <100>;

			thermal-sensors = <&pmc8380_4_temp_alarm>;

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

				trip1 {
					temperature = <115000>;
					hysteresis = <0>;
					type = "hot";
				};
			};
		};

		pmc8380-5-thermal {
			polling-delay-passive = <100>;

			thermal-sensors = <&pmc8380_5_temp_alarm>;

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

				trip1 {
					temperature = <115000>;
					hysteresis = <0>;
					type = "hot";
				};
			};
		};

		pmc8380-6-thermal {
			polling-delay-passive = <100>;

			thermal-sensors = <&pmc8380_6_temp_alarm>;

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

				trip1 {
					temperature = <115000>;
					hysteresis = <0>;
					type = "hot";
				};
			};
		};

		pm8550ve-8-thermal {
			polling-delay-passive = <100>;

			thermal-sensors = <&pm8550ve_8_temp_alarm>;

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

				trip1 {
					temperature = <115000>;
					hysteresis = <0>;
					type = "hot";
				};
			};
		};

		pm8550ve-9-thermal {
			polling-delay-passive = <100>;

			thermal-sensors = <&pm8550ve_9_temp_alarm>;

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

				trip1 {
					temperature = <115000>;
					hysteresis = <0>;
					type = "hot";
				};
			};
		};

		pm8010-thermal {
			polling-delay-passive = <100>;

			thermal-sensors = <&pm8010_temp_alarm>;

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

				trip1 {
					temperature = <115000>;
					hysteresis = <0>;
					type = "hot";
				};
			};
		};
	};
};

&spmi_bus0 {
	/* PMK8380 */
	pmk8550: pmic@0 {
		compatible = "qcom,pm8550", "qcom,spmi-pmic";
		reg = <0x0 SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		pmk8550_pon: pon@1300 {
			compatible = "qcom,pmk8350-pon";
			reg = <0x1300>, <0x800>;
			reg-names = "hlos", "pbs";

			pon_pwrkey: pwrkey {
				compatible = "qcom,pmk8350-pwrkey";
				interrupts = <0x0 0x13 0x7 IRQ_TYPE_EDGE_BOTH>;
				linux,code = <KEY_POWER>;
			};

			pon_resin: resin {
				compatible = "qcom,pmk8350-resin";
				interrupts = <0x0 0x13 0x6 IRQ_TYPE_EDGE_BOTH>;
				status = "disabled";
			};
		};

		pmk8550_rtc: rtc@6100 {
			compatible = "qcom,pmk8350-rtc";
			reg = <0x6100>, <0x6200>;
			reg-names = "rtc", "alarm";
			interrupts = <0x0 0x62 0x1 IRQ_TYPE_EDGE_RISING>;
			/* Not yet sure what blocks access */
			status = "reserved";
		};

		pmk8550_sdam_2: nvram@7100 {
			compatible = "qcom,spmi-sdam";
			reg = <0x7100>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0 0x7100 0x100>;

			reboot_reason: reboot-reason@48 {
				reg = <0x48 0x1>;
				bits = <1 7>;
			};
		};

		pmk8550_gpios: gpio@8800 {
			compatible = "qcom,pmk8550-gpio", "qcom,spmi-gpio";
			reg = <0xb800>;
			gpio-controller;
			gpio-ranges = <&pmk8550_gpios 0 0 6>;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};
	};

	/* PMC8380C */
	pm8550: pmic@1 {
		compatible = "qcom,pm8550", "qcom,spmi-pmic";
		reg = <0x1 SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		pm8550_temp_alarm: temp-alarm@a00 {
			compatible = "qcom,spmi-temp-alarm";
			reg = <0xa00>;
			interrupts = <0x1 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
			#thermal-sensor-cells = <0>;
		};

		pm8550_gpios: gpio@8800 {
			compatible = "qcom,pm8550-gpio", "qcom,spmi-gpio";
			reg = <0x8800>;
			gpio-controller;
			gpio-ranges = <&pm8550_gpios 0 0 12>;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};

		pm8550_flash: led-controller@ee00 {
			compatible = "qcom,pm8550-flash-led", "qcom,spmi-flash-led";
			reg = <0xee00>;
			status = "disabled";
		};

		pm8550_pwm: pwm {
			compatible = "qcom,pm8550-pwm", "qcom,pm8350c-pwm";
			#pwm-cells = <2>;

			status = "disabled";
		};
	};

	/* PMC8380VE */
	pm8550ve_2: pmic@2 {
		compatible = "qcom,pm8550", "qcom,spmi-pmic";
		reg = <0x2 SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		pm8550ve_2_temp_alarm: temp-alarm@a00 {
			compatible = "qcom,spmi-temp-alarm";
			reg = <0xa00>;
			interrupts = <0x2 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
			#thermal-sensor-cells = <0>;
		};

		pm8550ve_2_gpios: gpio@8800 {
			compatible = "qcom,pm8550ve-gpio", "qcom,spmi-gpio";
			reg = <0x8800>;
			gpio-controller;
			gpio-ranges = <&pm8550ve_2_gpios 0 0 8>;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};
	};

	/* PMC8380 is actually not a PM8550 series rebrand */
	pmc8380_3: pmic@3 {
		compatible = "qcom,pmc8380", "qcom,spmi-pmic";
		reg = <0x3 SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		pmc8380_3_temp_alarm: temp-alarm@a00 {
			compatible = "qcom,spmi-temp-alarm";
			reg = <0xa00>;
			interrupts = <0x3 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
			#thermal-sensor-cells = <0>;
		};

		pmc8380_3_gpios: gpio@8800 {
			compatible = "qcom,pmc8380-gpio", "qcom,spmi-gpio";
			reg = <0x8800>;
			gpio-controller;
			gpio-ranges = <&pmc8380_3_gpios 0 0 10>;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};
	};

	pmc8380_4: pmic@4 {
		compatible = "qcom,pmc8380", "qcom,spmi-pmic";
		reg = <0x4 SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		pmc8380_4_temp_alarm: temp-alarm@a00 {
			compatible = "qcom,spmi-temp-alarm";
			reg = <0xa00>;
			interrupts = <0x4 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
			#thermal-sensor-cells = <0>;
		};

		pmc8380_4_gpios: gpio@8800 {
			compatible = "qcom,pmc8380-gpio", "qcom,spmi-gpio";
			reg = <0x8800>;
			gpio-controller;
			gpio-ranges = <&pmc8380_4_gpios 0 0 10>;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};
	};

	pmc8380_5: pmic@5 {
		compatible = "qcom,pmc8380", "qcom,spmi-pmic";
		reg = <0x5 SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		pmc8380_5_temp_alarm: temp-alarm@a00 {
			compatible = "qcom,spmi-temp-alarm";
			reg = <0xa00>;
			interrupts = <0x5 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
			#thermal-sensor-cells = <0>;
		};

		pmc8380_5_gpios: gpio@8800 {
			compatible = "qcom,pmc8380-gpio", "qcom,spmi-gpio";
			reg = <0x8800>;
			gpio-controller;
			gpio-ranges = <&pmc8380_5_gpios 0 0 10>;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};
	};

	pmc8380_6: pmic@6 {
		compatible = "qcom,pmc8380", "qcom,spmi-pmic";
		reg = <0x6 SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		pmc8380_6_temp_alarm: temp-alarm@a00 {
			compatible = "qcom,spmi-temp-alarm";
			reg = <0xa00>;
			interrupts = <0x6 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
			#thermal-sensor-cells = <0>;
		};

		pmc8380_6_gpios: gpio@8800 {
			compatible = "qcom,pmc8380-gpio", "qcom,spmi-gpio";
			reg = <0x8800>;
			gpio-controller;
			gpio-ranges = <&pmc8380_6_gpios 0 0 10>;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};
	};

	/* PMC8380VE */
	pm8550ve_8: pmic@8 {
		compatible = "qcom,pm8550", "qcom,spmi-pmic";
		reg = <0x8 SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		pm8550ve_8_temp_alarm: temp-alarm@a00 {
			compatible = "qcom,spmi-temp-alarm";
			reg = <0xa00>;
			interrupts = <0x8 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
			#thermal-sensor-cells = <0>;
		};

		pm8550ve_8_gpios: gpio@8800 {
			compatible = "qcom,pm8550ve-gpio", "qcom,spmi-gpio";
			reg = <0x8800>;
			gpio-controller;
			gpio-ranges = <&pm8550ve_8_gpios 0 0 8>;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};
	};

	/* PMC8380VE */
	pm8550ve_9: pmic@9 {
		compatible = "qcom,pm8550", "qcom,spmi-pmic";
		reg = <0x9 SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		pm8550ve_9_temp_alarm: temp-alarm@a00 {
			compatible = "qcom,spmi-temp-alarm";
			reg = <0xa00>;
			interrupts = <0x9 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
			#thermal-sensor-cells = <0>;
		};

		pm8550ve_9_gpios: gpio@8800 {
			compatible = "qcom,pm8550ve-gpio", "qcom,spmi-gpio";
			reg = <0x8800>;
			gpio-controller;
			gpio-ranges = <&pm8550ve_9_gpios 0 0 8>;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};
	};

	pm8010: pmic@c {
		compatible = "qcom,pm8010", "qcom,spmi-pmic";
		reg = <0xc SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		pm8010_temp_alarm: temp-alarm@2400 {
			compatible = "qcom,spmi-temp-alarm";
			reg = <0x2400>;
			interrupts = <0xc 0x24 0x0 IRQ_TYPE_EDGE_BOTH>;
			#thermal-sensor-cells = <0>;
		};
	};
};

&spmi_bus1 {
	smb2360_0: pmic@7 {
		compatible = "qcom,smb2360", "qcom,spmi-pmic";
		reg = <0x7 SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		smb2360_0_eusb2_repeater: phy@fd00 {
			compatible = "qcom,smb2360-eusb2-repeater";
			reg = <0xfd00>;
			#phy-cells = <0>;
		};
	};

	smb2360_1: pmic@a {
		compatible = "qcom,smb2360", "qcom,spmi-pmic";
		reg = <0xa SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		smb2360_1_eusb2_repeater: phy@fd00 {
			compatible = "qcom,smb2360-eusb2-repeater";
			reg = <0xfd00>;
			#phy-cells = <0>;
		};
	};

	smb2360_2: pmic@b {
		compatible = "qcom,smb2360", "qcom,spmi-pmic";
		reg = <0xb SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		smb2360_2_eusb2_repeater: phy@fd00 {
			compatible = "qcom,smb2360-eusb2-repeater";
			reg = <0xfd00>;
			#phy-cells = <0>;
		};
	};

	smb2360_3: pmic@c {
		compatible = "qcom,smb2360", "qcom,spmi-pmic";
		reg = <0xc SPMI_USID>;
		#address-cells = <1>;
		#size-cells = <0>;

		status = "disabled";

		smb2360_3_eusb2_repeater: phy@fd00 {
			compatible = "qcom,smb2360-eusb2-repeater";
			reg = <0xfd00>;
			#phy-cells = <0>;
		};
	};
};
