// SPDX-License-Identifier: GPL-2.0
#include "tegra186.dtsi"

#include <dt-bindings/mfd/max77620.h>

/ {
	model = "NVIDIA Tegra186 P3310 Processor Module";
	compatible = "nvidia,p3310", "nvidia,tegra186";

	aliases {
		sdhci0 = "/sdhci@3460000";
		sdhci1 = "/sdhci@3400000";
		serial0 = &uarta;
		i2c0 = "/bpmp/i2c";
		i2c1 = "/i2c@3160000";
		i2c2 = "/i2c@c240000";
		i2c3 = "/i2c@3180000";
		i2c4 = "/i2c@3190000";
		i2c5 = "/i2c@31c0000";
		i2c6 = "/i2c@c250000";
		i2c7 = "/i2c@31e0000";
	};

	chosen {
		bootargs = "earlycon console=ttyS0,115200n8";
		stdout-path = "serial0:115200n8";
	};

	memory {
		device_type = "memory";
		reg = <0x0 0x80000000 0x2 0x00000000>;
	};

	ethernet@2490000 {
		status = "okay";

		phy-reset-gpios = <&gpio TEGRA186_MAIN_GPIO(M, 4)
					 GPIO_ACTIVE_LOW>;
		phy-handle = <&phy>;
		phy-mode = "rgmii";

		mdio {
			#address-cells = <1>;
			#size-cells = <0>;

			phy: phy@0 {
				compatible = "ethernet-phy-ieee802.3-c22";
				reg = <0x0>;
				interrupt-parent = <&gpio>;
				interrupts = <TEGRA186_MAIN_GPIO(M, 5)
					      IRQ_TYPE_LEVEL_LOW>;
			};
		};
	};

	memory-controller@2c00000 {
		status = "okay";
	};

	serial@3100000 {
		status = "okay";
	};

	i2c@3160000 {
		status = "okay";

		power-monitor@40 {
			compatible = "ti,ina3221";
			reg = <0x40>;
		};

		power-monitor@41 {
			compatible = "ti,ina3221";
			reg = <0x41>;
		};
	};

	i2c@3180000 {
		status = "okay";
	};

	ddc: i2c@3190000 {
		status = "okay";
	};

	i2c@31c0000 {
		status = "okay";
	};

	i2c@31e0000 {
		status = "okay";
	};

	/* SDMMC1 (SD/MMC) */
	sdhci@3400000 {
		cd-gpios = <&gpio TEGRA186_MAIN_GPIO(P, 5) GPIO_ACTIVE_LOW>;
		wp-gpios = <&gpio TEGRA186_MAIN_GPIO(P, 4) GPIO_ACTIVE_HIGH>;

		vqmmc-supply = <&vddio_sdmmc1>;
	};

	/* SDMMC3 (SDIO) */
	sdhci@3440000 {
		status = "okay";
	};

	/* SDMMC4 (eMMC) */
	sdhci@3460000 {
		status = "okay";
		bus-width = <8>;
		non-removable;

		vqmmc-supply = <&vdd_1v8_ap>;
		vmmc-supply = <&vdd_3v3_sys>;
	};

	hsp@3c00000 {
		status = "okay";
	};

	i2c@c240000 {
		status = "okay";
	};

	i2c@c250000 {
		status = "okay";
	};

	rtc@c2a0000 {
		status = "okay";
	};

	pmc@c360000 {
		nvidia,invert-interrupt;
	};

	cpus {
		cpu@0 {
			enable-method = "psci";
		};

		cpu@1 {
			enable-method = "psci";
		};

		cpu@2 {
			enable-method = "psci";
		};

		cpu@3 {
			enable-method = "psci";
		};

		cpu@4 {
			enable-method = "psci";
		};

		cpu@5 {
			enable-method = "psci";
		};
	};

	bpmp {
		i2c {
			status = "okay";

			pmic: pmic@3c {
				compatible = "maxim,max77620";
				reg = <0x3c>;

				interrupts = <GIC_SPI 209 IRQ_TYPE_LEVEL_HIGH>;
				#interrupt-cells = <2>;
				interrupt-controller;

				#gpio-cells = <2>;
				gpio-controller;

				pinctrl-names = "default";
				pinctrl-0 = <&max77620_default>;

				max77620_default: pinmux {
					gpio0 {
						pins = "gpio0";
						function = "gpio";
					};

					gpio1 {
						pins = "gpio1";
						function = "fps-out";
						maxim,active-fps-source = <MAX77620_FPS_SRC_0>;
					};

					gpio2 {
						pins = "gpio2";
						function = "fps-out";
						maxim,active-fps-source = <MAX77620_FPS_SRC_1>;
					};

					gpio3 {
						pins = "gpio3";
						function = "fps-out";
						maxim,active-fps-source = <MAX77620_FPS_SRC_1>;
					};

					gpio4 {
						pins = "gpio4";
						function = "32k-out1";
						drive-push-pull = <1>;
					};

					gpio5 {
						pins = "gpio5";
						function = "gpio";
						drive-push-pull = <0>;
					};

					gpio6 {
						pins = "gpio6";
						function = "gpio";
						drive-push-pull = <1>;
					};

					gpio7 {
						pins = "gpio7";
						function = "gpio";
						drive-push-pull = <0>;
					};
				};

				fps {
					fps0 {
						maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN0>;
						maxim,shutdown-fps-time-period-us = <640>;
					};

					fps1 {
						maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN1>;
						maxim,shutdown-fps-time-period-us = <640>;
					};

					fps2 {
						maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN0>;
						maxim,shutdown-fps-time-period-us = <640>;
					};
				};

				regulators {
					in-sd0-supply = <&vdd_5v0_sys>;
					in-sd1-supply = <&vdd_5v0_sys>;
					in-sd2-supply = <&vdd_5v0_sys>;
					in-sd3-supply = <&vdd_5v0_sys>;

					in-ldo0-1-supply = <&vdd_5v0_sys>;
					in-ldo2-supply = <&vdd_5v0_sys>;
					in-ldo3-5-supply = <&vdd_5v0_sys>;
					in-ldo4-6-supply = <&vdd_1v8>;
					in-ldo7-8-supply = <&avdd_dsi_csi>;

					sd0 {
						regulator-name = "VDD_DDR_1V1_PMIC";
						regulator-min-microvolt = <1100000>;
						regulator-max-microvolt = <1100000>;
						regulator-always-on;
						regulator-boot-on;
					};

					avdd_dsi_csi: sd1 {
						regulator-name = "AVDD_DSI_CSI_1V2";
						regulator-min-microvolt = <1200000>;
						regulator-max-microvolt = <1200000>;
						/* XXX */
						regulator-always-on;
						regulator-boot-on;
					};

					vdd_1v8: sd2 {
						regulator-name = "VDD_1V8";
						regulator-min-microvolt = <1800000>;
						regulator-max-microvolt = <1800000>;
						/* XXX */
						regulator-always-on;
						regulator-boot-on;
					};

					vdd_3v3_sys: sd3 {
						regulator-name = "VDD_3V3_SYS";
						regulator-min-microvolt = <3300000>;
						regulator-max-microvolt = <3300000>;
						/* XXX */
						regulator-always-on;
						regulator-boot-on;
					};

					ldo0 {
						regulator-name = "VDD_1V8_AP_PLL";
						regulator-min-microvolt = <1800000>;
						regulator-max-microvolt = <1800000>;
						/* XXX */
						regulator-always-on;
						regulator-boot-on;
					};

					ldo2 {
						regulator-name = "VDDIO_3V3_AOHV";
						regulator-min-microvolt = <3300000>;
						regulator-max-microvolt = <3300000>;
						/* XXX */
						regulator-always-on;
						regulator-boot-on;
					};

					vddio_sdmmc1: ldo3 {
						regulator-name = "VDDIO_SDMMC1_AP";
						regulator-min-microvolt = <1800000>;
						regulator-max-microvolt = <3300000>;
					};

					ldo4 {
						regulator-name = "VDD_RTC";
						regulator-min-microvolt = <1000000>;
						regulator-max-microvolt = <1000000>;
					};

					vddio_sdmmc3: ldo5 {
						regulator-name = "VDDIO_SDMMC3_AP";
						regulator-min-microvolt = <2800000>;
						regulator-max-microvolt = <2800000>;
					};

					vdd_hdmi_1v05: ldo7 {
						regulator-name = "VDD_HDMI_1V05";
						regulator-min-microvolt = <1050000>;
						regulator-max-microvolt = <1050000>;
						/* XXX */
						regulator-always-on;
						regulator-boot-on;
					};

					vdd_pex: ldo8 {
						regulator-name = "VDD_PEX_1V05";
						regulator-min-microvolt = <1050000>;
						regulator-max-microvolt = <1050000>;
						/* XXX */
						regulator-always-on;
						regulator-boot-on;
					};
				};
			};
		};
	};

	psci {
		compatible = "arm,psci-1.0";
		status = "okay";
		method = "smc";
	};

	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		vdd_5v0_sys: regulator@0 {
			compatible = "regulator-fixed";
			reg = <0>;

			regulator-name = "VDD_5V0_SYS";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			regulator-always-on;
			regulator-boot-on;
		};

		vdd_1v8_ap: regulator@1 {
			compatible = "regulator-fixed";
			reg = <1>;

			regulator-name = "VDD_1V8_AP";
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;

			/* XXX */
			regulator-always-on;
			regulator-boot-on;

			gpio = <&pmic 1 GPIO_ACTIVE_HIGH>;
			enable-active-high;

			vin-supply = <&vdd_1v8>;
		};
	};
};
