Commit 91eac913 authored by Olof Johansson's avatar Olof Johansson
Browse files

Merge tag 'tegra-for-4.21-arm64-dt' of...

Merge tag 'tegra-for-4.21-arm64-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into next/dt

arm64: tegra: Device tree change for v4.21-rc1

These changes add a bunch of features for Tegra194 and Tegra186, such as
wake events, on-die RTC, temperature sensors, HDA for audio over HDMI
and fan support on Jetson Xavier to allow cooling of the device.

* tag 'tegra-for-4.21-arm64-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux

: (29 commits)
  arm64: tegra: Set reg property for display-hub on Tegra194
  arm64: tegra: Set reg property for display-hub on Tegra186
  arm64: dts: tegra186: Enable IOMMU for SDHCI
  arm64: tegra: Enable HDA controller on Jetson TX1
  arm64: tegra: Add CEC controller on Tegra194
  arm64: tegra: Enable HDA on Jetson Xavier
  arm64: tegra: Add HDA controller on Tegra194
  arm64: tegra: Add CEC controller on Tegra186
  arm64: tegra: Enable HDA on Jetson TX2
  arm64: tegra: Add HDA controller on Tegra186
  arm64: tegra: Add temperature sensor on P2888
  arm64: tegra: Add gpio-keys on Jetson Xavier
  arm64: tegra: Add AON GPIO controller on Tegra194
  arm64: tegra: p2888: Enable on-die RTC
  arm64: tegra: Add RTC support on Tegra194
  arm64: tegra: Enable PMC wake events on Tegra194
  arm64: tegra: p3310: Enable on-die RTC
  arm64: tegra: Add RTC support on Tegra186
  arm64: tegra: Enable PMC wake events on Tegra186
  arm64: tegra: Fix power key interrupt type on Jetson TX2
  ...

Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parents 622523c7 611a1c69
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@
/dts-v1/;

#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/input/gpio-keys.h>

#include "tegra186-p3310.dtsi"

@@ -50,6 +51,10 @@
		vmmc-supply = <&vdd_sd>;
	};

	hda@3510000 {
		status = "okay";
	};

	pcie@10003000 {
		status = "okay";

@@ -121,6 +126,7 @@
			linux,input-type = <EV_KEY>;
			linux,code = <KEY_POWER>;
			debounce-interval = <10>;
			wakeup-event-action = <EV_ACT_ASSERTED>;
			wakeup-source;
		};

+4 −0
Original line number Diff line number Diff line
@@ -124,6 +124,10 @@
		status = "okay";
	};

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

	pmc@c360000 {
		nvidia,invert-interrupt;
	};
+44 −1
Original line number Diff line number Diff line
@@ -237,6 +237,7 @@
		clock-names = "sdhci";
		resets = <&bpmp TEGRA186_RESET_SDMMC1>;
		reset-names = "sdhci";
		iommus = <&smmu TEGRA186_SID_SDMMC1>;
		pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
		pinctrl-0 = <&sdmmc1_3v3>;
		pinctrl-1 = <&sdmmc1_1v8>;
@@ -262,6 +263,7 @@
		clock-names = "sdhci";
		resets = <&bpmp TEGRA186_RESET_SDMMC2>;
		reset-names = "sdhci";
		iommus = <&smmu TEGRA186_SID_SDMMC2>;
		pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
		pinctrl-0 = <&sdmmc2_3v3>;
		pinctrl-1 = <&sdmmc2_1v8>;
@@ -282,6 +284,7 @@
		clock-names = "sdhci";
		resets = <&bpmp TEGRA186_RESET_SDMMC3>;
		reset-names = "sdhci";
		iommus = <&smmu TEGRA186_SID_SDMMC3>;
		pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
		pinctrl-0 = <&sdmmc3_3v3>;
		pinctrl-1 = <&sdmmc3_1v8>;
@@ -307,6 +310,7 @@
		assigned-clock-parents = <&bpmp TEGRA186_CLK_PLLC4_VCO>;
		resets = <&bpmp TEGRA186_RESET_SDMMC4>;
		reset-names = "sdhci";
		iommus = <&smmu TEGRA186_SID_SDMMC4>;
		nvidia,pad-autocal-pull-up-offset-hs400 = <0x05>;
		nvidia,pad-autocal-pull-down-offset-hs400 = <0x05>;
		nvidia,pad-autocal-pull-up-offset-1v8-timeout = <0x0a>;
@@ -318,6 +322,22 @@
		status = "disabled";
	};

	hda@3510000 {
		compatible = "nvidia,tegra186-hda", "nvidia,tegra30-hda";
		reg = <0x0 0x03510000 0x0 0x10000>;
		interrupts = <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&bpmp TEGRA186_CLK_HDA>,
			 <&bpmp TEGRA186_CLK_HDA2HDMICODEC>,
			 <&bpmp TEGRA186_CLK_HDA2CODEC_2X>;
		clock-names = "hda", "hda2hdmi", "hda2codec_2x";
		resets = <&bpmp TEGRA186_RESET_HDA>,
			 <&bpmp TEGRA186_RESET_HDA2HDMICODEC>,
			 <&bpmp TEGRA186_RESET_HDA2CODEC_2X>;
		reset-names = "hda", "hda2hdmi", "hda2codec_2x";
		power-domains = <&bpmp TEGRA186_POWER_DOMAIN_DISP>;
		status = "disabled";
	};

	fuse@3820000 {
		compatible = "nvidia,tegra186-efuse";
		reg = <0x0 0x03820000 0x0 0x10000>;
@@ -336,6 +356,15 @@
		interrupt-parent = <&gic>;
	};

	cec@3960000 {
		compatible = "nvidia,tegra186-cec";
		reg = <0x0 0x03960000 0x0 0x10000>;
		interrupts = <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&bpmp TEGRA186_CLK_CEC>;
		clock-names = "cec";
		status = "disabled";
	};

	hsp_top0: hsp@3c00000 {
		compatible = "nvidia,tegra186-hsp";
		reg = <0x0 0x03c00000 0x0 0xa0000>;
@@ -395,6 +424,16 @@
		status = "disabled";
	};

	rtc: rtc@c2a0000 {
		compatible = "nvidia,tegra186-rtc", "nvidia,tegra20-rtc";
		reg = <0 0x0c2a0000 0 0x10000>;
		interrupt-parent = <&pmc>;
		interrupts = <73 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&bpmp TEGRA186_CLK_CLK_32K>;
		clock-names = "rtc";
		status = "disabled";
	};

	gpio_aon: gpio@c2f0000 {
		compatible = "nvidia,tegra186-gpio-aon";
		reg-names = "security", "gpio";
@@ -407,7 +446,7 @@
		#interrupt-cells = <2>;
	};

	pmc@c360000 {
	pmc: pmc@c360000 {
		compatible = "nvidia,tegra186-pmc";
		reg = <0 0x0c360000 0 0x10000>,
		      <0 0x0c370000 0 0x10000>,
@@ -415,6 +454,9 @@
		      <0 0x0c390000 0 0x10000>;
		reg-names = "pmc", "wake", "aotag", "scratch";

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

		sdmmc1_3v3: sdmmc1-3v3 {
			pins = "sdmmc1-hv";
			power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>;
@@ -660,6 +702,7 @@

		display-hub@15200000 {
			compatible = "nvidia,tegra186-display", "simple-bus";
			reg = <0x15200000 0x00040000>;
			resets = <&bpmp TEGRA186_RESET_NVDISPLAY0_MISC>,
				 <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP0>,
				 <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP1>,
+28 −2
Original line number Diff line number Diff line
@@ -66,6 +66,10 @@
			vmmc-supply = <&vdd_emmc_3v3>;
		};

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

		pmc@c360000 {
			nvidia,invert-interrupt;
		};
@@ -163,7 +167,7 @@
					in-ldo4-6-supply = <&vdd_5v0_sys>;
					in-ldo7-8-supply = <&vdd_1v8ls>;

					sd0 {
					vdd_1v0: sd0 {
						regulator-name = "VDD_1V0";
						regulator-min-microvolt = <1000000>;
						regulator-max-microvolt = <1000000>;
@@ -171,7 +175,7 @@
						regulator-boot-on;
					};

					sd1 {
					vdd_1v8hs: sd1 {
						regulator-name = "VDD_1V8HS";
						regulator-min-microvolt = <1800000>;
						regulator-max-microvolt = <1800000>;
@@ -244,6 +248,17 @@
					};
				};
			};

			temperature-sensor@4c {
				compatible = "ti,tmp451";
				reg = <0x4c>;

				interrupt-parent = <&gpio>;
				interrupts = <TEGRA194_MAIN_GPIO(H, 2)
					      IRQ_TYPE_LEVEL_LOW>;

				#thermal-sensor-cells = <1>;
			};
		};
	};

@@ -262,5 +277,16 @@
			regulator-always-on;
			regulator-boot-on;
		};

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

			regulator-name = "VDD_5V0_HDMI_CON";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio TEGRA194_MAIN_GPIO(A, 3) GPIO_ACTIVE_HIGH>;
			enable-active-high;
		};
	};
};
+156 −1
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0
/dts-v1/;

