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

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
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
/dts-v1/; /dts-v1/;
#include <dt-bindings/input/linux-event-codes.h> #include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/input/gpio-keys.h>
#include "tegra186-p3310.dtsi" #include "tegra186-p3310.dtsi"
...@@ -50,6 +51,10 @@ sdhci@3400000 { ...@@ -50,6 +51,10 @@ sdhci@3400000 {
vmmc-supply = <&vdd_sd>; vmmc-supply = <&vdd_sd>;
}; };
hda@3510000 {
status = "okay";
};
pcie@10003000 { pcie@10003000 {
status = "okay"; status = "okay";
...@@ -121,6 +126,7 @@ power { ...@@ -121,6 +126,7 @@ power {
linux,input-type = <EV_KEY>; linux,input-type = <EV_KEY>;
linux,code = <KEY_POWER>; linux,code = <KEY_POWER>;
debounce-interval = <10>; debounce-interval = <10>;
wakeup-event-action = <EV_ACT_ASSERTED>;
wakeup-source; wakeup-source;
}; };
......
...@@ -124,6 +124,10 @@ i2c@c250000 { ...@@ -124,6 +124,10 @@ i2c@c250000 {
status = "okay"; status = "okay";
}; };
rtc@c2a0000 {
status = "okay";
};
pmc@c360000 { pmc@c360000 {
nvidia,invert-interrupt; nvidia,invert-interrupt;
}; };
......
...@@ -237,6 +237,7 @@ sdmmc1: sdhci@3400000 { ...@@ -237,6 +237,7 @@ sdmmc1: sdhci@3400000 {
clock-names = "sdhci"; clock-names = "sdhci";
resets = <&bpmp TEGRA186_RESET_SDMMC1>; resets = <&bpmp TEGRA186_RESET_SDMMC1>;
reset-names = "sdhci"; reset-names = "sdhci";
iommus = <&smmu TEGRA186_SID_SDMMC1>;
pinctrl-names = "sdmmc-3v3", "sdmmc-1v8"; pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
pinctrl-0 = <&sdmmc1_3v3>; pinctrl-0 = <&sdmmc1_3v3>;
pinctrl-1 = <&sdmmc1_1v8>; pinctrl-1 = <&sdmmc1_1v8>;
...@@ -262,6 +263,7 @@ sdmmc2: sdhci@3420000 { ...@@ -262,6 +263,7 @@ sdmmc2: sdhci@3420000 {
clock-names = "sdhci"; clock-names = "sdhci";
resets = <&bpmp TEGRA186_RESET_SDMMC2>; resets = <&bpmp TEGRA186_RESET_SDMMC2>;
reset-names = "sdhci"; reset-names = "sdhci";
iommus = <&smmu TEGRA186_SID_SDMMC2>;
pinctrl-names = "sdmmc-3v3", "sdmmc-1v8"; pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
pinctrl-0 = <&sdmmc2_3v3>; pinctrl-0 = <&sdmmc2_3v3>;
pinctrl-1 = <&sdmmc2_1v8>; pinctrl-1 = <&sdmmc2_1v8>;
...@@ -282,6 +284,7 @@ sdmmc3: sdhci@3440000 { ...@@ -282,6 +284,7 @@ sdmmc3: sdhci@3440000 {
clock-names = "sdhci"; clock-names = "sdhci";
resets = <&bpmp TEGRA186_RESET_SDMMC3>; resets = <&bpmp TEGRA186_RESET_SDMMC3>;
reset-names = "sdhci"; reset-names = "sdhci";
iommus = <&smmu TEGRA186_SID_SDMMC3>;
pinctrl-names = "sdmmc-3v3", "sdmmc-1v8"; pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
pinctrl-0 = <&sdmmc3_3v3>; pinctrl-0 = <&sdmmc3_3v3>;
pinctrl-1 = <&sdmmc3_1v8>; pinctrl-1 = <&sdmmc3_1v8>;
...@@ -307,6 +310,7 @@ sdmmc4: sdhci@3460000 { ...@@ -307,6 +310,7 @@ sdmmc4: sdhci@3460000 {
assigned-clock-parents = <&bpmp TEGRA186_CLK_PLLC4_VCO>; assigned-clock-parents = <&bpmp TEGRA186_CLK_PLLC4_VCO>;
resets = <&bpmp TEGRA186_RESET_SDMMC4>; resets = <&bpmp TEGRA186_RESET_SDMMC4>;
reset-names = "sdhci"; reset-names = "sdhci";
iommus = <&smmu TEGRA186_SID_SDMMC4>;
nvidia,pad-autocal-pull-up-offset-hs400 = <0x05>; nvidia,pad-autocal-pull-up-offset-hs400 = <0x05>;
nvidia,pad-autocal-pull-down-offset-hs400 = <0x05>; nvidia,pad-autocal-pull-down-offset-hs400 = <0x05>;
nvidia,pad-autocal-pull-up-offset-1v8-timeout = <0x0a>; nvidia,pad-autocal-pull-up-offset-1v8-timeout = <0x0a>;
...@@ -318,6 +322,22 @@ sdmmc4: sdhci@3460000 { ...@@ -318,6 +322,22 @@ sdmmc4: sdhci@3460000 {
status = "disabled"; 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 { fuse@3820000 {
compatible = "nvidia,tegra186-efuse"; compatible = "nvidia,tegra186-efuse";
reg = <0x0 0x03820000 0x0 0x10000>; reg = <0x0 0x03820000 0x0 0x10000>;
...@@ -336,6 +356,15 @@ gic: interrupt-controller@3881000 { ...@@ -336,6 +356,15 @@ gic: interrupt-controller@3881000 {
interrupt-parent = <&gic>; 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 { hsp_top0: hsp@3c00000 {
compatible = "nvidia,tegra186-hsp"; compatible = "nvidia,tegra186-hsp";
reg = <0x0 0x03c00000 0x0 0xa0000>; reg = <0x0 0x03c00000 0x0 0xa0000>;
...@@ -395,6 +424,16 @@ uartg: serial@c290000 { ...@@ -395,6 +424,16 @@ uartg: serial@c290000 {
status = "disabled"; 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 { gpio_aon: gpio@c2f0000 {
compatible = "nvidia,tegra186-gpio-aon"; compatible = "nvidia,tegra186-gpio-aon";
reg-names = "security", "gpio"; reg-names = "security", "gpio";
...@@ -407,7 +446,7 @@ gpio_aon: gpio@c2f0000 { ...@@ -407,7 +446,7 @@ gpio_aon: gpio@c2f0000 {
#interrupt-cells = <2>; #interrupt-cells = <2>;
}; };
pmc@c360000 { pmc: pmc@c360000 {
compatible = "nvidia,tegra186-pmc"; compatible = "nvidia,tegra186-pmc";
reg = <0 0x0c360000 0 0x10000>, reg = <0 0x0c360000 0 0x10000>,
<0 0x0c370000 0 0x10000>, <0 0x0c370000 0 0x10000>,
...@@ -415,6 +454,9 @@ pmc@c360000 { ...@@ -415,6 +454,9 @@ pmc@c360000 {
<0 0x0c390000 0 0x10000>; <0 0x0c390000 0 0x10000>;
reg-names = "pmc", "wake", "aotag", "scratch"; reg-names = "pmc", "wake", "aotag", "scratch";
#interrupt-cells = <2>;
interrupt-controller;
sdmmc1_3v3: sdmmc1-3v3 { sdmmc1_3v3: sdmmc1-3v3 {
pins = "sdmmc1-hv"; pins = "sdmmc1-hv";
power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>; power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>;
...@@ -660,6 +702,7 @@ i2c-bus { ...@@ -660,6 +702,7 @@ i2c-bus {
display-hub@15200000 { display-hub@15200000 {
compatible = "nvidia,tegra186-display", "simple-bus"; compatible = "nvidia,tegra186-display", "simple-bus";
reg = <0x15200000 0x00040000>;
resets = <&bpmp TEGRA186_RESET_NVDISPLAY0_MISC>, resets = <&bpmp TEGRA186_RESET_NVDISPLAY0_MISC>,
<&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP0>, <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP0>,
<&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP1>, <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP1>,
......
...@@ -66,6 +66,10 @@ sdhci@3460000 { ...@@ -66,6 +66,10 @@ sdhci@3460000 {
vmmc-supply = <&vdd_emmc_3v3>; vmmc-supply = <&vdd_emmc_3v3>;
}; };
rtc@c2a0000 {
status = "okay";
};
pmc@c360000 { pmc@c360000 {
nvidia,invert-interrupt; nvidia,invert-interrupt;
}; };
...@@ -163,7 +167,7 @@ regulators { ...@@ -163,7 +167,7 @@ regulators {
in-ldo4-6-supply = <&vdd_5v0_sys>; in-ldo4-6-supply = <&vdd_5v0_sys>;
in-ldo7-8-supply = <&vdd_1v8ls>; in-ldo7-8-supply = <&vdd_1v8ls>;
sd0 { vdd_1v0: sd0 {
regulator-name = "VDD_1V0"; regulator-name = "VDD_1V0";
regulator-min-microvolt = <1000000>; regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>; regulator-max-microvolt = <1000000>;
...@@ -171,7 +175,7 @@ sd0 { ...@@ -171,7 +175,7 @@ sd0 {
regulator-boot-on; regulator-boot-on;
}; };
sd1 { vdd_1v8hs: sd1 {
regulator-name = "VDD_1V8HS"; regulator-name = "VDD_1V8HS";
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
...@@ -244,6 +248,17 @@ ldo7 { ...@@ -244,6 +248,17 @@ ldo7 {
}; };
}; };
}; };
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 @@ vdd_5v0_sys: regulator@0 { ...@@ -262,5 +277,16 @@ vdd_5v0_sys: regulator@0 {
regulator-always-on; regulator-always-on;
regulator-boot-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;
};
}; };
}; };
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
/dts-v1/; /dts-v1/;
#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/input/gpio-keys.h>
#include "tegra194-p2888.dtsi" #include "tegra194-p2888.dtsi"
/ { / {
model = "NVIDIA Tegra194 P2972-0000 Development Board"; model = "NVIDIA Jetson AGX Xavier Development Kit";
compatible = "nvidia,p2972-0000", "nvidia,tegra194"; compatible = "nvidia,p2972-0000", "nvidia,tegra194";
cbb { cbb {
...@@ -12,5 +15,157 @@ cbb { ...@@ -12,5 +15,157 @@ cbb {
sdhci@3400000 { sdhci@3400000 {
status = "okay"; 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";
};
};
};
}; };
}; };
This diff is collapsed.
...@@ -1330,6 +1330,10 @@ sata@70020000 { ...@@ -1330,6 +1330,10 @@ sata@70020000 {
phys = <&{/padctl@7009f000/pads/sata/lanes/sata-0}>; phys = <&{/padctl@7009f000/pads/sata/lanes/sata-0}>;
}; };
hda@70030000 {
status = "okay";
};
padctl@7009f000 { padctl@7009f000 {
status = "okay"; status = "okay";
......
...@@ -879,6 +879,8 @@ usb@70090000 { ...@@ -879,6 +879,8 @@ usb@70090000 {
resets = <&tegra_car 89>, <&tegra_car 156>, resets = <&tegra_car 89>, <&tegra_car 156>,
<&tegra_car 143>; <&tegra_car 143>;
reset-names = "xusb_host", "xusb_ss", "xusb_src"; reset-names = "xusb_host", "xusb_ss", "xusb_src";
power-domains = <&pd_xusbhost>, <&pd_xusbss>;
power-domain-names = "xusb_host", "xusb_ss";
nvidia,xusb-padctl = <&padctl>; nvidia,xusb-padctl = <&padctl>;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment