Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 77934269 authored by Thierry Reding's avatar Thierry Reding
Browse files

arm64: tegra: Add PMIC support on Jetson TX1



Add a device tree node for the MAX77620 PMIC found on the p2180
processor module (Jetson TX1). Also add supporting power supplies,
such as the main 5 V system supply.

Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent 1a695a90
Loading
Loading
Loading
Loading
+245 −0
Original line number Diff line number Diff line
#include <dt-bindings/mfd/max77620.h>

#include "tegra210.dtsi"

/ {
@@ -5,6 +7,7 @@
	compatible = "nvidia,p2180", "nvidia,tegra210";

	aliases {
		rtc0 = "/i2c@7000d000/pmic@3c";
		rtc1 = "/rtc@7000e000";
		serial0 = &uarta;
	};
@@ -19,6 +22,248 @@
		status = "okay";
	};

	i2c@7000d000 {
		status = "okay";
		clock-frequency = <400000>;

		pmic: pmic@3c {
			compatible = "maxim,max77620";
			reg = <0x3c>;
			interrupts = <GIC_SPI 86 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";
					drive-push-pull = <1>;
					maxim,active-fps-source = <MAX77620_FPS_SRC_0>;
					maxim,active-fps-power-up-slot = <7>;
					maxim,active-fps-power-down-slot = <0>;
				};

				gpio2_3 {
					pins = "gpio2", "gpio3";
					function = "fps-out";
					drive-open-drain = <1>;
					maxim,active-fps-source = <MAX77620_FPS_SRC_0>;
				};

				gpio4 {
					pins = "gpio4";
					function = "32k-out1";
				};

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

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

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

				fps2 {
					maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN0>;
				};
			};

			regulators {
				in-ldo0-1-supply = <&vdd_pre>;
				in-ldo7-8-supply = <&vdd_pre>;
				in-sd3-supply = <&vdd_5v0_sys>;

				vdd_soc: sd0 {
					regulator-name = "VDD_SOC";
					regulator-min-microvolt = <600000>;
					regulator-max-microvolt = <1400000>;
					regulator-always-on;
					regulator-boot-on;

					regulator-enable-ramp-delay = <146>;
					regulator-ramp-delay = <27500>;

					maxim,active-fps-source = <MAX77620_FPS_SRC_1>;
				};

				vdd_ddr: sd1 {
					regulator-name = "VDD_DDR_1V1_PMIC";
					regulator-always-on;
					regulator-boot-on;

					regulator-enable-ramp-delay = <130>;
					regulator-ramp-delay = <27500>;

					maxim,active-fps-source = <MAX77620_FPS_SRC_0>;
				};

				vdd_pre: sd2 {
					regulator-name = "VDD_PRE_REG_1V35";
					regulator-min-microvolt = <1350000>;
					regulator-max-microvolt = <1350000>;

					regulator-enable-ramp-delay = <176>;
					regulator-ramp-delay = <27500>;

					maxim,active-fps-source = <MAX77620_FPS_SRC_1>;
				};

				vdd_1v8: sd3 {
					regulator-name = "VDD_1V8";
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
					regulator-always-on;
					regulator-boot-on;

					regulator-enable-ramp-delay = <242>;
					regulator-ramp-delay = <27500>;

					maxim,active-fps-source = <MAX77620_FPS_SRC_0>;
				};

				vdd_sys_1v2: ldo0 {
					regulator-name = "AVDD_SYS_1V2";
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1200000>;
					regulator-always-on;
					regulator-boot-on;

					regulator-enable-ramp-delay = <26>;
					regulator-ramp-delay = <100000>;

					maxim,active-fps-source = <MAX77620_FPS_SRC_NONE>;
				};

				vdd_pex_1v05: ldo1 {
					regulator-name = "VDD_PEX_1V05";
					regulator-min-microvolt = <1050000>;
					regulator-max-microvolt = <1050000>;

					regulator-enable-ramp-delay = <22>;
					regulator-ramp-delay = <100000>;

					maxim,active-fps-source = <MAX77620_FPS_SRC_1>;
				};

				vddio_sdmmc: ldo2 {
					regulator-name = "VDDIO_SDMMC";
					/*
					 * Technically this supply should have
					 * a supported range from 1.8 - 3.3 V.
					 * However, that would cause the SDHCI
					 * driver to request 2.7 V upon access
					 * and that in turn will cause traffic
					 * to be broken. Leave it at 3.3 V for
					 * now.
					 */
					regulator-min-microvolt = <3300000>;
					regulator-max-microvolt = <3300000>;
					regulator-always-on;
					regulator-boot-on;

					regulator-enable-ramp-delay = <62>;
					regulator-ramp-delay = <100000>;

					maxim,active-fps-source = <MAX77620_FPS_SRC_NONE>;
				};

				vdd_cam_hv: ldo3 {
					regulator-name = "VDD_CAM_HV";
					regulator-min-microvolt = <2800000>;
					regulator-max-microvolt = <2800000>;

					regulator-enable-ramp-delay = <50>;
					regulator-ramp-delay = <100000>;

					maxim,active-fps-source = <MAX77620_FPS_SRC_NONE>;
				};

				vdd_rtc: ldo4 {
					regulator-name = "VDD_RTC";
					regulator-min-microvolt = <850000>;
					regulator-max-microvolt = <850000>;
					regulator-always-on;
					regulator-boot-on;

					regulator-enable-ramp-delay = <22>;
					regulator-ramp-delay = <100000>;

					maxim,active-fps-source = <MAX77620_FPS_SRC_0>;
				};

				vdd_ts_hv: ldo5 {
					regulator-name = "VDD_TS_HV";
					regulator-min-microvolt = <3300000>;
					regulator-max-microvolt = <3300000>;

					regulator-enable-ramp-delay = <62>;
					regulator-ramp-delay = <100000>;

					maxim,active-fps-source = <MAX77620_FPS_SRC_NONE>;
				};

				vdd_ts: ldo6 {
					regulator-name = "VDD_TS_1V8";
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;

					regulator-enable-ramp-delay = <36>;
					regulator-ramp-delay = <100000>;

					maxim,active-fps-source = <MAX77620_FPS_SRC_0>;
					maxim,active-fps-power-up-slot = <7>;
					maxim,active-fps-power-down-slot = <0>;
				};

				avdd_1v05_pll: ldo7 {
					regulator-name = "AVDD_1V05_PLL";
					regulator-min-microvolt = <1050000>;
					regulator-max-microvolt = <1050000>;
					regulator-always-on;
					regulator-boot-on;

					regulator-enable-ramp-delay = <24>;
					regulator-ramp-delay = <100000>;

					maxim,active-fps-source = <MAX77620_FPS_SRC_1>;
				};

				avdd_1v05: ldo8 {
					regulator-name = "AVDD_SATA_HDMI_DP_1V05";
					regulator-min-microvolt = <1050000>;
					regulator-max-microvolt = <1050000>;

					regulator-enable-ramp-delay = <22>;
					regulator-ramp-delay = <100000>;

					maxim,active-fps-source = <MAX77620_FPS_SRC_1>;
				};
			};
		};
	};

	pmc@7000e400 {
		nvidia,invert-interrupt;
	};
+55 −0
Original line number Diff line number Diff line
@@ -1270,6 +1270,61 @@
		cd-gpios = <&gpio TEGRA_GPIO(Z, 1) GPIO_ACTIVE_LOW>;
	};

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

		vdd_sys_mux: regulator@0 {
			compatible = "regulator-fixed";
			reg = <0>;
			regulator-name = "VDD_SYS_MUX";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			regulator-always-on;
			regulator-boot-on;
		};

		vdd_5v0_sys: regulator@1 {
			compatible = "regulator-fixed";
			reg = <1>;
			regulator-name = "VDD_5V0_SYS";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			regulator-always-on;
			regulator-boot-on;
			gpio = <&pmic 1 GPIO_ACTIVE_HIGH>;
			enable-active-high;
			vin-supply = <&vdd_sys_mux>;
		};

		vdd_3v3_sys: regulator@2 {
			compatible = "regulator-fixed";
			reg = <2>;
			regulator-name = "VDD_3V3_SYS";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			regulator-always-on;
			regulator-boot-on;
			gpio = <&pmic 3 GPIO_ACTIVE_HIGH>;
			enable-active-high;
			vin-supply = <&vdd_sys_mux>;

			regulator-enable-ramp-delay = <160>;
			regulator-disable-ramp-delay = <10000>;
		};

		vdd_5v0_io: regulator@3 {
			compatible = "regulator-fixed";
			reg = <3>;
			regulator-name = "VDD_5V0_IO_SYS";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			regulator-always-on;
			regulator-boot-on;
		};
	};

	gpio-keys {
		compatible = "gpio-keys";
		label = "gpio-keys";