#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/input/gpio-keys.h>

#include "tegra194-p2888.dtsi"

/ {
	model = "NVIDIA Tegra194 P2972-0000 Development Board";
	model = "NVIDIA Jetson AGX Xavier Development Kit";
	compatible = "nvidia,p2972-0000", "nvidia,tegra194";

	cbb {
@@ -12,5 +15,157 @@
		sdhci@3400000 {
			status = "okay";
		};

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

		pwm@c340000 {
			status = "okay";
		};

		hda@3510000 {
			status = "okay";
		};

		host1x@13e00000 {
			display-hub@15200000 {
				status = "okay";
			};

			dpaux@155e0000 {
				status = "okay";
			};

			sor@15b80000 {
				status = "okay";

				avdd-io-supply = <&vdd_1v0>;
				vdd-pll-supply = <&vdd_1v8hs>;
				hdmi-supply = <&vdd_hdmi>;

				nvidia,ddc-i2c-bus = <&ddc>;
				nvidia,hpd-gpio = <&gpio TEGRA194_MAIN_GPIO(M, 2)
							 GPIO_ACTIVE_LOW>;
			};
		};
	};

	fan: fan {
		compatible = "pwm-fan";
		pwms = <&pwm4 0 45334>;

		cooling-levels = <0 64 128 255>;
		cooling-min-state = <0>;
		cooling-max-state = <3>;
		#cooling-cells = <2>;
	};

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

		force-recovery {
			label = "Force Recovery";
			gpios = <&gpio TEGRA194_MAIN_GPIO(G, 0)
				       GPIO_ACTIVE_LOW>;
			linux,input-type = <EV_KEY>;
			linux,code = <BTN_1>;
			debounce-interval = <10>;
		};

		power {
			label = "Power";
			gpios = <&gpio_aon TEGRA194_AON_GPIO(EE, 4)
					   GPIO_ACTIVE_LOW>;
			linux,input-type = <EV_KEY>;
			linux,code = <KEY_POWER>;
			debounce-interval = <10>;
			wakeup-event-action = <EV_ACT_ASSERTED>;
			wakeup-source;
		};
	};

	thermal-zones {
		cpu {
			polling-delay = <0>;
			polling-delay-passive = <500>;
			status = "okay";

			trips {
				cpu_trip_critical: critical {
					temperature = <96500>;
					hysteresis = <0>;
					type = "critical";
				};

				cpu_trip_hot: hot {
					temperature = <70000>;
					hysteresis = <2000>;
					type = "hot";
				};

				cpu_trip_active: active {
					temperature = <50000>;
					hysteresis = <2000>;
					type = "active";
				};

				cpu_trip_passive: passive {
					temperature = <30000>;
					hysteresis = <2000>;
					type = "passive";
				};
			};

			cooling-maps {
				cpu-critical {
					cooling-device = <&fan 3 3>;
					trip = <&cpu_trip_critical>;
				};

				cpu-hot {
					cooling-device = <&fan 2 2>;
					trip = <&cpu_trip_hot>;
				};

				cpu-active {
					cooling-device = <&fan 1 1>;
					trip = <&cpu_trip_active>;
				};

				cpu-passive {
					cooling-device = <&fan 0 0>;
					trip = <&cpu_trip_passive>;
				};
			};
		};

		gpu {
			polling-delay = <0>;
			polling-delay-passive = <500>;
			status = "okay";

			trips {
				gpu_alert0: critical {
					temperature = <99000>;
					hysteresis = <0>;
					type = "critical";
				};
			};
		};

		aux {
			polling-delay = <0>;
			polling-delay-passive = <500>;
			status = "okay";

			trips {
				aux_alert0: critical {
					temperature = <90000>;
					hysteresis = <0>;
					type = "critical";
				};
			};
		};
	};
};
Loading