All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-13 19:14 ` Dylan Reid
  0 siblings, 0 replies; 42+ messages in thread
From: Dylan Reid @ 2014-08-13 19:14 UTC (permalink / raw)
  To: linux-tegra-u79uwXL29TY76Z2rM5mHXA
  Cc: swarren-3lzwWm7+Weoh9ZMKESR00Q,
	thierry.reding-Re5JQEeQqe8AvxtiuMwx3w,
	abrestic-F7+t8E8rja9g9hUCZPvPmw,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	olof-nZhT3qVonbNeoWH0uzbU5w, Dylan Reid

The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
processor and is similar to the Venice2 reference platform.

The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
and work on the 1266x768 models.  The HD models haven't yet been
tested.

WiFi does not work yet, it needs at least some PMIC changes to enable
the 32k clock.

The elan trackpad is not yet functional but hopefully will be soon as
there are patches under review.

There is also an issue on reboot because the TPM isn't reset.  It will
cause the stock firmware to enter recovery mode.  This can be worked
around by an EC-reset, press the refresh and power keys at the same
time.

Signed-off-by: Dylan Reid <dgreid-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
---
 arch/arm/boot/dts/Makefile              |    1 +
 arch/arm/boot/dts/tegra124-nyan-big.dts | 1136 +++++++++++++++++++++++++++++++
 2 files changed, 1137 insertions(+)
 create mode 100644 arch/arm/boot/dts/tegra124-nyan-big.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index acb6b42..bebb4e7 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -439,6 +439,7 @@ dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \
 	tegra114-dalmore.dtb \
 	tegra114-roth.dtb \
 	tegra114-tn7.dtb \
+	tegra124-nyan-big.dtb \
 	tegra124-jetson-tk1.dtb \
 	tegra124-venice2.dtb
 dtb-$(CONFIG_ARCH_U300) += ste-u300.dtb
diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts b/arch/arm/boot/dts/tegra124-nyan-big.dts
new file mode 100644
index 0000000..79f1852
--- /dev/null
+++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
@@ -0,0 +1,1136 @@
+/dts-v1/;
+
+#include <dt-bindings/input/input.h>
+#include "tegra124.dtsi"
+
+/ {
+	model = "Acer Chromebook 13";
+	compatible = "google,nyan-big", "nvidia,tegra124";
+
+	aliases {
+		rtc0 = "/i2c@0,7000d000/pmic@40";
+		rtc1 = "/rtc@0,7000e000";
+	};
+
+	memory {
+		reg = <0x0 0x80000000 0x0 0x80000000>;
+	};
+
+	host1x@0,50000000 {
+		hdmi@0,54280000 {
+			status = "okay";
+
+			vdd-supply = <&vdd_3v3_hdmi>;
+			pll-supply = <&vdd_hdmi_pll>;
+			hdmi-supply = <&vdd_5v0_hdmi>;
+
+			nvidia,ddc-i2c-bus = <&hdmi_ddc>;
+			nvidia,hpd-gpio =
+				<&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>;
+		};
+
+		sor@0,54540000 {
+			status = "okay";
+
+			nvidia,dpaux = <&dpaux>;
+			nvidia,panel = <&panel>;
+		};
+
+		dpaux: dpaux@0,545c0000 {
+			vdd-supply = <&vdd_3v3_panel>;
+			status = "okay";
+		};
+	};
+
+	pinmux: pinmux@0,70000868 {
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinmux_default>;
+
+		pinmux_default: common {
+			dap_mclk1_pw4 {
+				nvidia,pins = "dap_mclk1_pw4";
+				nvidia,function = "extperiph1";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			dap2_din_pa4 {
+				nvidia,pins = "dap2_din_pa4";
+				nvidia,function = "i2s1";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			dap2_dout_pa5 {
+				nvidia,pins = "dap2_dout_pa5",
+					      "dap2_fs_pa2",
+					      "dap2_sclk_pa3";
+				nvidia,function = "i2s1";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			dvfs_pwm_px0 {
+				nvidia,pins = "dvfs_pwm_px0",
+					      "dvfs_clk_px2";
+				nvidia,function = "cldvfs";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			ulpi_clk_py0 {
+				nvidia,pins = "ulpi_clk_py0",
+					      "ulpi_nxt_py2",
+					      "ulpi_stp_py3";
+				nvidia,function = "spi1";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			ulpi_dir_py1 {
+				nvidia,pins = "ulpi_dir_py1";
+				nvidia,function = "spi1";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			cam_i2c_scl_pbb1 {
+				nvidia,pins = "cam_i2c_scl_pbb1",
+					      "cam_i2c_sda_pbb2";
+				nvidia,function = "i2c3";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,lock = <TEGRA_PIN_DISABLE>;
+				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+			};
+			gen2_i2c_scl_pt5 {
+				nvidia,pins = "gen2_i2c_scl_pt5",
+					      "gen2_i2c_sda_pt6";
+				nvidia,function = "i2c2";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,lock = <TEGRA_PIN_DISABLE>;
+				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+			};
+			pg4 {
+				nvidia,pins = "pg4",
+					      "pg5",
+					      "pg6",
+					      "pi3";
+				nvidia,function = "spi4";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			pg7 {
+				nvidia,pins = "pg7";
+				nvidia,function = "spi4";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			ph1 {
+				nvidia,pins = "ph1";
+				nvidia,function = "pwm1";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			pk0 {
+				nvidia,pins = "pk0",
+					      "kb_row15_ps7",
+					      "clk_32k_out_pa0";
+				nvidia,function = "soc";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			sdmmc1_clk_pz0 {
+				nvidia,pins = "sdmmc1_clk_pz0";
+				nvidia,function = "sdmmc1";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			sdmmc1_cmd_pz1 {
+				nvidia,pins = "sdmmc1_cmd_pz1",
+					      "sdmmc1_dat0_py7",
+					      "sdmmc1_dat1_py6",
+					      "sdmmc1_dat2_py5",
+					      "sdmmc1_dat3_py4";
+				nvidia,function = "sdmmc1";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			sdmmc3_clk_pa6 {
+				nvidia,pins = "sdmmc3_clk_pa6";
+				nvidia,function = "sdmmc3";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			sdmmc3_cmd_pa7 {
+				nvidia,pins = "sdmmc3_cmd_pa7",
+					      "sdmmc3_dat0_pb7",
+					      "sdmmc3_dat1_pb6",
+					      "sdmmc3_dat2_pb5",
+					      "sdmmc3_dat3_pb4",
+					      "kb_col4_pq4",
+					      "sdmmc3_clk_lb_out_pee4",
+					      "sdmmc3_clk_lb_in_pee5",
+					      "sdmmc3_cd_n_pv2";
+				nvidia,function = "sdmmc3";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			sdmmc4_clk_pcc4 {
+				nvidia,pins = "sdmmc4_clk_pcc4";
+				nvidia,function = "sdmmc4";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			sdmmc4_cmd_pt7 {
+				nvidia,pins = "sdmmc4_cmd_pt7",
+					      "sdmmc4_dat0_paa0",
+					      "sdmmc4_dat1_paa1",
+					      "sdmmc4_dat2_paa2",
+					      "sdmmc4_dat3_paa3",
+					      "sdmmc4_dat4_paa4",
+					      "sdmmc4_dat5_paa5",
+					      "sdmmc4_dat6_paa6",
+					      "sdmmc4_dat7_paa7";
+				nvidia,function = "sdmmc4";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			pwr_i2c_scl_pz6 {
+				nvidia,pins = "pwr_i2c_scl_pz6",
+					      "pwr_i2c_sda_pz7";
+				nvidia,function = "i2cpwr";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,lock = <TEGRA_PIN_DISABLE>;
+				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+			};
+			jtag_rtck {
+				nvidia,pins = "jtag_rtck";
+				nvidia,function = "rtck";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			clk_32k_in {
+				nvidia,pins = "clk_32k_in";
+				nvidia,function = "clk";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			core_pwr_req {
+				nvidia,pins = "core_pwr_req";
+				nvidia,function = "pwron";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			cpu_pwr_req {
+				nvidia,pins = "cpu_pwr_req";
+				nvidia,function = "cpu";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			pwr_int_n {
+				nvidia,pins = "pwr_int_n";
+				nvidia,function = "pmi";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			reset_out_n {
+				nvidia,pins = "reset_out_n";
+				nvidia,function = "reset_out_n";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			clk3_out_pee0 {
+				nvidia,pins = "clk3_out_pee0";
+				nvidia,function = "extperiph3";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			gen1_i2c_sda_pc5 {
+				nvidia,pins = "gen1_i2c_sda_pc5",
+					      "gen1_i2c_scl_pc4";
+				nvidia,function = "i2c1";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,lock = <TEGRA_PIN_DISABLE>;
+				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+			};
+			hdmi_cec_pee3 {
+				nvidia,pins = "hdmi_cec_pee3";
+				nvidia,function = "cec";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,lock = <TEGRA_PIN_DISABLE>;
+				nvidia,open-drain = <TEGRA_PIN_DISABLE>;
+			};
+			hdmi_int_pn7 {
+				nvidia,pins = "hdmi_int_pn7";
+				nvidia,function = "rsvd1";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			ddc_scl_pv4 {
+				nvidia,pins = "ddc_scl_pv4",
+					      "ddc_sda_pv5";
+				nvidia,function = "i2c4";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,lock = <TEGRA_PIN_DISABLE>;
+				nvidia,rcv-sel = <TEGRA_PIN_ENABLE>;
+			};
+			kb_row10_ps2 {
+				nvidia,pins = "kb_row10_ps2";
+				nvidia,function = "uarta";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			kb_row9_ps1 {
+				nvidia,pins = "kb_row9_ps1";
+				nvidia,function = "uarta";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			usb_vbus_en0_pn4 {
+				nvidia,pins = "usb_vbus_en0_pn4",
+					      "usb_vbus_en1_pn5";
+				nvidia,function = "usb";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,lock = <TEGRA_PIN_DISABLE>;
+				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+			};
+			drive_sdio1 {
+				nvidia,pins = "drive_sdio1";
+				nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
+				nvidia,schmitt = <TEGRA_PIN_DISABLE>;
+				nvidia,pull-down-strength = <36>;
+				nvidia,pull-up-strength = <20>;
+				nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOW>;
+				nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOW>;
+			};
+			drive_sdio3 {
+				nvidia,pins = "drive_sdio3";
+				nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
+				nvidia,schmitt = <TEGRA_PIN_DISABLE>;
+				nvidia,pull-down-strength = <22>;
+				nvidia,pull-up-strength = <36>;
+				nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
+				nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FASTEST>;
+			};
+			drive_gma {
+				nvidia,pins = "drive_gma";
+				nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
+				nvidia,schmitt = <TEGRA_PIN_DISABLE>;
+				nvidia,pull-down-strength = <2>;
+				nvidia,pull-up-strength = <1>;
+				nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
+				nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FASTEST>;
+				nvidia,drive-type = <1>;
+			};
+			codec_irq_l {
+				nvidia,pins = "ph4";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			lcd_bl_en {
+				nvidia,pins = "ph2";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			touch_irq_l {
+				nvidia,pins = "gpio_w3_aud_pw3";
+				nvidia,function = "spi6";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			tpm_davint_l {
+				nvidia,pins = "ph6";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			ts_irq_l {
+				nvidia,pins = "pk2";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			ts_reset_l {
+				nvidia,pins = "pk4";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			ts_shdn_l {
+				nvidia,pins = "pk1";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			ph7 {
+				nvidia,pins = "ph7";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			kb_col0_ap {
+				nvidia,pins = "kb_col0_pq0";
+				nvidia,function = "rsvd4";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			lid_open {
+				nvidia,pins = "kb_row4_pr4";
+				nvidia,function = "rsvd3";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			en_vdd_sd {
+				nvidia,pins = "kb_row0_pr0";
+				nvidia,function = "rsvd4";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			ac_ok {
+				nvidia,pins = "pj0";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			sensor_irq_l {
+				nvidia,pins = "pi6";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			wifi_en {
+				nvidia,pins = "gpio_x7_aud_px7";
+				nvidia,function = "rsvd4";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			en_vdd_bl {
+				nvidia,pins = "dap3_dout_pp2";
+				nvidia,function = "i2s2";
+				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			en_vdd_hdmi {
+				nvidia,pins = "spdif_in_pk6";
+				nvidia,function = "spdif";
+				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			soc_warm_reset_l {
+				nvidia,pins = "pi5";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			hp_det_l {
+				nvidia,pins = "pi7";
+				nvidia,function = "rsvd1";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			mic_det_l {
+				nvidia,pins = "kb_row7_pr7";
+				nvidia,function = "rsvd2";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+		};
+	};
+
+	serial@0,70006000 {
+		/* Debug connector on the bottom of the board near SD card. */
+		status = "okay";
+	};
+
+	pwm: pwm@0,7000a000 {
+		status = "okay";
+	};
+
+	i2c@0,7000c000 {
+		status = "okay";
+		clock-frequency = <100000>;
+
+		acodec: audio-codec@10 {
+			compatible = "maxim,max98090";
+			reg = <0x10>;
+			interrupt-parent = <&gpio>;
+			interrupts = <TEGRA_GPIO(H, 4) GPIO_ACTIVE_HIGH>;
+		};
+
+		temperature-sensor@4c {
+			compatible = "ti,tmp451";
+			reg = <0x4c>;
+			interrupt-parent = <&gpio>;
+			interrupts = <TEGRA_GPIO(I, 6) IRQ_TYPE_LEVEL_LOW>;
+
+			#thermal-sensor-cells = <1>;
+		};
+	};
+
+	i2c@0,7000c400 {
+		status = "okay";
+		clock-frequency = <100000>;
+	};
+
+	i2c@0,7000c500 {
+		status = "okay";
+		clock-frequency = <400000>;
+
+		tpm@20 {
+			compatible = "infineon,slb9645tt";
+			reg = <0x20>;
+		};
+	};
+
+	hdmi_ddc: i2c@0,7000c700 {
+		status = "okay";
+		clock-frequency = <100000>;
+	};
+
+	i2c@0,7000d000 {
+		status = "okay";
+		clock-frequency = <400000>;
+
+		pmic: pmic@40 {
+			compatible = "ams,as3722";
+			reg = <0x40>;
+			interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>;
+
+			ams,system-power-controller;
+
+			#interrupt-cells = <2>;
+			interrupt-controller;
+
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&as3722_default>;
+
+			as3722_default: pinmux {
+				gpio0 {
+					pins = "gpio0";
+					function = "gpio";
+					bias-pull-down;
+				};
+
+				gpio1 {
+					pins = "gpio1";
+					function = "gpio";
+					bias-pull-up;
+				};
+
+				gpio2_4_7 {
+					pins = "gpio2", "gpio4", "gpio7";
+					function = "gpio";
+					bias-pull-up;
+				};
+
+				gpio3_6 {
+					pins = "gpio3", "gpio6";
+					bias-high-impedance;
+				};
+
+				gpio5 {
+					pins = "gpio5";
+					function = "clk32k-out";
+					bias-pull-down;
+				};
+			};
+
+			regulators {
+				vsup-sd2-supply = <&vdd_5v0_sys>;
+				vsup-sd3-supply = <&vdd_5v0_sys>;
+				vsup-sd4-supply = <&vdd_5v0_sys>;
+				vsup-sd5-supply = <&vdd_5v0_sys>;
+				vin-ldo0-supply = <&vdd_1v35_lp0>;
+				vin-ldo1-6-supply = <&vdd_3v3_run>;
+				vin-ldo2-5-7-supply = <&vddio_1v8>;
+				vin-ldo3-4-supply = <&vdd_3v3_sys>;
+				vin-ldo9-10-supply = <&vdd_5v0_sys>;
+				vin-ldo11-supply = <&vdd_3v3_run>;
+
+				sd0 {
+					regulator-name = "+VDD_CPU_AP";
+					regulator-min-microvolt = <700000>;
+					regulator-max-microvolt = <1350000>;
+					regulator-min-microamp = <3500000>;
+					regulator-max-microamp = <3500000>;
+					regulator-always-on;
+					regulator-boot-on;
+					ams,ext-control = <2>;
+				};
+
+				sd1 {
+					regulator-name = "+VDD_CORE";
+					regulator-min-microvolt = <700000>;
+					regulator-max-microvolt = <1350000>;
+					regulator-min-microamp = <2500000>;
+					regulator-max-microamp = <4000000>;
+					regulator-always-on;
+					regulator-boot-on;
+					ams,ext-control = <1>;
+				};
+
+				vdd_1v35_lp0: sd2 {
+					regulator-name = "+1.35V_LP0(sd2)";
+					regulator-min-microvolt = <1350000>;
+					regulator-max-microvolt = <1350000>;
+					regulator-always-on;
+					regulator-boot-on;
+				};
+
+				sd3 {
+					regulator-name = "+1.35V_LP0(sd3)";
+					regulator-min-microvolt = <1350000>;
+					regulator-max-microvolt = <1350000>;
+					regulator-always-on;
+					regulator-boot-on;
+				};
+
+				vdd_1v05_run: sd4 {
+					regulator-name = "+1.05V_RUN";
+					regulator-min-microvolt = <1050000>;
+					regulator-max-microvolt = <1050000>;
+				};
+
+				vddio_1v8: sd5 {
+					regulator-name = "+1.8V_VDDIO";
+					regulator-min-microvolt = <1800000>;
+					regulator-max-microvolt = <1800000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				sd6 {
+					regulator-name = "+VDD_GPU_AP";
+					regulator-min-microvolt = <650000>;
+					regulator-max-microvolt = <1200000>;
+					regulator-min-microamp = <3500000>;
+					regulator-max-microamp = <3500000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				ldo0 {
+					regulator-name = "+1.05V_RUN_AVDD";
+					regulator-min-microvolt = <1050000>;
+					regulator-max-microvolt = <1050000>;
+					regulator-boot-on;
+					regulator-always-on;
+					ams,ext-control = <1>;
+				};
+
+				ldo1 {
+					regulator-name = "+1.8V_RUN_CAM";
+					regulator-min-microvolt = <1800000>;
+					regulator-max-microvolt = <1800000>;
+				};
+
+				ldo2 {
+					regulator-name = "+1.2V_GEN_AVDD";
+					regulator-min-microvolt = <1200000>;
+					regulator-max-microvolt = <1200000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				ldo3 {
+					regulator-name = "+1.00V_LP0_VDD_RTC";
+					regulator-min-microvolt = <1000000>;
+					regulator-max-microvolt = <1000000>;
+					regulator-boot-on;
+					regulator-always-on;
+					ams,enable-tracking;
+				};
+
+				vdd_run_cam: ldo4 {
+					regulator-name = "+3.3V_RUN_CAM";
+					regulator-min-microvolt = <2800000>;
+					regulator-max-microvolt = <2800000>;
+				};
+
+				ldo5 {
+					regulator-name = "+1.2V_RUN_CAM_FRONT";
+					regulator-min-microvolt = <1200000>;
+					regulator-max-microvolt = <1200000>;
+				};
+
+				vddio_sdmmc3: ldo6 {
+					regulator-name = "+VDDIO_SDMMC3";
+					regulator-min-microvolt = <1800000>;
+					regulator-max-microvolt = <3300000>;
+				};
+
+				ldo7 {
+					regulator-name = "+1.05V_RUN_CAM_REAR";
+					regulator-min-microvolt = <1050000>;
+					regulator-max-microvolt = <1050000>;
+				};
+
+				ldo9 {
+					regulator-name = "+2.8V_RUN_TOUCH";
+					regulator-min-microvolt = <2800000>;
+					regulator-max-microvolt = <2800000>;
+				};
+
+				ldo10 {
+					regulator-name = "+2.8V_RUN_CAM_AF";
+					regulator-min-microvolt = <2800000>;
+					regulator-max-microvolt = <2800000>;
+				};
+
+				ldo11 {
+					regulator-name = "+1.8V_RUN_VPP_FUSE";
+					regulator-min-microvolt = <1800000>;
+					regulator-max-microvolt = <1800000>;
+				};
+			};
+		};
+	};
+
+	spi@0,7000d400 {
+		status = "okay";
+
+		cros_ec: cros-ec@0 {
+			compatible = "google,cros-ec-spi";
+			spi-max-frequency = <3000000>;
+			interrupt-parent = <&gpio>;
+			interrupts = <TEGRA_GPIO(C, 7) IRQ_TYPE_LEVEL_LOW>;
+			reg = <0>;
+
+			google,cros-ec-spi-msg-delay = <2000>;
+
+			i2c-tunnel {
+				compatible = "google,cros-ec-i2c-tunnel";
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				google,remote-bus = <0>;
+
+				charger: bq24735@9 {
+					compatible = "ti,bq24735";
+					reg = <0x9>;
+					interrupt-parent = <&gpio>;
+					interrupts = <TEGRA_GPIO(J, 0)
+							GPIO_ACTIVE_HIGH>;
+					ti,ac-detect-gpios = <&gpio
+							TEGRA_GPIO(J, 0)
+							GPIO_ACTIVE_HIGH>;
+				};
+
+				battery: sbs-battery@b {
+					compatible = "sbs,sbs-battery";
+					reg = <0xb>;
+					sbs,i2c-retry-count = <2>;
+					sbs,poll-retry-count = <10>;
+					power-supplies = <&charger>;
+				};
+			};
+		};
+	};
+
+	spi@0,7000da00 {
+		status = "okay";
+		spi-max-frequency = <25000000>;
+
+		flash@0 {
+			compatible = "winbond,w25q32dw";
+			reg = <0>;
+		};
+	};
+
+	pmc@0,7000e400 {
+		nvidia,invert-interrupt;
+		nvidia,suspend-mode = <0>;
+		nvidia,cpu-pwr-good-time = <500>;
+		nvidia,cpu-pwr-off-time = <300>;
+		nvidia,core-pwr-good-time = <641 3845>;
+		nvidia,core-pwr-off-time = <61036>;
+		nvidia,core-power-req-active-high;
+		nvidia,sys-clock-req-active-high;
+	};
+
+	hda@0,70030000 {
+		status = "okay";
+	};
+
+	sdhci@0,700b0000 { /* WiFi/BT on this bus */
+		status = "okay";
+		power-gpios = <&gpio TEGRA_GPIO(X, 7) GPIO_ACTIVE_HIGH>;
+		bus-width = <4>;
+		no-1-8-v;
+		non-removable;
+	};
+
+	sdhci@0,700b0400 { /* SD Card on this bus */
+		status = "okay";
+		cd-gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>;
+		power-gpios = <&gpio TEGRA_GPIO(R, 0) GPIO_ACTIVE_HIGH>;
+		wp-gpios = <&gpio TEGRA_GPIO(Q, 4) GPIO_ACTIVE_LOW>;
+		bus-width = <4>;
+		no-1-8-v;
+		vqmmc-supply = <&vddio_sdmmc3>;
+	};
+
+	sdhci@0,700b0600 { /* eMMC on this bus */
+		status = "okay";
+		bus-width = <8>;
+		no-1-8-v;
+		non-removable;
+	};
+
+	ahub@0,70300000 {
+		i2s@0,70301100 {
+			status = "okay";
+		};
+	};
+
+	usb@0,7d000000 { /* Rear external USB port. */
+		status = "okay";
+	};
+
+	usb-phy@0,7d000000 {
+		status = "okay";
+		vbus-supply = <&vdd_usb1_vbus>;
+	};
+
+	usb@0,7d004000 { /* Internal webcam. */
+		status = "okay";
+	};
+
+	usb-phy@0,7d004000 {
+		status = "okay";
+		vbus-supply = <&vdd_run_cam>;
+	};
+
+	usb@0,7d008000 { /* Left external USB port. */
+		status = "okay";
+	};
+
+	usb-phy@0,7d008000 {
+		status = "okay";
+		vbus-supply = <&vdd_usb3_vbus>;
+	};
+
+	backlight: backlight {
+		compatible = "pwm-backlight";
+
+		enable-gpios = <&gpio TEGRA_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
+		power-supply = <&vdd_led>;
+		pwms = <&pwm 1 1000000>;
+
+		default-brightness-level = <224>;
+		brightness-levels =
+			<  0   1   2   3   4   5   6   7
+			   8   9  10  11  12  13  14  15
+			  16  17  18  19  20  21  22  23
+			  24  25  26  27  28  29  30  31
+			  32  33  34  35  36  37  38  39
+			  40  41  42  43  44  45  46  47
+			  48  49  50  51  52  53  54  55
+			  56  57  58  59  60  61  62  63
+			  64  65  66  67  68  69  70  71
+			  72  73  74  75  76  77  78  79
+			  80  81  82  83  84  85  86  87
+			  88  89  90  91  92  93  94  95
+			  96  97  98  99 100 101 102 103
+			 104 105 106 107 108 109 110 111
+			 112 113 114 115 116 117 118 119
+			 120 121 122 123 124 125 126 127
+			 128 129 130 131 132 133 134 135
+			 136 137 138 139 140 141 142 143
+			 144 145 146 147 148 149 150 151
+			 152 153 154 155 156 157 158 159
+			 160 161 162 163 164 165 166 167
+			 168 169 170 171 172 173 174 175
+			 176 177 178 179 180 181 182 183
+			 184 185 186 187 188 189 190 191
+			 192 193 194 195 196 197 198 199
+			 200 201 202 203 204 205 206 207
+			 208 209 210 211 212 213 214 215
+			 216 217 218 219 220 221 222 223
+			 224 225 226 227 228 229 230 231
+			 232 233 234 235 236 237 238 239
+			 240 241 242 243 244 245 246 247
+			 248 249 250 251 252 253 254 255
+			 256>;
+	};
+
+	clocks {
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		clk32k_in: clock@0 {
+			compatible = "fixed-clock";
+			reg = <0>;
+			#clock-cells = <0>;
+			clock-frequency = <32768>;
+		};
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+
+		lid {
+			label = "Lid";
+			gpios = <&gpio TEGRA_GPIO(R, 4) GPIO_ACTIVE_LOW>;
+			linux,input-type = <5>;
+			linux,code = <KEY_RESERVED>;
+			debounce-interval = <1>;
+			gpio-key,wakeup;
+		};
+
+		power {
+			label = "Power";
+			gpios = <&gpio TEGRA_GPIO(Q, 0) GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_POWER>;
+			debounce-interval = <30>;
+			gpio-key,wakeup;
+		};
+	};
+
+	panel: panel {
+		compatible = "auo,b133xtn01";
+
+		backlight = <&backlight>;
+		ddc-i2c-bus = <&dpaux>;
+	};
+
+	regulators {
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		vdd_mux: regulator@0 {
+			compatible = "regulator-fixed";
+			reg = <0>;
+			regulator-name = "+VDD_MUX";
+			regulator-min-microvolt = <12000000>;
+			regulator-max-microvolt = <12000000>;
+			regulator-always-on;
+			regulator-boot-on;
+		};
+
+		vdd_5v0_sys: regulator@1 {
+			compatible = "regulator-fixed";
+			reg = <1>;
+			regulator-name = "+5V_SYS";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			regulator-always-on;
+			regulator-boot-on;
+			vin-supply = <&vdd_mux>;
+		};
+
+		vdd_3v3_sys: regulator@2 {
+			compatible = "regulator-fixed";
+			reg = <2>;
+			regulator-name = "+3.3V_SYS";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			regulator-always-on;
+			regulator-boot-on;
+			vin-supply = <&vdd_mux>;
+		};
+
+		vdd_3v3_run: regulator@3 {
+			compatible = "regulator-fixed";
+			reg = <3>;
+			regulator-name = "+3.3V_RUN";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			regulator-always-on;
+			regulator-boot-on;
+			gpio = <&pmic 1 GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			vin-supply = <&vdd_3v3_sys>;
+		};
+
+		vdd_3v3_hdmi: regulator@4 {
+			compatible = "regulator-fixed";
+			reg = <4>;
+			regulator-name = "+3.3V_AVDD_HDMI_AP_GATED";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			vin-supply = <&vdd_3v3_run>;
+		};
+
+		vdd_led: regulator@5 {
+			compatible = "regulator-fixed";
+			reg = <5>;
+			regulator-name = "+VDD_LED";
+			gpio = <&gpio TEGRA_GPIO(P, 2) GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			vin-supply = <&vdd_mux>;
+		};
+
+		vdd_5v0_ts: regulator@6 {
+			compatible = "regulator-fixed";
+			reg = <6>;
+			regulator-name = "+5V_VDD_TS_SW";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			regulator-boot-on;
+			gpio = <&gpio TEGRA_GPIO(K, 1) GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			vin-supply = <&vdd_5v0_sys>;
+		};
+
+		vdd_usb1_vbus: regulator@7 {
+			compatible = "regulator-fixed";
+			reg = <7>;
+			regulator-name = "+5V_USB_HS";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio TEGRA_GPIO(N, 4) GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			gpio-open-drain;
+			vin-supply = <&vdd_5v0_sys>;
+		};
+
+		vdd_usb3_vbus: regulator@8 {
+			compatible = "regulator-fixed";
+			reg = <8>;
+			regulator-name = "+5V_USB_SS";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio TEGRA_GPIO(N, 5) GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			gpio-open-drain;
+			vin-supply = <&vdd_5v0_sys>;
+		};
+
+		vdd_3v3_panel: regulator@9 {
+			compatible = "regulator-fixed";
+			reg = <9>;
+			regulator-name = "+3.3V_PANEL";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			gpio = <&pmic 4 GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			vin-supply = <&vdd_3v3_run>;
+		};
+
+		vdd_3v3_lp0: regulator@10 {
+			compatible = "regulator-fixed";
+			reg = <10>;
+			regulator-name = "+3.3V_LP0";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			/*
+			 * TODO: find a way to wire this up with the USB EHCI
+			 * controllers so that it can be enabled on demand.
+			 */
+			regulator-always-on;
+			gpio = <&pmic 2 GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			vin-supply = <&vdd_3v3_sys>;
+		};
+
+		vdd_hdmi_pll: regulator@11 {
+			compatible = "regulator-fixed";
+			reg = <11>;
+			regulator-name = "+1.05V_RUN_AVDD_HDMI_PLL";
+			regulator-min-microvolt = <1050000>;
+			regulator-max-microvolt = <1050000>;
+			gpio = <&gpio TEGRA_GPIO(H, 7) GPIO_ACTIVE_LOW>;
+			vin-supply = <&vdd_1v05_run>;
+		};
+
+		vdd_5v0_hdmi: regulator@12 {
+			compatible = "regulator-fixed";
+			reg = <12>;
+			regulator-name = "+5V_HDMI_CON";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio TEGRA_GPIO(K, 6) GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			vin-supply = <&vdd_5v0_sys>;
+		};
+	};
+
+	sound {
+		compatible = "nvidia,tegra-audio-max98090-nyan-big",
+			     "nvidia,tegra-audio-max98090";
+		nvidia,model = "Acer Chromebook 13";
+
+		nvidia,audio-routing =
+			"Headphones", "HPR",
+			"Headphones", "HPL",
+			"Speakers", "SPKR",
+			"Speakers", "SPKL",
+			"Mic Jack", "MICBIAS",
+			"DMICL", "Int Mic",
+			"DMICR", "Int Mic",
+			"IN34", "Mic Jack";
+
+		nvidia,i2s-controller = <&tegra_i2s1>;
+		nvidia,audio-codec = <&acodec>;
+
+		clocks = <&tegra_car TEGRA124_CLK_PLL_A>,
+			 <&tegra_car TEGRA124_CLK_PLL_A_OUT0>,
+			 <&tegra_car TEGRA124_CLK_EXTERN1>;
+		clock-names = "pll_a", "pll_a_out0", "mclk";
+
+		nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(I, 7) GPIO_ACTIVE_HIGH>;
+	};
+};
+
+#include "cros-ec-keyboard.dtsi"
-- 
2.1.0.rc2.206.gedb03e5

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-13 19:14 ` Dylan Reid
  0 siblings, 0 replies; 42+ messages in thread
From: Dylan Reid @ 2014-08-13 19:14 UTC (permalink / raw)
  To: linux-arm-kernel

The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
processor and is similar to the Venice2 reference platform.

The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
and work on the 1266x768 models.  The HD models haven't yet been
tested.

WiFi does not work yet, it needs at least some PMIC changes to enable
the 32k clock.

The elan trackpad is not yet functional but hopefully will be soon as
there are patches under review.

There is also an issue on reboot because the TPM isn't reset.  It will
cause the stock firmware to enter recovery mode.  This can be worked
around by an EC-reset, press the refresh and power keys at the same
time.

Signed-off-by: Dylan Reid <dgreid@chromium.org>
---
 arch/arm/boot/dts/Makefile              |    1 +
 arch/arm/boot/dts/tegra124-nyan-big.dts | 1136 +++++++++++++++++++++++++++++++
 2 files changed, 1137 insertions(+)
 create mode 100644 arch/arm/boot/dts/tegra124-nyan-big.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index acb6b42..bebb4e7 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -439,6 +439,7 @@ dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \
 	tegra114-dalmore.dtb \
 	tegra114-roth.dtb \
 	tegra114-tn7.dtb \
+	tegra124-nyan-big.dtb \
 	tegra124-jetson-tk1.dtb \
 	tegra124-venice2.dtb
 dtb-$(CONFIG_ARCH_U300) += ste-u300.dtb
diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts b/arch/arm/boot/dts/tegra124-nyan-big.dts
new file mode 100644
index 0000000..79f1852
--- /dev/null
+++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
@@ -0,0 +1,1136 @@
+/dts-v1/;
+
+#include <dt-bindings/input/input.h>
+#include "tegra124.dtsi"
+
+/ {
+	model = "Acer Chromebook 13";
+	compatible = "google,nyan-big", "nvidia,tegra124";
+
+	aliases {
+		rtc0 = "/i2c at 0,7000d000/pmic at 40";
+		rtc1 = "/rtc at 0,7000e000";
+	};
+
+	memory {
+		reg = <0x0 0x80000000 0x0 0x80000000>;
+	};
+
+	host1x at 0,50000000 {
+		hdmi at 0,54280000 {
+			status = "okay";
+
+			vdd-supply = <&vdd_3v3_hdmi>;
+			pll-supply = <&vdd_hdmi_pll>;
+			hdmi-supply = <&vdd_5v0_hdmi>;
+
+			nvidia,ddc-i2c-bus = <&hdmi_ddc>;
+			nvidia,hpd-gpio =
+				<&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>;
+		};
+
+		sor at 0,54540000 {
+			status = "okay";
+
+			nvidia,dpaux = <&dpaux>;
+			nvidia,panel = <&panel>;
+		};
+
+		dpaux: dpaux at 0,545c0000 {
+			vdd-supply = <&vdd_3v3_panel>;
+			status = "okay";
+		};
+	};
+
+	pinmux: pinmux at 0,70000868 {
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinmux_default>;
+
+		pinmux_default: common {
+			dap_mclk1_pw4 {
+				nvidia,pins = "dap_mclk1_pw4";
+				nvidia,function = "extperiph1";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			dap2_din_pa4 {
+				nvidia,pins = "dap2_din_pa4";
+				nvidia,function = "i2s1";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			dap2_dout_pa5 {
+				nvidia,pins = "dap2_dout_pa5",
+					      "dap2_fs_pa2",
+					      "dap2_sclk_pa3";
+				nvidia,function = "i2s1";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			dvfs_pwm_px0 {
+				nvidia,pins = "dvfs_pwm_px0",
+					      "dvfs_clk_px2";
+				nvidia,function = "cldvfs";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			ulpi_clk_py0 {
+				nvidia,pins = "ulpi_clk_py0",
+					      "ulpi_nxt_py2",
+					      "ulpi_stp_py3";
+				nvidia,function = "spi1";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			ulpi_dir_py1 {
+				nvidia,pins = "ulpi_dir_py1";
+				nvidia,function = "spi1";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			cam_i2c_scl_pbb1 {
+				nvidia,pins = "cam_i2c_scl_pbb1",
+					      "cam_i2c_sda_pbb2";
+				nvidia,function = "i2c3";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,lock = <TEGRA_PIN_DISABLE>;
+				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+			};
+			gen2_i2c_scl_pt5 {
+				nvidia,pins = "gen2_i2c_scl_pt5",
+					      "gen2_i2c_sda_pt6";
+				nvidia,function = "i2c2";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,lock = <TEGRA_PIN_DISABLE>;
+				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+			};
+			pg4 {
+				nvidia,pins = "pg4",
+					      "pg5",
+					      "pg6",
+					      "pi3";
+				nvidia,function = "spi4";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			pg7 {
+				nvidia,pins = "pg7";
+				nvidia,function = "spi4";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			ph1 {
+				nvidia,pins = "ph1";
+				nvidia,function = "pwm1";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			pk0 {
+				nvidia,pins = "pk0",
+					      "kb_row15_ps7",
+					      "clk_32k_out_pa0";
+				nvidia,function = "soc";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			sdmmc1_clk_pz0 {
+				nvidia,pins = "sdmmc1_clk_pz0";
+				nvidia,function = "sdmmc1";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			sdmmc1_cmd_pz1 {
+				nvidia,pins = "sdmmc1_cmd_pz1",
+					      "sdmmc1_dat0_py7",
+					      "sdmmc1_dat1_py6",
+					      "sdmmc1_dat2_py5",
+					      "sdmmc1_dat3_py4";
+				nvidia,function = "sdmmc1";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			sdmmc3_clk_pa6 {
+				nvidia,pins = "sdmmc3_clk_pa6";
+				nvidia,function = "sdmmc3";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			sdmmc3_cmd_pa7 {
+				nvidia,pins = "sdmmc3_cmd_pa7",
+					      "sdmmc3_dat0_pb7",
+					      "sdmmc3_dat1_pb6",
+					      "sdmmc3_dat2_pb5",
+					      "sdmmc3_dat3_pb4",
+					      "kb_col4_pq4",
+					      "sdmmc3_clk_lb_out_pee4",
+					      "sdmmc3_clk_lb_in_pee5",
+					      "sdmmc3_cd_n_pv2";
+				nvidia,function = "sdmmc3";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			sdmmc4_clk_pcc4 {
+				nvidia,pins = "sdmmc4_clk_pcc4";
+				nvidia,function = "sdmmc4";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			sdmmc4_cmd_pt7 {
+				nvidia,pins = "sdmmc4_cmd_pt7",
+					      "sdmmc4_dat0_paa0",
+					      "sdmmc4_dat1_paa1",
+					      "sdmmc4_dat2_paa2",
+					      "sdmmc4_dat3_paa3",
+					      "sdmmc4_dat4_paa4",
+					      "sdmmc4_dat5_paa5",
+					      "sdmmc4_dat6_paa6",
+					      "sdmmc4_dat7_paa7";
+				nvidia,function = "sdmmc4";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			pwr_i2c_scl_pz6 {
+				nvidia,pins = "pwr_i2c_scl_pz6",
+					      "pwr_i2c_sda_pz7";
+				nvidia,function = "i2cpwr";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,lock = <TEGRA_PIN_DISABLE>;
+				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+			};
+			jtag_rtck {
+				nvidia,pins = "jtag_rtck";
+				nvidia,function = "rtck";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			clk_32k_in {
+				nvidia,pins = "clk_32k_in";
+				nvidia,function = "clk";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			core_pwr_req {
+				nvidia,pins = "core_pwr_req";
+				nvidia,function = "pwron";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			cpu_pwr_req {
+				nvidia,pins = "cpu_pwr_req";
+				nvidia,function = "cpu";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			pwr_int_n {
+				nvidia,pins = "pwr_int_n";
+				nvidia,function = "pmi";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			reset_out_n {
+				nvidia,pins = "reset_out_n";
+				nvidia,function = "reset_out_n";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			clk3_out_pee0 {
+				nvidia,pins = "clk3_out_pee0";
+				nvidia,function = "extperiph3";
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			gen1_i2c_sda_pc5 {
+				nvidia,pins = "gen1_i2c_sda_pc5",
+					      "gen1_i2c_scl_pc4";
+				nvidia,function = "i2c1";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,lock = <TEGRA_PIN_DISABLE>;
+				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+			};
+			hdmi_cec_pee3 {
+				nvidia,pins = "hdmi_cec_pee3";
+				nvidia,function = "cec";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,lock = <TEGRA_PIN_DISABLE>;
+				nvidia,open-drain = <TEGRA_PIN_DISABLE>;
+			};
+			hdmi_int_pn7 {
+				nvidia,pins = "hdmi_int_pn7";
+				nvidia,function = "rsvd1";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+			};
+			ddc_scl_pv4 {
+				nvidia,pins = "ddc_scl_pv4",
+					      "ddc_sda_pv5";
+				nvidia,function = "i2c4";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,lock = <TEGRA_PIN_DISABLE>;
+				nvidia,rcv-sel = <TEGRA_PIN_ENABLE>;
+			};
+			kb_row10_ps2 {
+				nvidia,pins = "kb_row10_ps2";
+				nvidia,function = "uarta";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			kb_row9_ps1 {
+				nvidia,pins = "kb_row9_ps1";
+				nvidia,function = "uarta";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			usb_vbus_en0_pn4 {
+				nvidia,pins = "usb_vbus_en0_pn4",
+					      "usb_vbus_en1_pn5";
+				nvidia,function = "usb";
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,lock = <TEGRA_PIN_DISABLE>;
+				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+			};
+			drive_sdio1 {
+				nvidia,pins = "drive_sdio1";
+				nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
+				nvidia,schmitt = <TEGRA_PIN_DISABLE>;
+				nvidia,pull-down-strength = <36>;
+				nvidia,pull-up-strength = <20>;
+				nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOW>;
+				nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOW>;
+			};
+			drive_sdio3 {
+				nvidia,pins = "drive_sdio3";
+				nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
+				nvidia,schmitt = <TEGRA_PIN_DISABLE>;
+				nvidia,pull-down-strength = <22>;
+				nvidia,pull-up-strength = <36>;
+				nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
+				nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FASTEST>;
+			};
+			drive_gma {
+				nvidia,pins = "drive_gma";
+				nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
+				nvidia,schmitt = <TEGRA_PIN_DISABLE>;
+				nvidia,pull-down-strength = <2>;
+				nvidia,pull-up-strength = <1>;
+				nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
+				nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FASTEST>;
+				nvidia,drive-type = <1>;
+			};
+			codec_irq_l {
+				nvidia,pins = "ph4";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			lcd_bl_en {
+				nvidia,pins = "ph2";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			touch_irq_l {
+				nvidia,pins = "gpio_w3_aud_pw3";
+				nvidia,function = "spi6";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			tpm_davint_l {
+				nvidia,pins = "ph6";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			ts_irq_l {
+				nvidia,pins = "pk2";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			ts_reset_l {
+				nvidia,pins = "pk4";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			ts_shdn_l {
+				nvidia,pins = "pk1";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			ph7 {
+				nvidia,pins = "ph7";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			kb_col0_ap {
+				nvidia,pins = "kb_col0_pq0";
+				nvidia,function = "rsvd4";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			lid_open {
+				nvidia,pins = "kb_row4_pr4";
+				nvidia,function = "rsvd3";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			en_vdd_sd {
+				nvidia,pins = "kb_row0_pr0";
+				nvidia,function = "rsvd4";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			ac_ok {
+				nvidia,pins = "pj0";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			sensor_irq_l {
+				nvidia,pins = "pi6";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			wifi_en {
+				nvidia,pins = "gpio_x7_aud_px7";
+				nvidia,function = "rsvd4";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			en_vdd_bl {
+				nvidia,pins = "dap3_dout_pp2";
+				nvidia,function = "i2s2";
+				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			en_vdd_hdmi {
+				nvidia,pins = "spdif_in_pk6";
+				nvidia,function = "spdif";
+				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			soc_warm_reset_l {
+				nvidia,pins = "pi5";
+				nvidia,function = "gmi";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			hp_det_l {
+				nvidia,pins = "pi7";
+				nvidia,function = "rsvd1";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			mic_det_l {
+				nvidia,pins = "kb_row7_pr7";
+				nvidia,function = "rsvd2";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+		};
+	};
+
+	serial at 0,70006000 {
+		/* Debug connector on the bottom of the board near SD card. */
+		status = "okay";
+	};
+
+	pwm: pwm at 0,7000a000 {
+		status = "okay";
+	};
+
+	i2c at 0,7000c000 {
+		status = "okay";
+		clock-frequency = <100000>;
+
+		acodec: audio-codec at 10 {
+			compatible = "maxim,max98090";
+			reg = <0x10>;
+			interrupt-parent = <&gpio>;
+			interrupts = <TEGRA_GPIO(H, 4) GPIO_ACTIVE_HIGH>;
+		};
+
+		temperature-sensor at 4c {
+			compatible = "ti,tmp451";
+			reg = <0x4c>;
+			interrupt-parent = <&gpio>;
+			interrupts = <TEGRA_GPIO(I, 6) IRQ_TYPE_LEVEL_LOW>;
+
+			#thermal-sensor-cells = <1>;
+		};
+	};
+
+	i2c at 0,7000c400 {
+		status = "okay";
+		clock-frequency = <100000>;
+	};
+
+	i2c at 0,7000c500 {
+		status = "okay";
+		clock-frequency = <400000>;
+
+		tpm at 20 {
+			compatible = "infineon,slb9645tt";
+			reg = <0x20>;
+		};
+	};
+
+	hdmi_ddc: i2c at 0,7000c700 {
+		status = "okay";
+		clock-frequency = <100000>;
+	};
+
+	i2c at 0,7000d000 {
+		status = "okay";
+		clock-frequency = <400000>;
+
+		pmic: pmic at 40 {
+			compatible = "ams,as3722";
+			reg = <0x40>;
+			interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>;
+
+			ams,system-power-controller;
+
+			#interrupt-cells = <2>;
+			interrupt-controller;
+
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&as3722_default>;
+
+			as3722_default: pinmux {
+				gpio0 {
+					pins = "gpio0";
+					function = "gpio";
+					bias-pull-down;
+				};
+
+				gpio1 {
+					pins = "gpio1";
+					function = "gpio";
+					bias-pull-up;
+				};
+
+				gpio2_4_7 {
+					pins = "gpio2", "gpio4", "gpio7";
+					function = "gpio";
+					bias-pull-up;
+				};
+
+				gpio3_6 {
+					pins = "gpio3", "gpio6";
+					bias-high-impedance;
+				};
+
+				gpio5 {
+					pins = "gpio5";
+					function = "clk32k-out";
+					bias-pull-down;
+				};
+			};
+
+			regulators {
+				vsup-sd2-supply = <&vdd_5v0_sys>;
+				vsup-sd3-supply = <&vdd_5v0_sys>;
+				vsup-sd4-supply = <&vdd_5v0_sys>;
+				vsup-sd5-supply = <&vdd_5v0_sys>;
+				vin-ldo0-supply = <&vdd_1v35_lp0>;
+				vin-ldo1-6-supply = <&vdd_3v3_run>;
+				vin-ldo2-5-7-supply = <&vddio_1v8>;
+				vin-ldo3-4-supply = <&vdd_3v3_sys>;
+				vin-ldo9-10-supply = <&vdd_5v0_sys>;
+				vin-ldo11-supply = <&vdd_3v3_run>;
+
+				sd0 {
+					regulator-name = "+VDD_CPU_AP";
+					regulator-min-microvolt = <700000>;
+					regulator-max-microvolt = <1350000>;
+					regulator-min-microamp = <3500000>;
+					regulator-max-microamp = <3500000>;
+					regulator-always-on;
+					regulator-boot-on;
+					ams,ext-control = <2>;
+				};
+
+				sd1 {
+					regulator-name = "+VDD_CORE";
+					regulator-min-microvolt = <700000>;
+					regulator-max-microvolt = <1350000>;
+					regulator-min-microamp = <2500000>;
+					regulator-max-microamp = <4000000>;
+					regulator-always-on;
+					regulator-boot-on;
+					ams,ext-control = <1>;
+				};
+
+				vdd_1v35_lp0: sd2 {
+					regulator-name = "+1.35V_LP0(sd2)";
+					regulator-min-microvolt = <1350000>;
+					regulator-max-microvolt = <1350000>;
+					regulator-always-on;
+					regulator-boot-on;
+				};
+
+				sd3 {
+					regulator-name = "+1.35V_LP0(sd3)";
+					regulator-min-microvolt = <1350000>;
+					regulator-max-microvolt = <1350000>;
+					regulator-always-on;
+					regulator-boot-on;
+				};
+
+				vdd_1v05_run: sd4 {
+					regulator-name = "+1.05V_RUN";
+					regulator-min-microvolt = <1050000>;
+					regulator-max-microvolt = <1050000>;
+				};
+
+				vddio_1v8: sd5 {
+					regulator-name = "+1.8V_VDDIO";
+					regulator-min-microvolt = <1800000>;
+					regulator-max-microvolt = <1800000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				sd6 {
+					regulator-name = "+VDD_GPU_AP";
+					regulator-min-microvolt = <650000>;
+					regulator-max-microvolt = <1200000>;
+					regulator-min-microamp = <3500000>;
+					regulator-max-microamp = <3500000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				ldo0 {
+					regulator-name = "+1.05V_RUN_AVDD";
+					regulator-min-microvolt = <1050000>;
+					regulator-max-microvolt = <1050000>;
+					regulator-boot-on;
+					regulator-always-on;
+					ams,ext-control = <1>;
+				};
+
+				ldo1 {
+					regulator-name = "+1.8V_RUN_CAM";
+					regulator-min-microvolt = <1800000>;
+					regulator-max-microvolt = <1800000>;
+				};
+
+				ldo2 {
+					regulator-name = "+1.2V_GEN_AVDD";
+					regulator-min-microvolt = <1200000>;
+					regulator-max-microvolt = <1200000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				ldo3 {
+					regulator-name = "+1.00V_LP0_VDD_RTC";
+					regulator-min-microvolt = <1000000>;
+					regulator-max-microvolt = <1000000>;
+					regulator-boot-on;
+					regulator-always-on;
+					ams,enable-tracking;
+				};
+
+				vdd_run_cam: ldo4 {
+					regulator-name = "+3.3V_RUN_CAM";
+					regulator-min-microvolt = <2800000>;
+					regulator-max-microvolt = <2800000>;
+				};
+
+				ldo5 {
+					regulator-name = "+1.2V_RUN_CAM_FRONT";
+					regulator-min-microvolt = <1200000>;
+					regulator-max-microvolt = <1200000>;
+				};
+
+				vddio_sdmmc3: ldo6 {
+					regulator-name = "+VDDIO_SDMMC3";
+					regulator-min-microvolt = <1800000>;
+					regulator-max-microvolt = <3300000>;
+				};
+
+				ldo7 {
+					regulator-name = "+1.05V_RUN_CAM_REAR";
+					regulator-min-microvolt = <1050000>;
+					regulator-max-microvolt = <1050000>;
+				};
+
+				ldo9 {
+					regulator-name = "+2.8V_RUN_TOUCH";
+					regulator-min-microvolt = <2800000>;
+					regulator-max-microvolt = <2800000>;
+				};
+
+				ldo10 {
+					regulator-name = "+2.8V_RUN_CAM_AF";
+					regulator-min-microvolt = <2800000>;
+					regulator-max-microvolt = <2800000>;
+				};
+
+				ldo11 {
+					regulator-name = "+1.8V_RUN_VPP_FUSE";
+					regulator-min-microvolt = <1800000>;
+					regulator-max-microvolt = <1800000>;
+				};
+			};
+		};
+	};
+
+	spi at 0,7000d400 {
+		status = "okay";
+
+		cros_ec: cros-ec at 0 {
+			compatible = "google,cros-ec-spi";
+			spi-max-frequency = <3000000>;
+			interrupt-parent = <&gpio>;
+			interrupts = <TEGRA_GPIO(C, 7) IRQ_TYPE_LEVEL_LOW>;
+			reg = <0>;
+
+			google,cros-ec-spi-msg-delay = <2000>;
+
+			i2c-tunnel {
+				compatible = "google,cros-ec-i2c-tunnel";
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				google,remote-bus = <0>;
+
+				charger: bq24735 at 9 {
+					compatible = "ti,bq24735";
+					reg = <0x9>;
+					interrupt-parent = <&gpio>;
+					interrupts = <TEGRA_GPIO(J, 0)
+							GPIO_ACTIVE_HIGH>;
+					ti,ac-detect-gpios = <&gpio
+							TEGRA_GPIO(J, 0)
+							GPIO_ACTIVE_HIGH>;
+				};
+
+				battery: sbs-battery at b {
+					compatible = "sbs,sbs-battery";
+					reg = <0xb>;
+					sbs,i2c-retry-count = <2>;
+					sbs,poll-retry-count = <10>;
+					power-supplies = <&charger>;
+				};
+			};
+		};
+	};
+
+	spi at 0,7000da00 {
+		status = "okay";
+		spi-max-frequency = <25000000>;
+
+		flash at 0 {
+			compatible = "winbond,w25q32dw";
+			reg = <0>;
+		};
+	};
+
+	pmc at 0,7000e400 {
+		nvidia,invert-interrupt;
+		nvidia,suspend-mode = <0>;
+		nvidia,cpu-pwr-good-time = <500>;
+		nvidia,cpu-pwr-off-time = <300>;
+		nvidia,core-pwr-good-time = <641 3845>;
+		nvidia,core-pwr-off-time = <61036>;
+		nvidia,core-power-req-active-high;
+		nvidia,sys-clock-req-active-high;
+	};
+
+	hda at 0,70030000 {
+		status = "okay";
+	};
+
+	sdhci at 0,700b0000 { /* WiFi/BT on this bus */
+		status = "okay";
+		power-gpios = <&gpio TEGRA_GPIO(X, 7) GPIO_ACTIVE_HIGH>;
+		bus-width = <4>;
+		no-1-8-v;
+		non-removable;
+	};
+
+	sdhci at 0,700b0400 { /* SD Card on this bus */
+		status = "okay";
+		cd-gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>;
+		power-gpios = <&gpio TEGRA_GPIO(R, 0) GPIO_ACTIVE_HIGH>;
+		wp-gpios = <&gpio TEGRA_GPIO(Q, 4) GPIO_ACTIVE_LOW>;
+		bus-width = <4>;
+		no-1-8-v;
+		vqmmc-supply = <&vddio_sdmmc3>;
+	};
+
+	sdhci at 0,700b0600 { /* eMMC on this bus */
+		status = "okay";
+		bus-width = <8>;
+		no-1-8-v;
+		non-removable;
+	};
+
+	ahub at 0,70300000 {
+		i2s at 0,70301100 {
+			status = "okay";
+		};
+	};
+
+	usb at 0,7d000000 { /* Rear external USB port. */
+		status = "okay";
+	};
+
+	usb-phy at 0,7d000000 {
+		status = "okay";
+		vbus-supply = <&vdd_usb1_vbus>;
+	};
+
+	usb at 0,7d004000 { /* Internal webcam. */
+		status = "okay";
+	};
+
+	usb-phy at 0,7d004000 {
+		status = "okay";
+		vbus-supply = <&vdd_run_cam>;
+	};
+
+	usb at 0,7d008000 { /* Left external USB port. */
+		status = "okay";
+	};
+
+	usb-phy at 0,7d008000 {
+		status = "okay";
+		vbus-supply = <&vdd_usb3_vbus>;
+	};
+
+	backlight: backlight {
+		compatible = "pwm-backlight";
+
+		enable-gpios = <&gpio TEGRA_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
+		power-supply = <&vdd_led>;
+		pwms = <&pwm 1 1000000>;
+
+		default-brightness-level = <224>;
+		brightness-levels =
+			<  0   1   2   3   4   5   6   7
+			   8   9  10  11  12  13  14  15
+			  16  17  18  19  20  21  22  23
+			  24  25  26  27  28  29  30  31
+			  32  33  34  35  36  37  38  39
+			  40  41  42  43  44  45  46  47
+			  48  49  50  51  52  53  54  55
+			  56  57  58  59  60  61  62  63
+			  64  65  66  67  68  69  70  71
+			  72  73  74  75  76  77  78  79
+			  80  81  82  83  84  85  86  87
+			  88  89  90  91  92  93  94  95
+			  96  97  98  99 100 101 102 103
+			 104 105 106 107 108 109 110 111
+			 112 113 114 115 116 117 118 119
+			 120 121 122 123 124 125 126 127
+			 128 129 130 131 132 133 134 135
+			 136 137 138 139 140 141 142 143
+			 144 145 146 147 148 149 150 151
+			 152 153 154 155 156 157 158 159
+			 160 161 162 163 164 165 166 167
+			 168 169 170 171 172 173 174 175
+			 176 177 178 179 180 181 182 183
+			 184 185 186 187 188 189 190 191
+			 192 193 194 195 196 197 198 199
+			 200 201 202 203 204 205 206 207
+			 208 209 210 211 212 213 214 215
+			 216 217 218 219 220 221 222 223
+			 224 225 226 227 228 229 230 231
+			 232 233 234 235 236 237 238 239
+			 240 241 242 243 244 245 246 247
+			 248 249 250 251 252 253 254 255
+			 256>;
+	};
+
+	clocks {
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		clk32k_in: clock at 0 {
+			compatible = "fixed-clock";
+			reg = <0>;
+			#clock-cells = <0>;
+			clock-frequency = <32768>;
+		};
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+
+		lid {
+			label = "Lid";
+			gpios = <&gpio TEGRA_GPIO(R, 4) GPIO_ACTIVE_LOW>;
+			linux,input-type = <5>;
+			linux,code = <KEY_RESERVED>;
+			debounce-interval = <1>;
+			gpio-key,wakeup;
+		};
+
+		power {
+			label = "Power";
+			gpios = <&gpio TEGRA_GPIO(Q, 0) GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_POWER>;
+			debounce-interval = <30>;
+			gpio-key,wakeup;
+		};
+	};
+
+	panel: panel {
+		compatible = "auo,b133xtn01";
+
+		backlight = <&backlight>;
+		ddc-i2c-bus = <&dpaux>;
+	};
+
+	regulators {
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		vdd_mux: regulator at 0 {
+			compatible = "regulator-fixed";
+			reg = <0>;
+			regulator-name = "+VDD_MUX";
+			regulator-min-microvolt = <12000000>;
+			regulator-max-microvolt = <12000000>;
+			regulator-always-on;
+			regulator-boot-on;
+		};
+
+		vdd_5v0_sys: regulator at 1 {
+			compatible = "regulator-fixed";
+			reg = <1>;
+			regulator-name = "+5V_SYS";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			regulator-always-on;
+			regulator-boot-on;
+			vin-supply = <&vdd_mux>;
+		};
+
+		vdd_3v3_sys: regulator at 2 {
+			compatible = "regulator-fixed";
+			reg = <2>;
+			regulator-name = "+3.3V_SYS";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			regulator-always-on;
+			regulator-boot-on;
+			vin-supply = <&vdd_mux>;
+		};
+
+		vdd_3v3_run: regulator at 3 {
+			compatible = "regulator-fixed";
+			reg = <3>;
+			regulator-name = "+3.3V_RUN";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			regulator-always-on;
+			regulator-boot-on;
+			gpio = <&pmic 1 GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			vin-supply = <&vdd_3v3_sys>;
+		};
+
+		vdd_3v3_hdmi: regulator at 4 {
+			compatible = "regulator-fixed";
+			reg = <4>;
+			regulator-name = "+3.3V_AVDD_HDMI_AP_GATED";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			vin-supply = <&vdd_3v3_run>;
+		};
+
+		vdd_led: regulator at 5 {
+			compatible = "regulator-fixed";
+			reg = <5>;
+			regulator-name = "+VDD_LED";
+			gpio = <&gpio TEGRA_GPIO(P, 2) GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			vin-supply = <&vdd_mux>;
+		};
+
+		vdd_5v0_ts: regulator at 6 {
+			compatible = "regulator-fixed";
+			reg = <6>;
+			regulator-name = "+5V_VDD_TS_SW";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			regulator-boot-on;
+			gpio = <&gpio TEGRA_GPIO(K, 1) GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			vin-supply = <&vdd_5v0_sys>;
+		};
+
+		vdd_usb1_vbus: regulator at 7 {
+			compatible = "regulator-fixed";
+			reg = <7>;
+			regulator-name = "+5V_USB_HS";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio TEGRA_GPIO(N, 4) GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			gpio-open-drain;
+			vin-supply = <&vdd_5v0_sys>;
+		};
+
+		vdd_usb3_vbus: regulator at 8 {
+			compatible = "regulator-fixed";
+			reg = <8>;
+			regulator-name = "+5V_USB_SS";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio TEGRA_GPIO(N, 5) GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			gpio-open-drain;
+			vin-supply = <&vdd_5v0_sys>;
+		};
+
+		vdd_3v3_panel: regulator at 9 {
+			compatible = "regulator-fixed";
+			reg = <9>;
+			regulator-name = "+3.3V_PANEL";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			gpio = <&pmic 4 GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			vin-supply = <&vdd_3v3_run>;
+		};
+
+		vdd_3v3_lp0: regulator at 10 {
+			compatible = "regulator-fixed";
+			reg = <10>;
+			regulator-name = "+3.3V_LP0";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			/*
+			 * TODO: find a way to wire this up with the USB EHCI
+			 * controllers so that it can be enabled on demand.
+			 */
+			regulator-always-on;
+			gpio = <&pmic 2 GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			vin-supply = <&vdd_3v3_sys>;
+		};
+
+		vdd_hdmi_pll: regulator at 11 {
+			compatible = "regulator-fixed";
+			reg = <11>;
+			regulator-name = "+1.05V_RUN_AVDD_HDMI_PLL";
+			regulator-min-microvolt = <1050000>;
+			regulator-max-microvolt = <1050000>;
+			gpio = <&gpio TEGRA_GPIO(H, 7) GPIO_ACTIVE_LOW>;
+			vin-supply = <&vdd_1v05_run>;
+		};
+
+		vdd_5v0_hdmi: regulator at 12 {
+			compatible = "regulator-fixed";
+			reg = <12>;
+			regulator-name = "+5V_HDMI_CON";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio TEGRA_GPIO(K, 6) GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			vin-supply = <&vdd_5v0_sys>;
+		};
+	};
+
+	sound {
+		compatible = "nvidia,tegra-audio-max98090-nyan-big",
+			     "nvidia,tegra-audio-max98090";
+		nvidia,model = "Acer Chromebook 13";
+
+		nvidia,audio-routing =
+			"Headphones", "HPR",
+			"Headphones", "HPL",
+			"Speakers", "SPKR",
+			"Speakers", "SPKL",
+			"Mic Jack", "MICBIAS",
+			"DMICL", "Int Mic",
+			"DMICR", "Int Mic",
+			"IN34", "Mic Jack";
+
+		nvidia,i2s-controller = <&tegra_i2s1>;
+		nvidia,audio-codec = <&acodec>;
+
+		clocks = <&tegra_car TEGRA124_CLK_PLL_A>,
+			 <&tegra_car TEGRA124_CLK_PLL_A_OUT0>,
+			 <&tegra_car TEGRA124_CLK_EXTERN1>;
+		clock-names = "pll_a", "pll_a_out0", "mclk";
+
+		nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(I, 7) GPIO_ACTIVE_HIGH>;
+	};
+};
+
+#include "cros-ec-keyboard.dtsi"
-- 
2.1.0.rc2.206.gedb03e5

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-08-13 19:14 ` Dylan Reid
@ 2014-08-16 15:20     ` Andreas Färber
  -1 siblings, 0 replies; 42+ messages in thread
From: Andreas Färber @ 2014-08-16 15:20 UTC (permalink / raw)
  To: Dylan Reid, linux-tegra-u79uwXL29TY76Z2rM5mHXA
  Cc: swarren-3lzwWm7+Weoh9ZMKESR00Q,
	thierry.reding-Re5JQEeQqe8AvxtiuMwx3w,
	abrestic-F7+t8E8rja9g9hUCZPvPmw,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	olof-nZhT3qVonbNeoWH0uzbU5w

[-- Attachment #1: Type: text/plain, Size: 37339 bytes --]

Hi,

Am 13.08.2014 21:14, schrieb Dylan Reid:
> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
> processor and is similar to the Venice2 reference platform.
> 
> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
> and work on the 1266x768 models.  The HD models haven't yet been

1366?

> tested.
> 
> WiFi does not work yet, it needs at least some PMIC changes to enable
> the 32k clock.
> 
> The elan trackpad is not yet functional but hopefully will be soon as
> there are patches under review.
> 
> There is also an issue on reboot because the TPM isn't reset.  It will
> cause the stock firmware to enter recovery mode.  This can be worked
> around by an EC-reset, press the refresh and power keys at the same
> time.
> 
> Signed-off-by: Dylan Reid <dgreid-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
> ---
>  arch/arm/boot/dts/Makefile              |    1 +
>  arch/arm/boot/dts/tegra124-nyan-big.dts | 1136 +++++++++++++++++++++++++++++++
>  2 files changed, 1137 insertions(+)
>  create mode 100644 arch/arm/boot/dts/tegra124-nyan-big.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index acb6b42..bebb4e7 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -439,6 +439,7 @@ dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \
>  	tegra114-dalmore.dtb \
>  	tegra114-roth.dtb \
>  	tegra114-tn7.dtb \
> +	tegra124-nyan-big.dtb \
>  	tegra124-jetson-tk1.dtb \

"nyan" goes here alphabetically (still ordered as "big").

>  	tegra124-venice2.dtb
>  dtb-$(CONFIG_ARCH_U300) += ste-u300.dtb
> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts b/arch/arm/boot/dts/tegra124-nyan-big.dts
> new file mode 100644
> index 0000000..79f1852
> --- /dev/null
> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
> @@ -0,0 +1,1136 @@
> +/dts-v1/;
> +
> +#include <dt-bindings/input/input.h>
> +#include "tegra124.dtsi"
> +
> +/ {
> +	model = "Acer Chromebook 13";
> +	compatible = "google,nyan-big", "nvidia,tegra124";

In light of v1 and the above commit message referring to this as Google
Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
"google,nyan" as secondary string, independent of the new file name?

The Exynos5250 based Chromebooks use "google,snow" and "google,spring"
respectively, and I don't think there's any mention of Daisy at all in
upstream, unlike some ChromeOS sources.

Also, should we start documenting these google,* compatible strings to
please checkpatch.pl?

> +
> +	aliases {
> +		rtc0 = "/i2c@0,7000d000/pmic@40";
> +		rtc1 = "/rtc@0,7000e000";
> +	};
> +
> +	memory {
> +		reg = <0x0 0x80000000 0x0 0x80000000>;
> +	};
> +
> +	host1x@0,50000000 {
> +		hdmi@0,54280000 {
> +			status = "okay";
> +
> +			vdd-supply = <&vdd_3v3_hdmi>;
> +			pll-supply = <&vdd_hdmi_pll>;
> +			hdmi-supply = <&vdd_5v0_hdmi>;
> +
> +			nvidia,ddc-i2c-bus = <&hdmi_ddc>;
> +			nvidia,hpd-gpio =
> +				<&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		sor@0,54540000 {
> +			status = "okay";
> +
> +			nvidia,dpaux = <&dpaux>;
> +			nvidia,panel = <&panel>;
> +		};
> +
> +		dpaux: dpaux@0,545c0000 {
> +			vdd-supply = <&vdd_3v3_panel>;
> +			status = "okay";
> +		};
> +	};
> +
> +	pinmux: pinmux@0,70000868 {
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinmux_default>;
> +
> +		pinmux_default: common {
> +			dap_mclk1_pw4 {

Any need to have the nodes this way? Shouldn't this rather be
dap-mclk1-pw4 as node name by conventions, with a dap_mclk1_pw4 label
for referencing if needed? Same below, obviously.

> +				nvidia,pins = "dap_mclk1_pw4";
> +				nvidia,function = "extperiph1";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			dap2_din_pa4 {
> +				nvidia,pins = "dap2_din_pa4";
> +				nvidia,function = "i2s1";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			dap2_dout_pa5 {
> +				nvidia,pins = "dap2_dout_pa5",
> +					      "dap2_fs_pa2",
> +					      "dap2_sclk_pa3";
> +				nvidia,function = "i2s1";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			dvfs_pwm_px0 {
> +				nvidia,pins = "dvfs_pwm_px0",
> +					      "dvfs_clk_px2";
> +				nvidia,function = "cldvfs";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			ulpi_clk_py0 {
> +				nvidia,pins = "ulpi_clk_py0",
> +					      "ulpi_nxt_py2",
> +					      "ulpi_stp_py3";
> +				nvidia,function = "spi1";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			ulpi_dir_py1 {
> +				nvidia,pins = "ulpi_dir_py1";
> +				nvidia,function = "spi1";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			cam_i2c_scl_pbb1 {
> +				nvidia,pins = "cam_i2c_scl_pbb1",
> +					      "cam_i2c_sda_pbb2";
> +				nvidia,function = "i2c3";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,lock = <TEGRA_PIN_DISABLE>;
> +				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
> +			};
> +			gen2_i2c_scl_pt5 {
> +				nvidia,pins = "gen2_i2c_scl_pt5",
> +					      "gen2_i2c_sda_pt6";
> +				nvidia,function = "i2c2";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,lock = <TEGRA_PIN_DISABLE>;
> +				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
> +			};
> +			pg4 {
> +				nvidia,pins = "pg4",
> +					      "pg5",
> +					      "pg6",
> +					      "pi3";
> +				nvidia,function = "spi4";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			pg7 {
> +				nvidia,pins = "pg7";
> +				nvidia,function = "spi4";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			ph1 {
> +				nvidia,pins = "ph1";
> +				nvidia,function = "pwm1";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			pk0 {
> +				nvidia,pins = "pk0",
> +					      "kb_row15_ps7",
> +					      "clk_32k_out_pa0";
> +				nvidia,function = "soc";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			sdmmc1_clk_pz0 {
> +				nvidia,pins = "sdmmc1_clk_pz0";
> +				nvidia,function = "sdmmc1";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			sdmmc1_cmd_pz1 {
> +				nvidia,pins = "sdmmc1_cmd_pz1",
> +					      "sdmmc1_dat0_py7",
> +					      "sdmmc1_dat1_py6",
> +					      "sdmmc1_dat2_py5",
> +					      "sdmmc1_dat3_py4";
> +				nvidia,function = "sdmmc1";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			sdmmc3_clk_pa6 {
> +				nvidia,pins = "sdmmc3_clk_pa6";
> +				nvidia,function = "sdmmc3";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			sdmmc3_cmd_pa7 {
> +				nvidia,pins = "sdmmc3_cmd_pa7",
> +					      "sdmmc3_dat0_pb7",
> +					      "sdmmc3_dat1_pb6",
> +					      "sdmmc3_dat2_pb5",
> +					      "sdmmc3_dat3_pb4",
> +					      "kb_col4_pq4",
> +					      "sdmmc3_clk_lb_out_pee4",
> +					      "sdmmc3_clk_lb_in_pee5",
> +					      "sdmmc3_cd_n_pv2";
> +				nvidia,function = "sdmmc3";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			sdmmc4_clk_pcc4 {
> +				nvidia,pins = "sdmmc4_clk_pcc4";
> +				nvidia,function = "sdmmc4";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			sdmmc4_cmd_pt7 {
> +				nvidia,pins = "sdmmc4_cmd_pt7",
> +					      "sdmmc4_dat0_paa0",
> +					      "sdmmc4_dat1_paa1",
> +					      "sdmmc4_dat2_paa2",
> +					      "sdmmc4_dat3_paa3",
> +					      "sdmmc4_dat4_paa4",
> +					      "sdmmc4_dat5_paa5",
> +					      "sdmmc4_dat6_paa6",
> +					      "sdmmc4_dat7_paa7";
> +				nvidia,function = "sdmmc4";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			pwr_i2c_scl_pz6 {
> +				nvidia,pins = "pwr_i2c_scl_pz6",
> +					      "pwr_i2c_sda_pz7";
> +				nvidia,function = "i2cpwr";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,lock = <TEGRA_PIN_DISABLE>;
> +				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
> +			};
> +			jtag_rtck {
> +				nvidia,pins = "jtag_rtck";
> +				nvidia,function = "rtck";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			clk_32k_in {
> +				nvidia,pins = "clk_32k_in";
> +				nvidia,function = "clk";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			core_pwr_req {
> +				nvidia,pins = "core_pwr_req";
> +				nvidia,function = "pwron";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			cpu_pwr_req {
> +				nvidia,pins = "cpu_pwr_req";
> +				nvidia,function = "cpu";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			pwr_int_n {
> +				nvidia,pins = "pwr_int_n";
> +				nvidia,function = "pmi";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			reset_out_n {
> +				nvidia,pins = "reset_out_n";
> +				nvidia,function = "reset_out_n";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			clk3_out_pee0 {
> +				nvidia,pins = "clk3_out_pee0";
> +				nvidia,function = "extperiph3";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			gen1_i2c_sda_pc5 {
> +				nvidia,pins = "gen1_i2c_sda_pc5",
> +					      "gen1_i2c_scl_pc4";
> +				nvidia,function = "i2c1";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,lock = <TEGRA_PIN_DISABLE>;
> +				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
> +			};
> +			hdmi_cec_pee3 {
> +				nvidia,pins = "hdmi_cec_pee3";
> +				nvidia,function = "cec";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,lock = <TEGRA_PIN_DISABLE>;
> +				nvidia,open-drain = <TEGRA_PIN_DISABLE>;
> +			};
> +			hdmi_int_pn7 {
> +				nvidia,pins = "hdmi_int_pn7";
> +				nvidia,function = "rsvd1";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			ddc_scl_pv4 {
> +				nvidia,pins = "ddc_scl_pv4",
> +					      "ddc_sda_pv5";
> +				nvidia,function = "i2c4";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,lock = <TEGRA_PIN_DISABLE>;
> +				nvidia,rcv-sel = <TEGRA_PIN_ENABLE>;
> +			};
> +			kb_row10_ps2 {
> +				nvidia,pins = "kb_row10_ps2";
> +				nvidia,function = "uarta";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			kb_row9_ps1 {
> +				nvidia,pins = "kb_row9_ps1";
> +				nvidia,function = "uarta";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			usb_vbus_en0_pn4 {
> +				nvidia,pins = "usb_vbus_en0_pn4",
> +					      "usb_vbus_en1_pn5";
> +				nvidia,function = "usb";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,lock = <TEGRA_PIN_DISABLE>;
> +				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
> +			};
> +			drive_sdio1 {
> +				nvidia,pins = "drive_sdio1";
> +				nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
> +				nvidia,schmitt = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull-down-strength = <36>;
> +				nvidia,pull-up-strength = <20>;
> +				nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOW>;
> +				nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOW>;
> +			};
> +			drive_sdio3 {
> +				nvidia,pins = "drive_sdio3";
> +				nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
> +				nvidia,schmitt = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull-down-strength = <22>;
> +				nvidia,pull-up-strength = <36>;
> +				nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
> +				nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FASTEST>;
> +			};
> +			drive_gma {
> +				nvidia,pins = "drive_gma";
> +				nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
> +				nvidia,schmitt = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull-down-strength = <2>;
> +				nvidia,pull-up-strength = <1>;
> +				nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
> +				nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FASTEST>;
> +				nvidia,drive-type = <1>;
> +			};
> +			codec_irq_l {
> +				nvidia,pins = "ph4";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			lcd_bl_en {
> +				nvidia,pins = "ph2";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			touch_irq_l {
> +				nvidia,pins = "gpio_w3_aud_pw3";
> +				nvidia,function = "spi6";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			tpm_davint_l {
> +				nvidia,pins = "ph6";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			ts_irq_l {
> +				nvidia,pins = "pk2";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			ts_reset_l {
> +				nvidia,pins = "pk4";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			ts_shdn_l {
> +				nvidia,pins = "pk1";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			ph7 {
> +				nvidia,pins = "ph7";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			kb_col0_ap {
> +				nvidia,pins = "kb_col0_pq0";
> +				nvidia,function = "rsvd4";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			lid_open {
> +				nvidia,pins = "kb_row4_pr4";
> +				nvidia,function = "rsvd3";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			en_vdd_sd {
> +				nvidia,pins = "kb_row0_pr0";
> +				nvidia,function = "rsvd4";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			ac_ok {
> +				nvidia,pins = "pj0";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			sensor_irq_l {
> +				nvidia,pins = "pi6";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			wifi_en {
> +				nvidia,pins = "gpio_x7_aud_px7";
> +				nvidia,function = "rsvd4";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			en_vdd_bl {
> +				nvidia,pins = "dap3_dout_pp2";
> +				nvidia,function = "i2s2";
> +				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			en_vdd_hdmi {
> +				nvidia,pins = "spdif_in_pk6";
> +				nvidia,function = "spdif";
> +				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			soc_warm_reset_l {
> +				nvidia,pins = "pi5";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			hp_det_l {
> +				nvidia,pins = "pi7";
> +				nvidia,function = "rsvd1";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			mic_det_l {
> +				nvidia,pins = "kb_row7_pr7";
> +				nvidia,function = "rsvd2";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +		};
> +	};
> +
> +	serial@0,70006000 {
> +		/* Debug connector on the bottom of the board near SD card. */
> +		status = "okay";
> +	};
> +
> +	pwm: pwm@0,7000a000 {

Add the label to the .dtsi where the node is first declared? Then you
can override it the safer &pwm { ... }; way. Same for all other nodes
being extended/overridden here - that's what your colleagues requested
for Spring. It'll help with the 80 char limit further below by reducing
indentation.

> +		status = "okay";
> +	};
> +
> +	i2c@0,7000c000 {
> +		status = "okay";
> +		clock-frequency = <100000>;
> +
> +		acodec: audio-codec@10 {
> +			compatible = "maxim,max98090";
> +			reg = <0x10>;
> +			interrupt-parent = <&gpio>;
> +			interrupts = <TEGRA_GPIO(H, 4) GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		temperature-sensor@4c {
> +			compatible = "ti,tmp451";
> +			reg = <0x4c>;
> +			interrupt-parent = <&gpio>;
> +			interrupts = <TEGRA_GPIO(I, 6) IRQ_TYPE_LEVEL_LOW>;
> +
> +			#thermal-sensor-cells = <1>;
> +		};
> +	};
> +
> +	i2c@0,7000c400 {
> +		status = "okay";
> +		clock-frequency = <100000>;
> +	};
> +
> +	i2c@0,7000c500 {
> +		status = "okay";
> +		clock-frequency = <400000>;
> +
> +		tpm@20 {
> +			compatible = "infineon,slb9645tt";
> +			reg = <0x20>;
> +		};
> +	};
> +
> +	hdmi_ddc: i2c@0,7000c700 {
> +		status = "okay";
> +		clock-frequency = <100000>;
> +	};
> +
> +	i2c@0,7000d000 {
> +		status = "okay";
> +		clock-frequency = <400000>;
> +
> +		pmic: pmic@40 {
> +			compatible = "ams,as3722";
> +			reg = <0x40>;
> +			interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>;
> +
> +			ams,system-power-controller;
> +
> +			#interrupt-cells = <2>;
> +			interrupt-controller;
> +
> +			gpio-controller;
> +			#gpio-cells = <2>;
> +
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&as3722_default>;
> +
> +			as3722_default: pinmux {
> +				gpio0 {
> +					pins = "gpio0";
> +					function = "gpio";
> +					bias-pull-down;
> +				};
> +
> +				gpio1 {
> +					pins = "gpio1";
> +					function = "gpio";
> +					bias-pull-up;
> +				};
> +
> +				gpio2_4_7 {
> +					pins = "gpio2", "gpio4", "gpio7";
> +					function = "gpio";
> +					bias-pull-up;
> +				};
> +
> +				gpio3_6 {
> +					pins = "gpio3", "gpio6";
> +					bias-high-impedance;
> +				};
> +
> +				gpio5 {
> +					pins = "gpio5";
> +					function = "clk32k-out";
> +					bias-pull-down;
> +				};
> +			};
> +
> +			regulators {
> +				vsup-sd2-supply = <&vdd_5v0_sys>;
> +				vsup-sd3-supply = <&vdd_5v0_sys>;
> +				vsup-sd4-supply = <&vdd_5v0_sys>;
> +				vsup-sd5-supply = <&vdd_5v0_sys>;
> +				vin-ldo0-supply = <&vdd_1v35_lp0>;
> +				vin-ldo1-6-suasked mepply = <&vdd_3v3_run>;
> +				vin-ldo2-5-7-supply = <&vddio_1v8>;
> +				vin-ldo3-4-supply = <&vdd_3v3_sys>;
> +				vin-ldo9-10-supply = <&vdd_5v0_sys>;
> +				vin-ldo11-supply = <&vdd_3v3_run>;
> +
> +				sd0 {
> +					regulator-name = "+VDD_CPU_AP";
> +					regulator-min-microvolt = <700000>;
> +					regulator-max-microvolt = <1350000>;
> +					regulator-min-microamp = <3500000>;
> +					regulator-max-microamp = <3500000>;
> +					regulator-always-on;
> +					regulator-boot-on;
> +					ams,ext-control = <2>;
> +				};
> +
> +				sd1 {
> +					regulator-name = "+VDD_CORE";
> +					regulator-min-microvolt = <700000>;
> +					regulator-max-microvolt = <1350000>;
> +					regulator-min-microamp = <2500000>;
> +					regulator-max-microamp = <4000000>;
> +					regulator-always-on;
> +					regulator-boot-on;
> +					ams,ext-control = <1>;
> +				};
> +
> +				vdd_1v35_lp0: sd2 {
> +					regulator-name = "+1.35V_LP0(sd2)";
> +					regulator-min-microvolt = <1350000>;
> +					regulator-max-microvolt = <1350000>;
> +					regulator-always-on;
> +					regulator-boot-on;
> +				};
> +
> +				sd3 {
> +					regulator-name = "+1.35V_LP0(sd3)";
> +					regulator-min-microvolt = <1350000>;
> +					regulator-max-microvolt = <1350000>;
> +					regulator-always-on;
> +					regulator-boot-on;
> +				};
> +
> +				vdd_1v05_run: sd4 {
> +					regulator-name = "+1.05V_RUN";
> +					regulator-min-microvolt = <1050000>;
> +					regulator-max-microvolt = <1050000>;
> +				};
> +
> +				vddio_1v8: sd5 {
> +					regulator-name = "+1.8V_VDDIO";
> +					regulator-min-microvolt = <1800000>;
> +					regulator-max-microvolt = <1800000>;
> +					regulator-boot-on;
> +					regulator-always-on;
> +				};
> +
> +				sd6 {
> +					regulator-name = "+VDD_GPU_AP";
> +					regulator-min-microvolt = <650000>;
> +					regulator-max-microvolt = <1200000>;
> +					regulator-min-microamp = <3500000>;
> +					regulator-max-microamp = <3500000>;
> +					regulator-boot-on;
> +					regulator-always-on;
> +				};
> +
> +				ldo0 {
> +					regulator-name = "+1.05V_RUN_AVDD";
> +					regulator-min-microvolt = <1050000>;
> +					regulator-max-microvolt = <1050000>;
> +					regulator-boot-on;
> +					regulator-always-on;
> +					ams,ext-control = <1>;
> +				};
> +
> +				ldo1 {
> +					regulator-name = "+1.8V_RUN_CAM";
> +					regulator-min-microvolt = <1800000>;
> +					regulator-max-microvolt = <1800000>;
> +				};
> +
> +				ldo2 {
> +					regulator-name = "+1.2V_GEN_AVDD";
> +					regulator-min-microvolt = <1200000>;
> +					regulator-max-microvolt = <1200000>;
> +					regulator-boot-on;
> +					regulator-always-on;
> +				};
> +
> +				ldo3 {
> +					regulator-name = "+1.00V_LP0_VDD_RTC";
> +					regulator-min-microvolt = <1000000>;
> +					regulator-max-microvolt = <1000000>;
> +					regulator-boot-on;
> +					regulator-always-on;
> +					ams,enable-tracking;
> +				};
> +
> +				vdd_run_cam: ldo4 {
> +					regulator-name = "+3.3V_RUN_CAM";
> +					regulator-min-microvolt = <2800000>;
> +					regulator-max-microvolt = <2800000>;
> +				};
> +
> +				ldo5 {
> +					regulator-name = "+1.2V_RUN_CAM_FRONT";
> +					regulator-min-microvolt = <1200000>;
> +					regulator-max-microvolt = <1200000>;
> +				};
> +
> +				vddio_sdmmc3: ldo6 {
> +					regulator-name = "+VDDIO_SDMMC3";
> +					regulator-min-microvolt = <1800000>;
> +					regulator-max-microvolt = <3300000>;
> +				};
> +
> +				ldo7 {
> +					regulator-name = "+1.05V_RUN_CAM_REAR";
> +					regulator-min-microvolt = <1050000>;
> +					regulator-max-microvolt = <1050000>;
> +				};
> +
> +				ldo9 {
> +					regulator-name = "+2.8V_RUN_TOUCH";
> +					regulator-min-microvolt = <2800000>;
> +					regulator-max-microvolt = <2800000>;
> +				};
> +
> +				ldo10 {
> +					regulator-name = "+2.8V_RUN_CAM_AF";
> +					regulator-min-microvolt = <2800000>;
> +					regulator-max-microvolt = <2800000>;
> +				};
> +
> +				ldo11 {
> +					regulator-name = "+1.8V_RUN_VPP_FUSE";
> +					regulator-min-microvolt = <1800000>;
> +					regulator-max-microvolt = <1800000>;
> +				};
> +			};
> +		};
> +	};
> +
> +	spi@0,7000d400 {
> +		status = "okay";
> +
> +		cros_ec: cros-ec@0 {
> +			compatible = "google,cros-ec-spi";
> +			spi-max-frequency = <3000000>;
> +			interrupt-parent = <&gpio>;
> +			interrupts = <TEGRA_GPIO(C, 7) IRQ_TYPE_LEVEL_LOW>;
> +			reg = <0>;
> +
> +			google,cros-ec-spi-msg-delay = <2000>;
> +
> +			i2c-tunnel {
> +				compatible = "google,cros-ec-i2c-tunnel";
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +
> +				google,remote-bus = <0>;
> +
> +				charger: bq24735@9 {
> +					compatible = "ti,bq24735";
> +					reg = <0x9>;
> +					interrupt-parent = <&gpio>;
> +					interrupts = <TEGRA_GPIO(J, 0)
> +							GPIO_ACTIVE_HIGH>;
> +					ti,ac-detect-gpios = <&gpio
> +							TEGRA_GPIO(J, 0)
> +							GPIO_ACTIVE_HIGH>;
> +				};
> +
> +				battery: sbs-battery@b {
> +					compatible = "sbs,sbs-battery";
> +					reg = <0xb>;
> +					sbs,i2c-retry-count = <2>;
> +					sbs,poll-retry-count = <10>;
> +					power-supplies = <&charger>;
> +				};
> +			};
> +		};
> +	};
> +
> +	spi@0,7000da00 {
> +		status = "okay";
> +		spi-max-frequency = <25000000>;
> +
> +		flash@0 {
> +			compatible = "winbond,w25q32dw";
> +			reg = <0>;
> +		};
> +	};
> +
> +	pmc@0,7000e400 {
> +		nvidia,invert-interrupt;
> +		nvidia,suspend-mode = <0>;
> +		nvidia,cpu-pwr-good-time = <500>;
> +		nvidia,cpu-pwr-off-time = <300>;
> +		nvidia,core-pwr-good-time = <641 3845>;
> +		nvidia,core-pwr-off-time = <61036>;
> +		nvidia,core-power-req-active-high;
> +		nvidia,sys-clock-req-active-high;
> +	};
> +
> +	hda@0,70030000 {
> +		status = "okay";
> +	};
> +
> +	sdhci@0,700b0000 { /* WiFi/BT on this bus */
> +		status = "okay";
> +		power-gpios = <&gpio TEGRA_GPIO(X, 7) GPIO_ACTIVE_HIGH>;
> +		bus-width = <4>;
> +		no-1-8-v;
> +		non-removable;
> +	};
> +
> +	sdhci@0,700b0400 { /* SD Card on this bus */
> +		status = "okay";
> +		cd-gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>;
> +		power-gpios = <&gpio TEGRA_GPIO(R, 0) GPIO_ACTIVE_HIGH>;
> +		wp-gpios = <&gpio TEGRA_GPIO(Q, 4) GPIO_ACTIVE_LOW>;
> +		bus-width = <4>;
> +		no-1-8-v;
> +		vqmmc-supply = <&vddio_sdmmc3>;
> +	};
> +
> +	sdhci@0,700b0600 { /* eMMC on this bus */
> +		status = "okay";
> +		bus-width = <8>;
> +		no-1-8-v;
> +		non-removable;
> +	};
> +
> +	ahub@0,70300000 {
> +		i2s@0,70301100 {
> +			status = "okay";
> +		};
> +	};
> +
> +	usb@0,7d000000 { /* Rear external USB port. */
> +		status = "okay";
> +	};
> +
> +	usb-phy@0,7d000000 {
> +		status = "okay";
> +		vbus-supply = <&vdd_usb1_vbus>;
> +	};
> +
> +	usb@0,7d004000 { /* Internal webcam. */
> +		status = "okay";
> +	};
> +
> +	usb-phy@0,7d004000 {
> +		status = "okay";
> +		vbus-supply = <&vdd_run_cam>;
> +	};
> +
> +	usb@0,7d008000 { /* Left external USB port. */
> +		status = "okay";
> +	};
> +
> +	usb-phy@0,7d008000 {
> +		status = "okay";
> +		vbus-supply = <&vdd_usb3_vbus>;
> +	};
> +
> +	backlight: backlight {
> +		compatible = "pwm-backlight";
> +
> +		enable-gpios = <&gpio TEGRA_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
> +		power-supply = <&vdd_led>;
> +		pwms = <&pwm 1 1000000>;
> +
> +		default-brightness-level = <224>;
> +		brightness-levels =
> +			<  0   1   2   3   4   5   6   7
> +			   8   9  10  11  12  13  14  15
> +			  16  17  18  19  20  21  22  23
> +			  24  25  26  27  28  29  30  31
> +			  32  33  34  35  36  37  38  39
> +			  40  41  42  43  44  45  46  47
> +			  48  49  50  51  52  53  54  55
> +			  56  57  58  59  60  61  62  63
> +			  64  65  66  67  68  69  70  71
> +			  72  73  74  75  76  77  78  79
> +			  80  81  82  83  84  85  86  87
> +			  88  89  90  91  92  93  94  95
> +			  96  97  98  99 100 101 102 103
> +			 104 105 106 107 108 109 110 111
> +			 112 113 114 115 116 117 118 119
> +			 120 121 122 123 124 125 126 127
> +			 128 129 130 131 132 133 134 135
> +			 136 137 138 139 140 141 142 143
> +			 144 145 146 147 148 149 150 151
> +			 152 153 154 155 156 157 158 159
> +			 160 161 162 163 164 165 166 167
> +			 168 169 170 171 172 173 174 175
> +			 176 177 178 179 180 181 182 183
> +			 184 185 186 187 188 189 190 191
> +			 192 193 194 195 196 197 198 199
> +			 200 201 202 203 204 205 206 207
> +			 208 209 210 211 212 213 214 215
> +			 216 217 218 219 220 221 222 223
> +			 224 225 226 227 228 229 230 231
> +			 232 233 234 235 236 237 238 239
> +			 240 241 242 243 244 245 246 247
> +			 248 249 250 251 252 253 254 255
> +			 256>;
> +	};
> +
> +	clocks {
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		clk32k_in: clock@0 {
> +			compatible = "fixed-clock";
> +			reg = <0>;
> +			#clock-cells = <0>;
> +			clock-frequency = <32768>;
> +		};
> +	};
> +
> +	gpio-keys {
> +		compatible = "gpio-keys";
> +
> +		lid {
> +			label = "Lid";
> +			gpios = <&gpio TEGRA_GPIO(R, 4) GPIO_ACTIVE_LOW>;
> +			linux,input-type = <5>;
> +			linux,code = <KEY_RESERVED>;
> +			debounce-interval = <1>;
> +			gpio-key,wakeup;
> +		};
> +
> +		power {
> +			label = "Power";
> +			gpios = <&gpio TEGRA_GPIO(Q, 0) GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_POWER>;
> +			debounce-interval = <30>;
> +			gpio-key,wakeup;
> +		};
> +	};
> +
> +	panel: panel {
> +		compatible = "auo,b133xtn01";
> +
> +		backlight = <&backlight>;
> +		ddc-i2c-bus = <&dpaux>;
> +	};
> +
> +	regulators {
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		vdd_mux: regulator@0 {
> +			compatible = "regulator-fixed";
> +			reg = <0>;
> +			regulator-name = "+VDD_MUX";
> +			regulator-min-microvolt = <12000000>;
> +			regulator-max-microvolt = <12000000>;
> +			regulator-always-on;
> +			regulator-boot-on;
> +		};
> +
> +		vdd_5v0_sys: regulator@1 {overriding where needed

Stray text after '{'?

Regards,
Andreas

> +			compatible = "regulator-fixed";
> +			reg = <1>;
> +			regulator-name = "+5V_SYS";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			vin-supply = <&vdd_mux>;
> +		};
> +
> +		vdd_3v3_sys: regulator@2 {
> +			compatible = "regulator-fixed";
> +			reg = <2>;
> +			regulator-name = "+3.3V_SYS";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			vin-supply = <&vdd_mux>;
> +		};
> +
> +		vdd_3v3_run: regulator@3 {
> +			compatible = "regulator-fixed";
> +			reg = <3>;
> +			regulator-name = "+3.3V_RUN";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			gpio = <&pmic 1 GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			vin-supply = <&vdd_3v3_sys>;
> +		};
> +
> +		vdd_3v3_hdmi: regulator@4 {
> +			compatible = "regulator-fixed";
> +			reg = <4>;
> +			regulator-name = "+3.3V_AVDD_HDMI_AP_GATED";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			vin-supply = <&vdd_3v3_run>;
> +		};
> +
> +		vdd_led: regulator@5 {
> +			compatible = "regulator-fixed";
> +			reg = <5>;
> +			regulator-name = "+VDD_LED";
> +			gpio = <&gpio TEGRA_GPIO(P, 2) GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			vin-supply = <&vdd_mux>;
> +		};
> +
> +		vdd_5v0_ts: regulator@6 {
> +			compatible = "regulator-fixed";
> +			reg = <6>;
> +			regulator-name = "+5V_VDD_TS_SW";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			regulator-boot-on;
> +			gpio = <&gpio TEGRA_GPIO(K, 1) GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			vin-supply = <&vdd_5v0_sys>;
> +		};
> +
> +		vdd_usb1_vbus: regulator@7 {
> +			compatible = "regulator-fixed";
> +			reg = <7>;
> +			regulator-name = "+5V_USB_HS";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			gpio = <&gpio TEGRA_GPIO(N, 4) GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			gpio-open-drain;
> +			vin-supply = <&vdd_5v0_sys>;
> +		};
> +
> +		vdd_usb3_vbus: regulator@8 {
> +			compatible = "regulator-fixed";
> +			reg = <8>;
> +			regulator-name = "+5V_USB_SS";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			gpio = <&gpio TEGRA_GPIO(N, 5) GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			gpio-open-drain;
> +			vin-supply = <&vdd_5v0_sys>;
> +		};
> +
> +		vdd_3v3_panel: regulator@9 {
> +			compatible = "regulator-fixed";
> +			reg = <9>;
> +			regulator-name = "+3.3V_PANEL";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			gpio = <&pmic 4 GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			vin-supply = <&vdd_3v3_run>;
> +		};
> +
> +		vdd_3v3_lp0: regulator@10 {
> +			compatible = "regulator-fixed";
> +			reg = <10>;
> +			regulator-name = "+3.3V_LP0";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			/*
> +			 * TODO: find a way to wire this up with the USB EHCI
> +			 * controllers so that it can be enabled on demand.
> +			 */
> +			regulator-always-on;
> +			gpio = <&pmic 2 GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			vin-supply = <&vdd_3v3_sys>;
> +		};
> +
> +		vdd_hdmi_pll: regulator@11 {
> +			compatible = "regulator-fixed";
> +			reg = <11>;
> +			regulator-name = "+1.05V_RUN_AVDD_HDMI_PLL";
> +			regulator-min-microvolt = <1050000>;
> +			regulator-max-microvolt = <1050000>;
> +			gpio = <&gpio TEGRA_GPIO(H, 7) GPIO_ACTIVE_LOW>;
> +			vin-supply = <&vdd_1v05_run>;
> +		};
> +
> +		vdd_5v0_hdmi: regulator@12 {
> +			compatible = "regulator-fixed";
> +			reg = <12>;
> +			regulator-name = "+5V_HDMI_CON";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			gpio = <&gpio TEGRA_GPIO(K, 6) GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			vin-supply = <&vdd_5v0_sys>;
> +		};
> +	};
> +
> +	sound {
> +		compatible = "nvidia,tegra-audio-max98090-nyan-big",
> +			     "nvidia,tegra-audio-max98090";
> +		nvidia,model = "Acer Chromebook 13";
> +
> +		nvidia,audio-routing =
> +			"Headphones", "HPR",
> +			"Headphones", "HPL",
> +			"Speakers", "SPKR",
> +			"Speakers", "SPKL",
> +			"Mic Jack", "MICBIAS",
> +			"DMICL", "Int Mic",
> +			"DMICR", "Int Mic",
> +			"IN34", "Mic Jack";
> +
> +		nvidia,i2s-controller = <&tegra_i2s1>;
> +		nvidia,audio-codec = <&acodec>;
> +
> +		clocks = <&tegra_car TEGRA124_CLK_PLL_A>,
> +			 <&tegra_car TEGRA124_CLK_PLL_A_OUT0>,
> +			 <&tegra_car TEGRA124_CLK_EXTERN1>;
> +		clock-names = "pll_a", "pll_a_out0", "mclk";
> +
> +		nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(I, 7) GPIO_ACTIVE_HIGH>;
> +	};
> +};
> +
> +#include "cros-ec-keyboard.dtsi"
> 


-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-16 15:20     ` Andreas Färber
  0 siblings, 0 replies; 42+ messages in thread
From: Andreas Färber @ 2014-08-16 15:20 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

Am 13.08.2014 21:14, schrieb Dylan Reid:
> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
> processor and is similar to the Venice2 reference platform.
> 
> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
> and work on the 1266x768 models.  The HD models haven't yet been

1366?

> tested.
> 
> WiFi does not work yet, it needs at least some PMIC changes to enable
> the 32k clock.
> 
> The elan trackpad is not yet functional but hopefully will be soon as
> there are patches under review.
> 
> There is also an issue on reboot because the TPM isn't reset.  It will
> cause the stock firmware to enter recovery mode.  This can be worked
> around by an EC-reset, press the refresh and power keys at the same
> time.
> 
> Signed-off-by: Dylan Reid <dgreid@chromium.org>
> ---
>  arch/arm/boot/dts/Makefile              |    1 +
>  arch/arm/boot/dts/tegra124-nyan-big.dts | 1136 +++++++++++++++++++++++++++++++
>  2 files changed, 1137 insertions(+)
>  create mode 100644 arch/arm/boot/dts/tegra124-nyan-big.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index acb6b42..bebb4e7 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -439,6 +439,7 @@ dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \
>  	tegra114-dalmore.dtb \
>  	tegra114-roth.dtb \
>  	tegra114-tn7.dtb \
> +	tegra124-nyan-big.dtb \
>  	tegra124-jetson-tk1.dtb \

"nyan" goes here alphabetically (still ordered as "big").

>  	tegra124-venice2.dtb
>  dtb-$(CONFIG_ARCH_U300) += ste-u300.dtb
> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts b/arch/arm/boot/dts/tegra124-nyan-big.dts
> new file mode 100644
> index 0000000..79f1852
> --- /dev/null
> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
> @@ -0,0 +1,1136 @@
> +/dts-v1/;
> +
> +#include <dt-bindings/input/input.h>
> +#include "tegra124.dtsi"
> +
> +/ {
> +	model = "Acer Chromebook 13";
> +	compatible = "google,nyan-big", "nvidia,tegra124";

In light of v1 and the above commit message referring to this as Google
Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
"google,nyan" as secondary string, independent of the new file name?

The Exynos5250 based Chromebooks use "google,snow" and "google,spring"
respectively, and I don't think there's any mention of Daisy at all in
upstream, unlike some ChromeOS sources.

Also, should we start documenting these google,* compatible strings to
please checkpatch.pl?

> +
> +	aliases {
> +		rtc0 = "/i2c at 0,7000d000/pmic at 40";
> +		rtc1 = "/rtc at 0,7000e000";
> +	};
> +
> +	memory {
> +		reg = <0x0 0x80000000 0x0 0x80000000>;
> +	};
> +
> +	host1x at 0,50000000 {
> +		hdmi at 0,54280000 {
> +			status = "okay";
> +
> +			vdd-supply = <&vdd_3v3_hdmi>;
> +			pll-supply = <&vdd_hdmi_pll>;
> +			hdmi-supply = <&vdd_5v0_hdmi>;
> +
> +			nvidia,ddc-i2c-bus = <&hdmi_ddc>;
> +			nvidia,hpd-gpio =
> +				<&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		sor at 0,54540000 {
> +			status = "okay";
> +
> +			nvidia,dpaux = <&dpaux>;
> +			nvidia,panel = <&panel>;
> +		};
> +
> +		dpaux: dpaux at 0,545c0000 {
> +			vdd-supply = <&vdd_3v3_panel>;
> +			status = "okay";
> +		};
> +	};
> +
> +	pinmux: pinmux at 0,70000868 {
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinmux_default>;
> +
> +		pinmux_default: common {
> +			dap_mclk1_pw4 {

Any need to have the nodes this way? Shouldn't this rather be
dap-mclk1-pw4 as node name by conventions, with a dap_mclk1_pw4 label
for referencing if needed? Same below, obviously.

> +				nvidia,pins = "dap_mclk1_pw4";
> +				nvidia,function = "extperiph1";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			dap2_din_pa4 {
> +				nvidia,pins = "dap2_din_pa4";
> +				nvidia,function = "i2s1";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			dap2_dout_pa5 {
> +				nvidia,pins = "dap2_dout_pa5",
> +					      "dap2_fs_pa2",
> +					      "dap2_sclk_pa3";
> +				nvidia,function = "i2s1";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			dvfs_pwm_px0 {
> +				nvidia,pins = "dvfs_pwm_px0",
> +					      "dvfs_clk_px2";
> +				nvidia,function = "cldvfs";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			ulpi_clk_py0 {
> +				nvidia,pins = "ulpi_clk_py0",
> +					      "ulpi_nxt_py2",
> +					      "ulpi_stp_py3";
> +				nvidia,function = "spi1";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			ulpi_dir_py1 {
> +				nvidia,pins = "ulpi_dir_py1";
> +				nvidia,function = "spi1";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			cam_i2c_scl_pbb1 {
> +				nvidia,pins = "cam_i2c_scl_pbb1",
> +					      "cam_i2c_sda_pbb2";
> +				nvidia,function = "i2c3";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,lock = <TEGRA_PIN_DISABLE>;
> +				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
> +			};
> +			gen2_i2c_scl_pt5 {
> +				nvidia,pins = "gen2_i2c_scl_pt5",
> +					      "gen2_i2c_sda_pt6";
> +				nvidia,function = "i2c2";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,lock = <TEGRA_PIN_DISABLE>;
> +				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
> +			};
> +			pg4 {
> +				nvidia,pins = "pg4",
> +					      "pg5",
> +					      "pg6",
> +					      "pi3";
> +				nvidia,function = "spi4";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			pg7 {
> +				nvidia,pins = "pg7";
> +				nvidia,function = "spi4";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			ph1 {
> +				nvidia,pins = "ph1";
> +				nvidia,function = "pwm1";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			pk0 {
> +				nvidia,pins = "pk0",
> +					      "kb_row15_ps7",
> +					      "clk_32k_out_pa0";
> +				nvidia,function = "soc";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			sdmmc1_clk_pz0 {
> +				nvidia,pins = "sdmmc1_clk_pz0";
> +				nvidia,function = "sdmmc1";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			sdmmc1_cmd_pz1 {
> +				nvidia,pins = "sdmmc1_cmd_pz1",
> +					      "sdmmc1_dat0_py7",
> +					      "sdmmc1_dat1_py6",
> +					      "sdmmc1_dat2_py5",
> +					      "sdmmc1_dat3_py4";
> +				nvidia,function = "sdmmc1";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			sdmmc3_clk_pa6 {
> +				nvidia,pins = "sdmmc3_clk_pa6";
> +				nvidia,function = "sdmmc3";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			sdmmc3_cmd_pa7 {
> +				nvidia,pins = "sdmmc3_cmd_pa7",
> +					      "sdmmc3_dat0_pb7",
> +					      "sdmmc3_dat1_pb6",
> +					      "sdmmc3_dat2_pb5",
> +					      "sdmmc3_dat3_pb4",
> +					      "kb_col4_pq4",
> +					      "sdmmc3_clk_lb_out_pee4",
> +					      "sdmmc3_clk_lb_in_pee5",
> +					      "sdmmc3_cd_n_pv2";
> +				nvidia,function = "sdmmc3";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			sdmmc4_clk_pcc4 {
> +				nvidia,pins = "sdmmc4_clk_pcc4";
> +				nvidia,function = "sdmmc4";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			sdmmc4_cmd_pt7 {
> +				nvidia,pins = "sdmmc4_cmd_pt7",
> +					      "sdmmc4_dat0_paa0",
> +					      "sdmmc4_dat1_paa1",
> +					      "sdmmc4_dat2_paa2",
> +					      "sdmmc4_dat3_paa3",
> +					      "sdmmc4_dat4_paa4",
> +					      "sdmmc4_dat5_paa5",
> +					      "sdmmc4_dat6_paa6",
> +					      "sdmmc4_dat7_paa7";
> +				nvidia,function = "sdmmc4";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			pwr_i2c_scl_pz6 {
> +				nvidia,pins = "pwr_i2c_scl_pz6",
> +					      "pwr_i2c_sda_pz7";
> +				nvidia,function = "i2cpwr";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,lock = <TEGRA_PIN_DISABLE>;
> +				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
> +			};
> +			jtag_rtck {
> +				nvidia,pins = "jtag_rtck";
> +				nvidia,function = "rtck";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			clk_32k_in {
> +				nvidia,pins = "clk_32k_in";
> +				nvidia,function = "clk";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			core_pwr_req {
> +				nvidia,pins = "core_pwr_req";
> +				nvidia,function = "pwron";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			cpu_pwr_req {
> +				nvidia,pins = "cpu_pwr_req";
> +				nvidia,function = "cpu";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			pwr_int_n {
> +				nvidia,pins = "pwr_int_n";
> +				nvidia,function = "pmi";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			reset_out_n {
> +				nvidia,pins = "reset_out_n";
> +				nvidia,function = "reset_out_n";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			clk3_out_pee0 {
> +				nvidia,pins = "clk3_out_pee0";
> +				nvidia,function = "extperiph3";
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			gen1_i2c_sda_pc5 {
> +				nvidia,pins = "gen1_i2c_sda_pc5",
> +					      "gen1_i2c_scl_pc4";
> +				nvidia,function = "i2c1";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,lock = <TEGRA_PIN_DISABLE>;
> +				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
> +			};
> +			hdmi_cec_pee3 {
> +				nvidia,pins = "hdmi_cec_pee3";
> +				nvidia,function = "cec";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,lock = <TEGRA_PIN_DISABLE>;
> +				nvidia,open-drain = <TEGRA_PIN_DISABLE>;
> +			};
> +			hdmi_int_pn7 {
> +				nvidia,pins = "hdmi_int_pn7";
> +				nvidia,function = "rsvd1";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +			};
> +			ddc_scl_pv4 {
> +				nvidia,pins = "ddc_scl_pv4",
> +					      "ddc_sda_pv5";
> +				nvidia,function = "i2c4";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,lock = <TEGRA_PIN_DISABLE>;
> +				nvidia,rcv-sel = <TEGRA_PIN_ENABLE>;
> +			};
> +			kb_row10_ps2 {
> +				nvidia,pins = "kb_row10_ps2";
> +				nvidia,function = "uarta";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			kb_row9_ps1 {
> +				nvidia,pins = "kb_row9_ps1";
> +				nvidia,function = "uarta";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			usb_vbus_en0_pn4 {
> +				nvidia,pins = "usb_vbus_en0_pn4",
> +					      "usb_vbus_en1_pn5";
> +				nvidia,function = "usb";
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,lock = <TEGRA_PIN_DISABLE>;
> +				nvidia,open-drain = <TEGRA_PIN_ENABLE>;
> +			};
> +			drive_sdio1 {
> +				nvidia,pins = "drive_sdio1";
> +				nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
> +				nvidia,schmitt = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull-down-strength = <36>;
> +				nvidia,pull-up-strength = <20>;
> +				nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOW>;
> +				nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOW>;
> +			};
> +			drive_sdio3 {
> +				nvidia,pins = "drive_sdio3";
> +				nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
> +				nvidia,schmitt = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull-down-strength = <22>;
> +				nvidia,pull-up-strength = <36>;
> +				nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
> +				nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FASTEST>;
> +			};
> +			drive_gma {
> +				nvidia,pins = "drive_gma";
> +				nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
> +				nvidia,schmitt = <TEGRA_PIN_DISABLE>;
> +				nvidia,pull-down-strength = <2>;
> +				nvidia,pull-up-strength = <1>;
> +				nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
> +				nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FASTEST>;
> +				nvidia,drive-type = <1>;
> +			};
> +			codec_irq_l {
> +				nvidia,pins = "ph4";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			lcd_bl_en {
> +				nvidia,pins = "ph2";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			touch_irq_l {
> +				nvidia,pins = "gpio_w3_aud_pw3";
> +				nvidia,function = "spi6";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			tpm_davint_l {
> +				nvidia,pins = "ph6";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			ts_irq_l {
> +				nvidia,pins = "pk2";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			ts_reset_l {
> +				nvidia,pins = "pk4";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			ts_shdn_l {
> +				nvidia,pins = "pk1";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			ph7 {
> +				nvidia,pins = "ph7";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			kb_col0_ap {
> +				nvidia,pins = "kb_col0_pq0";
> +				nvidia,function = "rsvd4";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			lid_open {
> +				nvidia,pins = "kb_row4_pr4";
> +				nvidia,function = "rsvd3";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			en_vdd_sd {
> +				nvidia,pins = "kb_row0_pr0";
> +				nvidia,function = "rsvd4";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			ac_ok {
> +				nvidia,pins = "pj0";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			sensor_irq_l {
> +				nvidia,pins = "pi6";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			wifi_en {
> +				nvidia,pins = "gpio_x7_aud_px7";
> +				nvidia,function = "rsvd4";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			en_vdd_bl {
> +				nvidia,pins = "dap3_dout_pp2";
> +				nvidia,function = "i2s2";
> +				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			en_vdd_hdmi {
> +				nvidia,pins = "spdif_in_pk6";
> +				nvidia,function = "spdif";
> +				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			soc_warm_reset_l {
> +				nvidia,pins = "pi5";
> +				nvidia,function = "gmi";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> +			};
> +			hp_det_l {
> +				nvidia,pins = "pi7";
> +				nvidia,function = "rsvd1";
> +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +			mic_det_l {
> +				nvidia,pins = "kb_row7_pr7";
> +				nvidia,function = "rsvd2";
> +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> +			};
> +		};
> +	};
> +
> +	serial at 0,70006000 {
> +		/* Debug connector on the bottom of the board near SD card. */
> +		status = "okay";
> +	};
> +
> +	pwm: pwm at 0,7000a000 {

Add the label to the .dtsi where the node is first declared? Then you
can override it the safer &pwm { ... }; way. Same for all other nodes
being extended/overridden here - that's what your colleagues requested
for Spring. It'll help with the 80 char limit further below by reducing
indentation.

> +		status = "okay";
> +	};
> +
> +	i2c at 0,7000c000 {
> +		status = "okay";
> +		clock-frequency = <100000>;
> +
> +		acodec: audio-codec at 10 {
> +			compatible = "maxim,max98090";
> +			reg = <0x10>;
> +			interrupt-parent = <&gpio>;
> +			interrupts = <TEGRA_GPIO(H, 4) GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		temperature-sensor at 4c {
> +			compatible = "ti,tmp451";
> +			reg = <0x4c>;
> +			interrupt-parent = <&gpio>;
> +			interrupts = <TEGRA_GPIO(I, 6) IRQ_TYPE_LEVEL_LOW>;
> +
> +			#thermal-sensor-cells = <1>;
> +		};
> +	};
> +
> +	i2c at 0,7000c400 {
> +		status = "okay";
> +		clock-frequency = <100000>;
> +	};
> +
> +	i2c at 0,7000c500 {
> +		status = "okay";
> +		clock-frequency = <400000>;
> +
> +		tpm at 20 {
> +			compatible = "infineon,slb9645tt";
> +			reg = <0x20>;
> +		};
> +	};
> +
> +	hdmi_ddc: i2c at 0,7000c700 {
> +		status = "okay";
> +		clock-frequency = <100000>;
> +	};
> +
> +	i2c at 0,7000d000 {
> +		status = "okay";
> +		clock-frequency = <400000>;
> +
> +		pmic: pmic at 40 {
> +			compatible = "ams,as3722";
> +			reg = <0x40>;
> +			interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>;
> +
> +			ams,system-power-controller;
> +
> +			#interrupt-cells = <2>;
> +			interrupt-controller;
> +
> +			gpio-controller;
> +			#gpio-cells = <2>;
> +
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&as3722_default>;
> +
> +			as3722_default: pinmux {
> +				gpio0 {
> +					pins = "gpio0";
> +					function = "gpio";
> +					bias-pull-down;
> +				};
> +
> +				gpio1 {
> +					pins = "gpio1";
> +					function = "gpio";
> +					bias-pull-up;
> +				};
> +
> +				gpio2_4_7 {
> +					pins = "gpio2", "gpio4", "gpio7";
> +					function = "gpio";
> +					bias-pull-up;
> +				};
> +
> +				gpio3_6 {
> +					pins = "gpio3", "gpio6";
> +					bias-high-impedance;
> +				};
> +
> +				gpio5 {
> +					pins = "gpio5";
> +					function = "clk32k-out";
> +					bias-pull-down;
> +				};
> +			};
> +
> +			regulators {
> +				vsup-sd2-supply = <&vdd_5v0_sys>;
> +				vsup-sd3-supply = <&vdd_5v0_sys>;
> +				vsup-sd4-supply = <&vdd_5v0_sys>;
> +				vsup-sd5-supply = <&vdd_5v0_sys>;
> +				vin-ldo0-supply = <&vdd_1v35_lp0>;
> +				vin-ldo1-6-suasked mepply = <&vdd_3v3_run>;
> +				vin-ldo2-5-7-supply = <&vddio_1v8>;
> +				vin-ldo3-4-supply = <&vdd_3v3_sys>;
> +				vin-ldo9-10-supply = <&vdd_5v0_sys>;
> +				vin-ldo11-supply = <&vdd_3v3_run>;
> +
> +				sd0 {
> +					regulator-name = "+VDD_CPU_AP";
> +					regulator-min-microvolt = <700000>;
> +					regulator-max-microvolt = <1350000>;
> +					regulator-min-microamp = <3500000>;
> +					regulator-max-microamp = <3500000>;
> +					regulator-always-on;
> +					regulator-boot-on;
> +					ams,ext-control = <2>;
> +				};
> +
> +				sd1 {
> +					regulator-name = "+VDD_CORE";
> +					regulator-min-microvolt = <700000>;
> +					regulator-max-microvolt = <1350000>;
> +					regulator-min-microamp = <2500000>;
> +					regulator-max-microamp = <4000000>;
> +					regulator-always-on;
> +					regulator-boot-on;
> +					ams,ext-control = <1>;
> +				};
> +
> +				vdd_1v35_lp0: sd2 {
> +					regulator-name = "+1.35V_LP0(sd2)";
> +					regulator-min-microvolt = <1350000>;
> +					regulator-max-microvolt = <1350000>;
> +					regulator-always-on;
> +					regulator-boot-on;
> +				};
> +
> +				sd3 {
> +					regulator-name = "+1.35V_LP0(sd3)";
> +					regulator-min-microvolt = <1350000>;
> +					regulator-max-microvolt = <1350000>;
> +					regulator-always-on;
> +					regulator-boot-on;
> +				};
> +
> +				vdd_1v05_run: sd4 {
> +					regulator-name = "+1.05V_RUN";
> +					regulator-min-microvolt = <1050000>;
> +					regulator-max-microvolt = <1050000>;
> +				};
> +
> +				vddio_1v8: sd5 {
> +					regulator-name = "+1.8V_VDDIO";
> +					regulator-min-microvolt = <1800000>;
> +					regulator-max-microvolt = <1800000>;
> +					regulator-boot-on;
> +					regulator-always-on;
> +				};
> +
> +				sd6 {
> +					regulator-name = "+VDD_GPU_AP";
> +					regulator-min-microvolt = <650000>;
> +					regulator-max-microvolt = <1200000>;
> +					regulator-min-microamp = <3500000>;
> +					regulator-max-microamp = <3500000>;
> +					regulator-boot-on;
> +					regulator-always-on;
> +				};
> +
> +				ldo0 {
> +					regulator-name = "+1.05V_RUN_AVDD";
> +					regulator-min-microvolt = <1050000>;
> +					regulator-max-microvolt = <1050000>;
> +					regulator-boot-on;
> +					regulator-always-on;
> +					ams,ext-control = <1>;
> +				};
> +
> +				ldo1 {
> +					regulator-name = "+1.8V_RUN_CAM";
> +					regulator-min-microvolt = <1800000>;
> +					regulator-max-microvolt = <1800000>;
> +				};
> +
> +				ldo2 {
> +					regulator-name = "+1.2V_GEN_AVDD";
> +					regulator-min-microvolt = <1200000>;
> +					regulator-max-microvolt = <1200000>;
> +					regulator-boot-on;
> +					regulator-always-on;
> +				};
> +
> +				ldo3 {
> +					regulator-name = "+1.00V_LP0_VDD_RTC";
> +					regulator-min-microvolt = <1000000>;
> +					regulator-max-microvolt = <1000000>;
> +					regulator-boot-on;
> +					regulator-always-on;
> +					ams,enable-tracking;
> +				};
> +
> +				vdd_run_cam: ldo4 {
> +					regulator-name = "+3.3V_RUN_CAM";
> +					regulator-min-microvolt = <2800000>;
> +					regulator-max-microvolt = <2800000>;
> +				};
> +
> +				ldo5 {
> +					regulator-name = "+1.2V_RUN_CAM_FRONT";
> +					regulator-min-microvolt = <1200000>;
> +					regulator-max-microvolt = <1200000>;
> +				};
> +
> +				vddio_sdmmc3: ldo6 {
> +					regulator-name = "+VDDIO_SDMMC3";
> +					regulator-min-microvolt = <1800000>;
> +					regulator-max-microvolt = <3300000>;
> +				};
> +
> +				ldo7 {
> +					regulator-name = "+1.05V_RUN_CAM_REAR";
> +					regulator-min-microvolt = <1050000>;
> +					regulator-max-microvolt = <1050000>;
> +				};
> +
> +				ldo9 {
> +					regulator-name = "+2.8V_RUN_TOUCH";
> +					regulator-min-microvolt = <2800000>;
> +					regulator-max-microvolt = <2800000>;
> +				};
> +
> +				ldo10 {
> +					regulator-name = "+2.8V_RUN_CAM_AF";
> +					regulator-min-microvolt = <2800000>;
> +					regulator-max-microvolt = <2800000>;
> +				};
> +
> +				ldo11 {
> +					regulator-name = "+1.8V_RUN_VPP_FUSE";
> +					regulator-min-microvolt = <1800000>;
> +					regulator-max-microvolt = <1800000>;
> +				};
> +			};
> +		};
> +	};
> +
> +	spi at 0,7000d400 {
> +		status = "okay";
> +
> +		cros_ec: cros-ec at 0 {
> +			compatible = "google,cros-ec-spi";
> +			spi-max-frequency = <3000000>;
> +			interrupt-parent = <&gpio>;
> +			interrupts = <TEGRA_GPIO(C, 7) IRQ_TYPE_LEVEL_LOW>;
> +			reg = <0>;
> +
> +			google,cros-ec-spi-msg-delay = <2000>;
> +
> +			i2c-tunnel {
> +				compatible = "google,cros-ec-i2c-tunnel";
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +
> +				google,remote-bus = <0>;
> +
> +				charger: bq24735 at 9 {
> +					compatible = "ti,bq24735";
> +					reg = <0x9>;
> +					interrupt-parent = <&gpio>;
> +					interrupts = <TEGRA_GPIO(J, 0)
> +							GPIO_ACTIVE_HIGH>;
> +					ti,ac-detect-gpios = <&gpio
> +							TEGRA_GPIO(J, 0)
> +							GPIO_ACTIVE_HIGH>;
> +				};
> +
> +				battery: sbs-battery at b {
> +					compatible = "sbs,sbs-battery";
> +					reg = <0xb>;
> +					sbs,i2c-retry-count = <2>;
> +					sbs,poll-retry-count = <10>;
> +					power-supplies = <&charger>;
> +				};
> +			};
> +		};
> +	};
> +
> +	spi at 0,7000da00 {
> +		status = "okay";
> +		spi-max-frequency = <25000000>;
> +
> +		flash at 0 {
> +			compatible = "winbond,w25q32dw";
> +			reg = <0>;
> +		};
> +	};
> +
> +	pmc at 0,7000e400 {
> +		nvidia,invert-interrupt;
> +		nvidia,suspend-mode = <0>;
> +		nvidia,cpu-pwr-good-time = <500>;
> +		nvidia,cpu-pwr-off-time = <300>;
> +		nvidia,core-pwr-good-time = <641 3845>;
> +		nvidia,core-pwr-off-time = <61036>;
> +		nvidia,core-power-req-active-high;
> +		nvidia,sys-clock-req-active-high;
> +	};
> +
> +	hda at 0,70030000 {
> +		status = "okay";
> +	};
> +
> +	sdhci at 0,700b0000 { /* WiFi/BT on this bus */
> +		status = "okay";
> +		power-gpios = <&gpio TEGRA_GPIO(X, 7) GPIO_ACTIVE_HIGH>;
> +		bus-width = <4>;
> +		no-1-8-v;
> +		non-removable;
> +	};
> +
> +	sdhci at 0,700b0400 { /* SD Card on this bus */
> +		status = "okay";
> +		cd-gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>;
> +		power-gpios = <&gpio TEGRA_GPIO(R, 0) GPIO_ACTIVE_HIGH>;
> +		wp-gpios = <&gpio TEGRA_GPIO(Q, 4) GPIO_ACTIVE_LOW>;
> +		bus-width = <4>;
> +		no-1-8-v;
> +		vqmmc-supply = <&vddio_sdmmc3>;
> +	};
> +
> +	sdhci at 0,700b0600 { /* eMMC on this bus */
> +		status = "okay";
> +		bus-width = <8>;
> +		no-1-8-v;
> +		non-removable;
> +	};
> +
> +	ahub at 0,70300000 {
> +		i2s at 0,70301100 {
> +			status = "okay";
> +		};
> +	};
> +
> +	usb at 0,7d000000 { /* Rear external USB port. */
> +		status = "okay";
> +	};
> +
> +	usb-phy at 0,7d000000 {
> +		status = "okay";
> +		vbus-supply = <&vdd_usb1_vbus>;
> +	};
> +
> +	usb at 0,7d004000 { /* Internal webcam. */
> +		status = "okay";
> +	};
> +
> +	usb-phy at 0,7d004000 {
> +		status = "okay";
> +		vbus-supply = <&vdd_run_cam>;
> +	};
> +
> +	usb at 0,7d008000 { /* Left external USB port. */
> +		status = "okay";
> +	};
> +
> +	usb-phy at 0,7d008000 {
> +		status = "okay";
> +		vbus-supply = <&vdd_usb3_vbus>;
> +	};
> +
> +	backlight: backlight {
> +		compatible = "pwm-backlight";
> +
> +		enable-gpios = <&gpio TEGRA_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
> +		power-supply = <&vdd_led>;
> +		pwms = <&pwm 1 1000000>;
> +
> +		default-brightness-level = <224>;
> +		brightness-levels =
> +			<  0   1   2   3   4   5   6   7
> +			   8   9  10  11  12  13  14  15
> +			  16  17  18  19  20  21  22  23
> +			  24  25  26  27  28  29  30  31
> +			  32  33  34  35  36  37  38  39
> +			  40  41  42  43  44  45  46  47
> +			  48  49  50  51  52  53  54  55
> +			  56  57  58  59  60  61  62  63
> +			  64  65  66  67  68  69  70  71
> +			  72  73  74  75  76  77  78  79
> +			  80  81  82  83  84  85  86  87
> +			  88  89  90  91  92  93  94  95
> +			  96  97  98  99 100 101 102 103
> +			 104 105 106 107 108 109 110 111
> +			 112 113 114 115 116 117 118 119
> +			 120 121 122 123 124 125 126 127
> +			 128 129 130 131 132 133 134 135
> +			 136 137 138 139 140 141 142 143
> +			 144 145 146 147 148 149 150 151
> +			 152 153 154 155 156 157 158 159
> +			 160 161 162 163 164 165 166 167
> +			 168 169 170 171 172 173 174 175
> +			 176 177 178 179 180 181 182 183
> +			 184 185 186 187 188 189 190 191
> +			 192 193 194 195 196 197 198 199
> +			 200 201 202 203 204 205 206 207
> +			 208 209 210 211 212 213 214 215
> +			 216 217 218 219 220 221 222 223
> +			 224 225 226 227 228 229 230 231
> +			 232 233 234 235 236 237 238 239
> +			 240 241 242 243 244 245 246 247
> +			 248 249 250 251 252 253 254 255
> +			 256>;
> +	};
> +
> +	clocks {
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		clk32k_in: clock at 0 {
> +			compatible = "fixed-clock";
> +			reg = <0>;
> +			#clock-cells = <0>;
> +			clock-frequency = <32768>;
> +		};
> +	};
> +
> +	gpio-keys {
> +		compatible = "gpio-keys";
> +
> +		lid {
> +			label = "Lid";
> +			gpios = <&gpio TEGRA_GPIO(R, 4) GPIO_ACTIVE_LOW>;
> +			linux,input-type = <5>;
> +			linux,code = <KEY_RESERVED>;
> +			debounce-interval = <1>;
> +			gpio-key,wakeup;
> +		};
> +
> +		power {
> +			label = "Power";
> +			gpios = <&gpio TEGRA_GPIO(Q, 0) GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_POWER>;
> +			debounce-interval = <30>;
> +			gpio-key,wakeup;
> +		};
> +	};
> +
> +	panel: panel {
> +		compatible = "auo,b133xtn01";
> +
> +		backlight = <&backlight>;
> +		ddc-i2c-bus = <&dpaux>;
> +	};
> +
> +	regulators {
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		vdd_mux: regulator at 0 {
> +			compatible = "regulator-fixed";
> +			reg = <0>;
> +			regulator-name = "+VDD_MUX";
> +			regulator-min-microvolt = <12000000>;
> +			regulator-max-microvolt = <12000000>;
> +			regulator-always-on;
> +			regulator-boot-on;
> +		};
> +
> +		vdd_5v0_sys: regulator at 1 {overriding where needed

Stray text after '{'?

Regards,
Andreas

> +			compatible = "regulator-fixed";
> +			reg = <1>;
> +			regulator-name = "+5V_SYS";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			vin-supply = <&vdd_mux>;
> +		};
> +
> +		vdd_3v3_sys: regulator at 2 {
> +			compatible = "regulator-fixed";
> +			reg = <2>;
> +			regulator-name = "+3.3V_SYS";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			vin-supply = <&vdd_mux>;
> +		};
> +
> +		vdd_3v3_run: regulator at 3 {
> +			compatible = "regulator-fixed";
> +			reg = <3>;
> +			regulator-name = "+3.3V_RUN";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			gpio = <&pmic 1 GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			vin-supply = <&vdd_3v3_sys>;
> +		};
> +
> +		vdd_3v3_hdmi: regulator at 4 {
> +			compatible = "regulator-fixed";
> +			reg = <4>;
> +			regulator-name = "+3.3V_AVDD_HDMI_AP_GATED";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			vin-supply = <&vdd_3v3_run>;
> +		};
> +
> +		vdd_led: regulator at 5 {
> +			compatible = "regulator-fixed";
> +			reg = <5>;
> +			regulator-name = "+VDD_LED";
> +			gpio = <&gpio TEGRA_GPIO(P, 2) GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			vin-supply = <&vdd_mux>;
> +		};
> +
> +		vdd_5v0_ts: regulator at 6 {
> +			compatible = "regulator-fixed";
> +			reg = <6>;
> +			regulator-name = "+5V_VDD_TS_SW";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			regulator-boot-on;
> +			gpio = <&gpio TEGRA_GPIO(K, 1) GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			vin-supply = <&vdd_5v0_sys>;
> +		};
> +
> +		vdd_usb1_vbus: regulator at 7 {
> +			compatible = "regulator-fixed";
> +			reg = <7>;
> +			regulator-name = "+5V_USB_HS";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			gpio = <&gpio TEGRA_GPIO(N, 4) GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			gpio-open-drain;
> +			vin-supply = <&vdd_5v0_sys>;
> +		};
> +
> +		vdd_usb3_vbus: regulator at 8 {
> +			compatible = "regulator-fixed";
> +			reg = <8>;
> +			regulator-name = "+5V_USB_SS";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			gpio = <&gpio TEGRA_GPIO(N, 5) GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			gpio-open-drain;
> +			vin-supply = <&vdd_5v0_sys>;
> +		};
> +
> +		vdd_3v3_panel: regulator at 9 {
> +			compatible = "regulator-fixed";
> +			reg = <9>;
> +			regulator-name = "+3.3V_PANEL";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			gpio = <&pmic 4 GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			vin-supply = <&vdd_3v3_run>;
> +		};
> +
> +		vdd_3v3_lp0: regulator at 10 {
> +			compatible = "regulator-fixed";
> +			reg = <10>;
> +			regulator-name = "+3.3V_LP0";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			/*
> +			 * TODO: find a way to wire this up with the USB EHCI
> +			 * controllers so that it can be enabled on demand.
> +			 */
> +			regulator-always-on;
> +			gpio = <&pmic 2 GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			vin-supply = <&vdd_3v3_sys>;
> +		};
> +
> +		vdd_hdmi_pll: regulator at 11 {
> +			compatible = "regulator-fixed";
> +			reg = <11>;
> +			regulator-name = "+1.05V_RUN_AVDD_HDMI_PLL";
> +			regulator-min-microvolt = <1050000>;
> +			regulator-max-microvolt = <1050000>;
> +			gpio = <&gpio TEGRA_GPIO(H, 7) GPIO_ACTIVE_LOW>;
> +			vin-supply = <&vdd_1v05_run>;
> +		};
> +
> +		vdd_5v0_hdmi: regulator at 12 {
> +			compatible = "regulator-fixed";
> +			reg = <12>;
> +			regulator-name = "+5V_HDMI_CON";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			gpio = <&gpio TEGRA_GPIO(K, 6) GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			vin-supply = <&vdd_5v0_sys>;
> +		};
> +	};
> +
> +	sound {
> +		compatible = "nvidia,tegra-audio-max98090-nyan-big",
> +			     "nvidia,tegra-audio-max98090";
> +		nvidia,model = "Acer Chromebook 13";
> +
> +		nvidia,audio-routing =
> +			"Headphones", "HPR",
> +			"Headphones", "HPL",
> +			"Speakers", "SPKR",
> +			"Speakers", "SPKL",
> +			"Mic Jack", "MICBIAS",
> +			"DMICL", "Int Mic",
> +			"DMICR", "Int Mic",
> +			"IN34", "Mic Jack";
> +
> +		nvidia,i2s-controller = <&tegra_i2s1>;
> +		nvidia,audio-codec = <&acodec>;
> +
> +		clocks = <&tegra_car TEGRA124_CLK_PLL_A>,
> +			 <&tegra_car TEGRA124_CLK_PLL_A_OUT0>,
> +			 <&tegra_car TEGRA124_CLK_EXTERN1>;
> +		clock-names = "pll_a", "pll_a_out0", "mclk";
> +
> +		nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(I, 7) GPIO_ACTIVE_HIGH>;
> +	};
> +};
> +
> +#include "cros-ec-keyboard.dtsi"
> 


-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N?rnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imend?rffer; HRB 16746 AG N?rnberg

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140816/18e99303/attachment-0001.sig>

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-08-16 15:20     ` Andreas Färber
@ 2014-08-18 16:10         ` Stephen Warren
  -1 siblings, 0 replies; 42+ messages in thread
From: Stephen Warren @ 2014-08-18 16:10 UTC (permalink / raw)
  To: Andreas Färber, Dylan Reid, linux-tegra-u79uwXL29TY76Z2rM5mHXA
  Cc: thierry.reding-Re5JQEeQqe8AvxtiuMwx3w,
	abrestic-F7+t8E8rja9g9hUCZPvPmw,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	olof-nZhT3qVonbNeoWH0uzbU5w

On 08/16/2014 09:20 AM, Andreas Färber wrote:
> Hi,
>
> Am 13.08.2014 21:14, schrieb Dylan Reid:
>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>> processor and is similar to the Venice2 reference platform.
>>
>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>> and work on the 1266x768 models.  The HD models haven't yet been
>> tested.
>>
>> WiFi does not work yet, it needs at least some PMIC changes to enable
>> the 32k clock.
>>
>> The elan trackpad is not yet functional but hopefully will be soon as
>> there are patches under review.
>>
>> There is also an issue on reboot because the TPM isn't reset.  It will
>> cause the stock firmware to enter recovery mode.  This can be worked
>> around by an EC-reset, press the refresh and power keys at the same
>> time.

>> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts b/arch/arm/boot/dts/tegra124-nyan-big.dts
>> new file mode 100644
>> index 0000000..79f1852
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
>> @@ -0,0 +1,1136 @@
>> +/dts-v1/;
>> +
>> +#include <dt-bindings/input/input.h>
>> +#include "tegra124.dtsi"
>> +
>> +/ {
>> +	model = "Acer Chromebook 13";
>> +	compatible = "google,nyan-big", "nvidia,tegra124";
>
> In light of v1 and the above commit message referring to this as Google
> Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
> "google,nyan" as secondary string, independent of the new file name?

Despite this board having been derived from Nyan, it isn't Nyan, so I 
don't think Nyan should be part of any compatible value, nor a separate 
compatible value.

>> +	pinmux: pinmux@0,70000868 {
>> +		pinctrl-names = "default";
>> +		pinctrl-0 = <&pinmux_default>;
>> +
>> +		pinmux_default: common {
>> +			dap_mclk1_pw4 {
>
> Any need to have the nodes this way? Shouldn't this rather be
> dap-mclk1-pw4 as node name by conventions, with a dap_mclk1_pw4 label
> for referencing if needed? Same below, obviously.

Underscores are consistent with at least all the other Tegra DTs, so I 
think this is best as is.

>> +	pwm: pwm@0,7000a000 {
>
> Add the label to the .dtsi where the node is first declared? Then you
> can override it the safer &pwm { ... }; way. Same for all other nodes
> being extended/overridden here - that's what your colleagues requested
> for Spring. It'll help with the 80 char limit further below by reducing
> indentation.

We certainly do have the pwm label in *.dtsi for other SoCs, so we 
should probably move the label there.

Using the &pwm {} syntax would be inconsistent with all the other Tegra 
DTs, and isn't really any safer; the HW isn't going to change, so once 
this is written, it should continue to "just work".

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-18 16:10         ` Stephen Warren
  0 siblings, 0 replies; 42+ messages in thread
From: Stephen Warren @ 2014-08-18 16:10 UTC (permalink / raw)
  To: linux-arm-kernel

On 08/16/2014 09:20 AM, Andreas F?rber wrote:
> Hi,
>
> Am 13.08.2014 21:14, schrieb Dylan Reid:
>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>> processor and is similar to the Venice2 reference platform.
>>
>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>> and work on the 1266x768 models.  The HD models haven't yet been
>> tested.
>>
>> WiFi does not work yet, it needs at least some PMIC changes to enable
>> the 32k clock.
>>
>> The elan trackpad is not yet functional but hopefully will be soon as
>> there are patches under review.
>>
>> There is also an issue on reboot because the TPM isn't reset.  It will
>> cause the stock firmware to enter recovery mode.  This can be worked
>> around by an EC-reset, press the refresh and power keys at the same
>> time.

>> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts b/arch/arm/boot/dts/tegra124-nyan-big.dts
>> new file mode 100644
>> index 0000000..79f1852
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
>> @@ -0,0 +1,1136 @@
>> +/dts-v1/;
>> +
>> +#include <dt-bindings/input/input.h>
>> +#include "tegra124.dtsi"
>> +
>> +/ {
>> +	model = "Acer Chromebook 13";
>> +	compatible = "google,nyan-big", "nvidia,tegra124";
>
> In light of v1 and the above commit message referring to this as Google
> Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
> "google,nyan" as secondary string, independent of the new file name?

Despite this board having been derived from Nyan, it isn't Nyan, so I 
don't think Nyan should be part of any compatible value, nor a separate 
compatible value.

>> +	pinmux: pinmux at 0,70000868 {
>> +		pinctrl-names = "default";
>> +		pinctrl-0 = <&pinmux_default>;
>> +
>> +		pinmux_default: common {
>> +			dap_mclk1_pw4 {
>
> Any need to have the nodes this way? Shouldn't this rather be
> dap-mclk1-pw4 as node name by conventions, with a dap_mclk1_pw4 label
> for referencing if needed? Same below, obviously.

Underscores are consistent with at least all the other Tegra DTs, so I 
think this is best as is.

>> +	pwm: pwm at 0,7000a000 {
>
> Add the label to the .dtsi where the node is first declared? Then you
> can override it the safer &pwm { ... }; way. Same for all other nodes
> being extended/overridden here - that's what your colleagues requested
> for Spring. It'll help with the 80 char limit further below by reducing
> indentation.

We certainly do have the pwm label in *.dtsi for other SoCs, so we 
should probably move the label there.

Using the &pwm {} syntax would be inconsistent with all the other Tegra 
DTs, and isn't really any safer; the HW isn't going to change, so once 
this is written, it should continue to "just work".

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-08-18 16:10         ` Stephen Warren
@ 2014-08-18 17:03             ` Andreas Färber
  -1 siblings, 0 replies; 42+ messages in thread
From: Andreas Färber @ 2014-08-18 17:03 UTC (permalink / raw)
  To: Stephen Warren, Dylan Reid, linux-tegra-u79uwXL29TY76Z2rM5mHXA
  Cc: thierry.reding-Re5JQEeQqe8AvxtiuMwx3w,
	abrestic-F7+t8E8rja9g9hUCZPvPmw,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	olof-nZhT3qVonbNeoWH0uzbU5w, Doug Anderson

Am 18.08.2014 18:10, schrieb Stephen Warren:
> On 08/16/2014 09:20 AM, Andreas Färber wrote:
>> Am 13.08.2014 21:14, schrieb Dylan Reid:
>>> +    pinmux: pinmux@0,70000868 {
>>> +        pinctrl-names = "default";
>>> +        pinctrl-0 = <&pinmux_default>;
>>> +
>>> +        pinmux_default: common {
>>> +            dap_mclk1_pw4 {
>>
>> Any need to have the nodes this way? Shouldn't this rather be
>> dap-mclk1-pw4 as node name by conventions, with a dap_mclk1_pw4 label
>> for referencing if needed? Same below, obviously.
> 
> Underscores are consistent with at least all the other Tegra DTs, so I
> think this is best as is.
> 
>>> +    pwm: pwm@0,7000a000 {
>>
>> Add the label to the .dtsi where the node is first declared? Then you
>> can override it the safer &pwm { ... }; way. Same for all other nodes
>> being extended/overridden here - that's what your colleagues requested
>> for Spring. It'll help with the 80 char limit further below by reducing
>> indentation.
> 
> We certainly do have the pwm label in *.dtsi for other SoCs, so we
> should probably move the label there.
> 
> Using the &pwm {} syntax would be inconsistent with all the other Tegra
> DTs, and isn't really any safer; the HW isn't going to change, so once
> this is written, it should continue to "just work".

For exactly those consistency reasons I was asked to refactor the whole
set of exynos5250-*.dts files despite having no relation to them -
turning my 1 .dts patch into a large series that still isn't applied...

It's funny and disappointing that every Linux maintainer seems to have
their own conventions, and not even the Google Chrome people can agree
on a common style or live up to what they ask of others.

As for &pwm {}, I understood it's "safer" in that mismatches in the node
name will lead to compilation errors rather than silent runtime misbehavior.

Regards,
Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-18 17:03             ` Andreas Färber
  0 siblings, 0 replies; 42+ messages in thread
From: Andreas Färber @ 2014-08-18 17:03 UTC (permalink / raw)
  To: linux-arm-kernel

Am 18.08.2014 18:10, schrieb Stephen Warren:
> On 08/16/2014 09:20 AM, Andreas F?rber wrote:
>> Am 13.08.2014 21:14, schrieb Dylan Reid:
>>> +    pinmux: pinmux at 0,70000868 {
>>> +        pinctrl-names = "default";
>>> +        pinctrl-0 = <&pinmux_default>;
>>> +
>>> +        pinmux_default: common {
>>> +            dap_mclk1_pw4 {
>>
>> Any need to have the nodes this way? Shouldn't this rather be
>> dap-mclk1-pw4 as node name by conventions, with a dap_mclk1_pw4 label
>> for referencing if needed? Same below, obviously.
> 
> Underscores are consistent with at least all the other Tegra DTs, so I
> think this is best as is.
> 
>>> +    pwm: pwm at 0,7000a000 {
>>
>> Add the label to the .dtsi where the node is first declared? Then you
>> can override it the safer &pwm { ... }; way. Same for all other nodes
>> being extended/overridden here - that's what your colleagues requested
>> for Spring. It'll help with the 80 char limit further below by reducing
>> indentation.
> 
> We certainly do have the pwm label in *.dtsi for other SoCs, so we
> should probably move the label there.
> 
> Using the &pwm {} syntax would be inconsistent with all the other Tegra
> DTs, and isn't really any safer; the HW isn't going to change, so once
> this is written, it should continue to "just work".

For exactly those consistency reasons I was asked to refactor the whole
set of exynos5250-*.dts files despite having no relation to them -
turning my 1 .dts patch into a large series that still isn't applied...

It's funny and disappointing that every Linux maintainer seems to have
their own conventions, and not even the Google Chrome people can agree
on a common style or live up to what they ask of others.

As for &pwm {}, I understood it's "safer" in that mismatches in the node
name will lead to compilation errors rather than silent runtime misbehavior.

Regards,
Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N?rnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imend?rffer; HRB 16746 AG N?rnberg

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-08-13 19:14 ` Dylan Reid
@ 2014-08-18 23:05     ` Andrew Bresticker
  -1 siblings, 0 replies; 42+ messages in thread
From: Andrew Bresticker @ 2014-08-18 23:05 UTC (permalink / raw)
  To: Dylan Reid
  Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA, Stephen Warren,
	Thierry Reding,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Olof Johansson

> WiFi does not work yet, it needs at least some PMIC changes to enable
> the 32k clock.

In addition to getting the PMIC to generate the 32k clock at 1.8V
(instead of the 5V it's operating at now), you'll also need...

> --- /dev/null
> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts

> +                       sdmmc1_clk_pz0 {
> +                               nvidia,pins = "sdmmc1_clk_pz0";
> +                               nvidia,function = "sdmmc1";
> +                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;

... to turn on the input enable for the SD clock pin on the SDIO
interface.  Unfortunately that still isn't sufficient to get WiFi
working as SDIO commands are still timing out.  But the mwifiex card
is at least attempting to probe now.

> +                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +                       };

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-18 23:05     ` Andrew Bresticker
  0 siblings, 0 replies; 42+ messages in thread
From: Andrew Bresticker @ 2014-08-18 23:05 UTC (permalink / raw)
  To: linux-arm-kernel

> WiFi does not work yet, it needs at least some PMIC changes to enable
> the 32k clock.

In addition to getting the PMIC to generate the 32k clock at 1.8V
(instead of the 5V it's operating at now), you'll also need...

> --- /dev/null
> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts

> +                       sdmmc1_clk_pz0 {
> +                               nvidia,pins = "sdmmc1_clk_pz0";
> +                               nvidia,function = "sdmmc1";
> +                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;

... to turn on the input enable for the SD clock pin on the SDIO
interface.  Unfortunately that still isn't sufficient to get WiFi
working as SDIO commands are still timing out.  But the mwifiex card
is at least attempting to probe now.

> +                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> +                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
> +                       };

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-08-18 16:10         ` Stephen Warren
@ 2014-08-18 23:24             ` Andrew Bresticker
  -1 siblings, 0 replies; 42+ messages in thread
From: Andrew Bresticker @ 2014-08-18 23:24 UTC (permalink / raw)
  To: Stephen Warren
  Cc: Andreas Färber, Dylan Reid,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA, Thierry Reding,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Olof Johansson

On Mon, Aug 18, 2014 at 9:10 AM, Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote:
> On 08/16/2014 09:20 AM, Andreas Färber wrote:
>>
>> Hi,
>>
>> Am 13.08.2014 21:14, schrieb Dylan Reid:
>>>
>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>>> processor and is similar to the Venice2 reference platform.
>>>
>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>>> and work on the 1266x768 models.  The HD models haven't yet been
>>> tested.
>>>
>>> WiFi does not work yet, it needs at least some PMIC changes to enable
>>> the 32k clock.
>>>
>>> The elan trackpad is not yet functional but hopefully will be soon as
>>> there are patches under review.
>>>
>>> There is also an issue on reboot because the TPM isn't reset.  It will
>>> cause the stock firmware to enter recovery mode.  This can be worked
>>> around by an EC-reset, press the refresh and power keys at the same
>>> time.
>
>
>>> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts
>>> b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>> new file mode 100644
>>> index 0000000..79f1852
>>> --- /dev/null
>>> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>> @@ -0,0 +1,1136 @@
>>> +/dts-v1/;
>>> +
>>> +#include <dt-bindings/input/input.h>
>>> +#include "tegra124.dtsi"
>>> +
>>> +/ {
>>> +       model = "Acer Chromebook 13";
>>> +       compatible = "google,nyan-big", "nvidia,tegra124";
>>
>>
>> In light of v1 and the above commit message referring to this as Google
>> Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
>> "google,nyan" as secondary string, independent of the new file name?
>
>
> Despite this board having been derived from Nyan, it isn't Nyan, so I don't
> think Nyan should be part of any compatible value, nor a separate compatible
> value.

"google,nyan-big" is the compatible string that the bootloader on
these devices looks for.  It's also the convention we are now using
for our ARM devices, as Olof has already mentioned.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-18 23:24             ` Andrew Bresticker
  0 siblings, 0 replies; 42+ messages in thread
From: Andrew Bresticker @ 2014-08-18 23:24 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Aug 18, 2014 at 9:10 AM, Stephen Warren <swarren@wwwdotorg.org> wrote:
> On 08/16/2014 09:20 AM, Andreas F?rber wrote:
>>
>> Hi,
>>
>> Am 13.08.2014 21:14, schrieb Dylan Reid:
>>>
>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>>> processor and is similar to the Venice2 reference platform.
>>>
>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>>> and work on the 1266x768 models.  The HD models haven't yet been
>>> tested.
>>>
>>> WiFi does not work yet, it needs at least some PMIC changes to enable
>>> the 32k clock.
>>>
>>> The elan trackpad is not yet functional but hopefully will be soon as
>>> there are patches under review.
>>>
>>> There is also an issue on reboot because the TPM isn't reset.  It will
>>> cause the stock firmware to enter recovery mode.  This can be worked
>>> around by an EC-reset, press the refresh and power keys at the same
>>> time.
>
>
>>> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts
>>> b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>> new file mode 100644
>>> index 0000000..79f1852
>>> --- /dev/null
>>> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>> @@ -0,0 +1,1136 @@
>>> +/dts-v1/;
>>> +
>>> +#include <dt-bindings/input/input.h>
>>> +#include "tegra124.dtsi"
>>> +
>>> +/ {
>>> +       model = "Acer Chromebook 13";
>>> +       compatible = "google,nyan-big", "nvidia,tegra124";
>>
>>
>> In light of v1 and the above commit message referring to this as Google
>> Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
>> "google,nyan" as secondary string, independent of the new file name?
>
>
> Despite this board having been derived from Nyan, it isn't Nyan, so I don't
> think Nyan should be part of any compatible value, nor a separate compatible
> value.

"google,nyan-big" is the compatible string that the bootloader on
these devices looks for.  It's also the convention we are now using
for our ARM devices, as Olof has already mentioned.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-08-18 23:24             ` Andrew Bresticker
@ 2014-08-18 23:43                 ` Stephen Warren
  -1 siblings, 0 replies; 42+ messages in thread
From: Stephen Warren @ 2014-08-18 23:43 UTC (permalink / raw)
  To: Andrew Bresticker
  Cc: Andreas Färber, Dylan Reid,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA, Thierry Reding,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Olof Johansson

On 08/18/2014 05:24 PM, Andrew Bresticker wrote:
> On Mon, Aug 18, 2014 at 9:10 AM, Stephen Warren <swarren-3lzwWm7+WeqIh2JisoIxyg@public.gmane.orgg> wrote:
>> On 08/16/2014 09:20 AM, Andreas Färber wrote:
>>>
>>> Hi,
>>>
>>> Am 13.08.2014 21:14, schrieb Dylan Reid:
>>>>
>>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>>>> processor and is similar to the Venice2 reference platform.
>>>>
>>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>>>> and work on the 1266x768 models.  The HD models haven't yet been
>>>> tested.
>>>>
>>>> WiFi does not work yet, it needs at least some PMIC changes to enable
>>>> the 32k clock.
>>>>
>>>> The elan trackpad is not yet functional but hopefully will be soon as
>>>> there are patches under review.
>>>>
>>>> There is also an issue on reboot because the TPM isn't reset.  It will
>>>> cause the stock firmware to enter recovery mode.  This can be worked
>>>> around by an EC-reset, press the refresh and power keys at the same
>>>> time.
>>
>>
>>>> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>> b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>> new file mode 100644
>>>> index 0000000..79f1852
>>>> --- /dev/null
>>>> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>> @@ -0,0 +1,1136 @@
>>>> +/dts-v1/;
>>>> +
>>>> +#include <dt-bindings/input/input.h>
>>>> +#include "tegra124.dtsi"
>>>> +
>>>> +/ {
>>>> +       model = "Acer Chromebook 13";
>>>> +       compatible = "google,nyan-big", "nvidia,tegra124";
>>>
>>>
>>> In light of v1 and the above commit message referring to this as Google
>>> Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
>>> "google,nyan" as secondary string, independent of the new file name?
>>
>>
>> Despite this board having been derived from Nyan, it isn't Nyan, so I don't
>> think Nyan should be part of any compatible value, nor a separate compatible
>> value.
>
> "google,nyan-big" is the compatible string that the bootloader on
> these devices looks for.  It's also the convention we are now using
> for our ARM devices, as Olof has already mentioned.

I don't understand "that the bootloader looks for"; why is the 
bootloader doing anything w.r.t the compatible value in the DT that's 
passed to the kernel.

Olof also mentioned that if I had any better ideas on file naming, I 
should point them out. As I mentioned in response, there's zero need for 
all the files or compatible values to have "nyan" in them in order to 
include any common .dtsi file, which was the justification for having 
"nyan" in the filename, IIRC.

Again, this board *isn't* Nyan, so it should pretend that it is.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-18 23:43                 ` Stephen Warren
  0 siblings, 0 replies; 42+ messages in thread
From: Stephen Warren @ 2014-08-18 23:43 UTC (permalink / raw)
  To: linux-arm-kernel

On 08/18/2014 05:24 PM, Andrew Bresticker wrote:
> On Mon, Aug 18, 2014 at 9:10 AM, Stephen Warren <swarren@wwwdotorg.org> wrote:
>> On 08/16/2014 09:20 AM, Andreas F?rber wrote:
>>>
>>> Hi,
>>>
>>> Am 13.08.2014 21:14, schrieb Dylan Reid:
>>>>
>>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>>>> processor and is similar to the Venice2 reference platform.
>>>>
>>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>>>> and work on the 1266x768 models.  The HD models haven't yet been
>>>> tested.
>>>>
>>>> WiFi does not work yet, it needs at least some PMIC changes to enable
>>>> the 32k clock.
>>>>
>>>> The elan trackpad is not yet functional but hopefully will be soon as
>>>> there are patches under review.
>>>>
>>>> There is also an issue on reboot because the TPM isn't reset.  It will
>>>> cause the stock firmware to enter recovery mode.  This can be worked
>>>> around by an EC-reset, press the refresh and power keys at the same
>>>> time.
>>
>>
>>>> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>> b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>> new file mode 100644
>>>> index 0000000..79f1852
>>>> --- /dev/null
>>>> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>> @@ -0,0 +1,1136 @@
>>>> +/dts-v1/;
>>>> +
>>>> +#include <dt-bindings/input/input.h>
>>>> +#include "tegra124.dtsi"
>>>> +
>>>> +/ {
>>>> +       model = "Acer Chromebook 13";
>>>> +       compatible = "google,nyan-big", "nvidia,tegra124";
>>>
>>>
>>> In light of v1 and the above commit message referring to this as Google
>>> Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
>>> "google,nyan" as secondary string, independent of the new file name?
>>
>>
>> Despite this board having been derived from Nyan, it isn't Nyan, so I don't
>> think Nyan should be part of any compatible value, nor a separate compatible
>> value.
>
> "google,nyan-big" is the compatible string that the bootloader on
> these devices looks for.  It's also the convention we are now using
> for our ARM devices, as Olof has already mentioned.

I don't understand "that the bootloader looks for"; why is the 
bootloader doing anything w.r.t the compatible value in the DT that's 
passed to the kernel.

Olof also mentioned that if I had any better ideas on file naming, I 
should point them out. As I mentioned in response, there's zero need for 
all the files or compatible values to have "nyan" in them in order to 
include any common .dtsi file, which was the justification for having 
"nyan" in the filename, IIRC.

Again, this board *isn't* Nyan, so it should pretend that it is.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-08-18 23:43                 ` Stephen Warren
@ 2014-08-19  0:11                     ` Andrew Bresticker
  -1 siblings, 0 replies; 42+ messages in thread
From: Andrew Bresticker @ 2014-08-19  0:11 UTC (permalink / raw)
  To: Stephen Warren
  Cc: Andreas Färber, Dylan Reid,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA, Thierry Reding,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Olof Johansson

On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote:
> On 08/18/2014 05:24 PM, Andrew Bresticker wrote:
>>
>> On Mon, Aug 18, 2014 at 9:10 AM, Stephen Warren <swarren@wwwdotorg.org>
>> wrote:
>>>
>>> On 08/16/2014 09:20 AM, Andreas Färber wrote:
>>>>
>>>>
>>>> Hi,
>>>>
>>>> Am 13.08.2014 21:14, schrieb Dylan Reid:
>>>>>
>>>>>
>>>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>>>>> processor and is similar to the Venice2 reference platform.
>>>>>
>>>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>>>>> and work on the 1266x768 models.  The HD models haven't yet been
>>>>> tested.
>>>>>
>>>>> WiFi does not work yet, it needs at least some PMIC changes to enable
>>>>> the 32k clock.
>>>>>
>>>>> The elan trackpad is not yet functional but hopefully will be soon as
>>>>> there are patches under review.
>>>>>
>>>>> There is also an issue on reboot because the TPM isn't reset.  It will
>>>>> cause the stock firmware to enter recovery mode.  This can be worked
>>>>> around by an EC-reset, press the refresh and power keys at the same
>>>>> time.
>>>
>>>
>>>
>>>>> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>> b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>> new file mode 100644
>>>>> index 0000000..79f1852
>>>>> --- /dev/null
>>>>> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>> @@ -0,0 +1,1136 @@
>>>>> +/dts-v1/;
>>>>> +
>>>>> +#include <dt-bindings/input/input.h>
>>>>> +#include "tegra124.dtsi"
>>>>> +
>>>>> +/ {
>>>>> +       model = "Acer Chromebook 13";
>>>>> +       compatible = "google,nyan-big", "nvidia,tegra124";
>>>>
>>>>
>>>>
>>>> In light of v1 and the above commit message referring to this as Google
>>>> Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
>>>> "google,nyan" as secondary string, independent of the new file name?
>>>
>>>
>>>
>>> Despite this board having been derived from Nyan, it isn't Nyan, so I
>>> don't
>>> think Nyan should be part of any compatible value, nor a separate
>>> compatible
>>> value.
>>
>>
>> "google,nyan-big" is the compatible string that the bootloader on
>> these devices looks for.  It's also the convention we are now using
>> for our ARM devices, as Olof has already mentioned.
>
>
> I don't understand "that the bootloader looks for"; why is the bootloader
> doing anything w.r.t the compatible value in the DT that's passed to the
> kernel.

The ChromeOS bootloader ("depthcharge") boots FIT images and selects
the appropriate device-tree from the image based on the compatible
string.  On Big boards, it looks for "google,nyan-big".  This only
becomes an issue if there are multiple device-trees in the FIT image.
If there's only a single configuration (or you chain-load U-Boot),
then the bootloader will boot with that configuration.  If you build a
kernel image in the ChromiumOS environment, however, you'll end up
with multiple device-trees (all those built by the kernel config at
least) in the FIT image - this is what allows us to boot the same
binary on different boards.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-19  0:11                     ` Andrew Bresticker
  0 siblings, 0 replies; 42+ messages in thread
From: Andrew Bresticker @ 2014-08-19  0:11 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
> On 08/18/2014 05:24 PM, Andrew Bresticker wrote:
>>
>> On Mon, Aug 18, 2014 at 9:10 AM, Stephen Warren <swarren@wwwdotorg.org>
>> wrote:
>>>
>>> On 08/16/2014 09:20 AM, Andreas F?rber wrote:
>>>>
>>>>
>>>> Hi,
>>>>
>>>> Am 13.08.2014 21:14, schrieb Dylan Reid:
>>>>>
>>>>>
>>>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>>>>> processor and is similar to the Venice2 reference platform.
>>>>>
>>>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>>>>> and work on the 1266x768 models.  The HD models haven't yet been
>>>>> tested.
>>>>>
>>>>> WiFi does not work yet, it needs at least some PMIC changes to enable
>>>>> the 32k clock.
>>>>>
>>>>> The elan trackpad is not yet functional but hopefully will be soon as
>>>>> there are patches under review.
>>>>>
>>>>> There is also an issue on reboot because the TPM isn't reset.  It will
>>>>> cause the stock firmware to enter recovery mode.  This can be worked
>>>>> around by an EC-reset, press the refresh and power keys at the same
>>>>> time.
>>>
>>>
>>>
>>>>> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>> b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>> new file mode 100644
>>>>> index 0000000..79f1852
>>>>> --- /dev/null
>>>>> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>> @@ -0,0 +1,1136 @@
>>>>> +/dts-v1/;
>>>>> +
>>>>> +#include <dt-bindings/input/input.h>
>>>>> +#include "tegra124.dtsi"
>>>>> +
>>>>> +/ {
>>>>> +       model = "Acer Chromebook 13";
>>>>> +       compatible = "google,nyan-big", "nvidia,tegra124";
>>>>
>>>>
>>>>
>>>> In light of v1 and the above commit message referring to this as Google
>>>> Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
>>>> "google,nyan" as secondary string, independent of the new file name?
>>>
>>>
>>>
>>> Despite this board having been derived from Nyan, it isn't Nyan, so I
>>> don't
>>> think Nyan should be part of any compatible value, nor a separate
>>> compatible
>>> value.
>>
>>
>> "google,nyan-big" is the compatible string that the bootloader on
>> these devices looks for.  It's also the convention we are now using
>> for our ARM devices, as Olof has already mentioned.
>
>
> I don't understand "that the bootloader looks for"; why is the bootloader
> doing anything w.r.t the compatible value in the DT that's passed to the
> kernel.

The ChromeOS bootloader ("depthcharge") boots FIT images and selects
the appropriate device-tree from the image based on the compatible
string.  On Big boards, it looks for "google,nyan-big".  This only
becomes an issue if there are multiple device-trees in the FIT image.
If there's only a single configuration (or you chain-load U-Boot),
then the bootloader will boot with that configuration.  If you build a
kernel image in the ChromiumOS environment, however, you'll end up
with multiple device-trees (all those built by the kernel config at
least) in the FIT image - this is what allows us to boot the same
binary on different boards.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-08-19  0:11                     ` Andrew Bresticker
@ 2014-08-19 21:47                         ` Stephen Warren
  -1 siblings, 0 replies; 42+ messages in thread
From: Stephen Warren @ 2014-08-19 21:47 UTC (permalink / raw)
  To: Andrew Bresticker
  Cc: Andreas Färber, Dylan Reid,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA, Thierry Reding,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Olof Johansson

On 08/18/2014 06:11 PM, Andrew Bresticker wrote:
> On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren-3lzwWm7+WeqIh2JisoIxyg@public.gmane.orgg> wrote:
>> On 08/18/2014 05:24 PM, Andrew Bresticker wrote:
>>>
>>> On Mon, Aug 18, 2014 at 9:10 AM, Stephen Warren <swarren@wwwdotorg.org>
>>> wrote:
>>>>
>>>> On 08/16/2014 09:20 AM, Andreas Färber wrote:
>>>>>
>>>>>
>>>>> Hi,
>>>>>
>>>>> Am 13.08.2014 21:14, schrieb Dylan Reid:
>>>>>>
>>>>>>
>>>>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>>>>>> processor and is similar to the Venice2 reference platform.
>>>>>>
>>>>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>>>>>> and work on the 1266x768 models.  The HD models haven't yet been
>>>>>> tested.
>>>>>>
>>>>>> WiFi does not work yet, it needs at least some PMIC changes to enable
>>>>>> the 32k clock.
>>>>>>
>>>>>> The elan trackpad is not yet functional but hopefully will be soon as
>>>>>> there are patches under review.
>>>>>>
>>>>>> There is also an issue on reboot because the TPM isn't reset.  It will
>>>>>> cause the stock firmware to enter recovery mode.  This can be worked
>>>>>> around by an EC-reset, press the refresh and power keys at the same
>>>>>> time.
>>>>
>>>>
>>>>
>>>>>> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>>> b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>>> new file mode 100644
>>>>>> index 0000000..79f1852
>>>>>> --- /dev/null
>>>>>> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>>> @@ -0,0 +1,1136 @@
>>>>>> +/dts-v1/;
>>>>>> +
>>>>>> +#include <dt-bindings/input/input.h>
>>>>>> +#include "tegra124.dtsi"
>>>>>> +
>>>>>> +/ {
>>>>>> +       model = "Acer Chromebook 13";
>>>>>> +       compatible = "google,nyan-big", "nvidia,tegra124";
>>>>>
>>>>>
>>>>>
>>>>> In light of v1 and the above commit message referring to this as Google
>>>>> Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
>>>>> "google,nyan" as secondary string, independent of the new file name?
>>>>
>>>>
>>>>
>>>> Despite this board having been derived from Nyan, it isn't Nyan, so I
>>>> don't
>>>> think Nyan should be part of any compatible value, nor a separate
>>>> compatible
>>>> value.
>>>
>>>
>>> "google,nyan-big" is the compatible string that the bootloader on
>>> these devices looks for.  It's also the convention we are now using
>>> for our ARM devices, as Olof has already mentioned.
>>
>> I don't understand "that the bootloader looks for"; why is the bootloader
>> doing anything w.r.t the compatible value in the DT that's passed to the
>> kernel.
>
> The ChromeOS bootloader ("depthcharge") boots FIT images and selects
> the appropriate device-tree from the image based on the compatible
> string.  On Big boards, it looks for "google,nyan-big".  This only
> becomes an issue if there are multiple device-trees in the FIT image.
> If there's only a single configuration (or you chain-load U-Boot),
> then the bootloader will boot with that configuration.  If you build a
> kernel image in the ChromiumOS environment, however, you'll end up
> with multiple device-trees (all those built by the kernel config at
> least) in the FIT image - this is what allows us to boot the same
> binary on different boards.

This just makes me dislike FIT (and DT ABIs) even more, although I 
suppose the same issue would arise if the DTBs were stored in separate 
files and looked up by filename.

I have to say this sucks, because it means that a downstream bootloader 
is imposing an ABI on the mainline kernel without a chance to fix things 
during upstreaming. For all other boards, we've concentrated on mainline 
U-Boot as the bootloader precisely so that strange behaviour of our 
downstream product kernels don't force the hand of the mainline kernel 
design.

Still, I suppose I have no choice but to drop my objection here.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-19 21:47                         ` Stephen Warren
  0 siblings, 0 replies; 42+ messages in thread
From: Stephen Warren @ 2014-08-19 21:47 UTC (permalink / raw)
  To: linux-arm-kernel

On 08/18/2014 06:11 PM, Andrew Bresticker wrote:
> On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
>> On 08/18/2014 05:24 PM, Andrew Bresticker wrote:
>>>
>>> On Mon, Aug 18, 2014 at 9:10 AM, Stephen Warren <swarren@wwwdotorg.org>
>>> wrote:
>>>>
>>>> On 08/16/2014 09:20 AM, Andreas F?rber wrote:
>>>>>
>>>>>
>>>>> Hi,
>>>>>
>>>>> Am 13.08.2014 21:14, schrieb Dylan Reid:
>>>>>>
>>>>>>
>>>>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>>>>>> processor and is similar to the Venice2 reference platform.
>>>>>>
>>>>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>>>>>> and work on the 1266x768 models.  The HD models haven't yet been
>>>>>> tested.
>>>>>>
>>>>>> WiFi does not work yet, it needs at least some PMIC changes to enable
>>>>>> the 32k clock.
>>>>>>
>>>>>> The elan trackpad is not yet functional but hopefully will be soon as
>>>>>> there are patches under review.
>>>>>>
>>>>>> There is also an issue on reboot because the TPM isn't reset.  It will
>>>>>> cause the stock firmware to enter recovery mode.  This can be worked
>>>>>> around by an EC-reset, press the refresh and power keys at the same
>>>>>> time.
>>>>
>>>>
>>>>
>>>>>> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>>> b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>>> new file mode 100644
>>>>>> index 0000000..79f1852
>>>>>> --- /dev/null
>>>>>> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>>> @@ -0,0 +1,1136 @@
>>>>>> +/dts-v1/;
>>>>>> +
>>>>>> +#include <dt-bindings/input/input.h>
>>>>>> +#include "tegra124.dtsi"
>>>>>> +
>>>>>> +/ {
>>>>>> +       model = "Acer Chromebook 13";
>>>>>> +       compatible = "google,nyan-big", "nvidia,tegra124";
>>>>>
>>>>>
>>>>>
>>>>> In light of v1 and the above commit message referring to this as Google
>>>>> Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
>>>>> "google,nyan" as secondary string, independent of the new file name?
>>>>
>>>>
>>>>
>>>> Despite this board having been derived from Nyan, it isn't Nyan, so I
>>>> don't
>>>> think Nyan should be part of any compatible value, nor a separate
>>>> compatible
>>>> value.
>>>
>>>
>>> "google,nyan-big" is the compatible string that the bootloader on
>>> these devices looks for.  It's also the convention we are now using
>>> for our ARM devices, as Olof has already mentioned.
>>
>> I don't understand "that the bootloader looks for"; why is the bootloader
>> doing anything w.r.t the compatible value in the DT that's passed to the
>> kernel.
>
> The ChromeOS bootloader ("depthcharge") boots FIT images and selects
> the appropriate device-tree from the image based on the compatible
> string.  On Big boards, it looks for "google,nyan-big".  This only
> becomes an issue if there are multiple device-trees in the FIT image.
> If there's only a single configuration (or you chain-load U-Boot),
> then the bootloader will boot with that configuration.  If you build a
> kernel image in the ChromiumOS environment, however, you'll end up
> with multiple device-trees (all those built by the kernel config at
> least) in the FIT image - this is what allows us to boot the same
> binary on different boards.

This just makes me dislike FIT (and DT ABIs) even more, although I 
suppose the same issue would arise if the DTBs were stored in separate 
files and looked up by filename.

I have to say this sucks, because it means that a downstream bootloader 
is imposing an ABI on the mainline kernel without a chance to fix things 
during upstreaming. For all other boards, we've concentrated on mainline 
U-Boot as the bootloader precisely so that strange behaviour of our 
downstream product kernels don't force the hand of the mainline kernel 
design.

Still, I suppose I have no choice but to drop my objection here.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-08-19 21:47                         ` Stephen Warren
@ 2014-08-20  5:36                             ` Thierry Reding
  -1 siblings, 0 replies; 42+ messages in thread
From: Thierry Reding @ 2014-08-20  5:36 UTC (permalink / raw)
  To: Stephen Warren
  Cc: Andrew Bresticker, Andreas Färber, Dylan Reid,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Olof Johansson

[-- Attachment #1: Type: text/plain, Size: 4510 bytes --]

On Tue, Aug 19, 2014 at 03:47:41PM -0600, Stephen Warren wrote:
> On 08/18/2014 06:11 PM, Andrew Bresticker wrote:
> >On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote:
> >>On 08/18/2014 05:24 PM, Andrew Bresticker wrote:
> >>>
> >>>On Mon, Aug 18, 2014 at 9:10 AM, Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
> >>>wrote:
> >>>>
> >>>>On 08/16/2014 09:20 AM, Andreas Färber wrote:
> >>>>>
> >>>>>
> >>>>>Hi,
> >>>>>
> >>>>>Am 13.08.2014 21:14, schrieb Dylan Reid:
> >>>>>>
> >>>>>>
> >>>>>>The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
> >>>>>>processor and is similar to the Venice2 reference platform.
> >>>>>>
> >>>>>>The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
> >>>>>>and work on the 1266x768 models.  The HD models haven't yet been
> >>>>>>tested.
> >>>>>>
> >>>>>>WiFi does not work yet, it needs at least some PMIC changes to enable
> >>>>>>the 32k clock.
> >>>>>>
> >>>>>>The elan trackpad is not yet functional but hopefully will be soon as
> >>>>>>there are patches under review.
> >>>>>>
> >>>>>>There is also an issue on reboot because the TPM isn't reset.  It will
> >>>>>>cause the stock firmware to enter recovery mode.  This can be worked
> >>>>>>around by an EC-reset, press the refresh and power keys at the same
> >>>>>>time.
> >>>>
> >>>>
> >>>>
> >>>>>>diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts
> >>>>>>b/arch/arm/boot/dts/tegra124-nyan-big.dts
> >>>>>>new file mode 100644
> >>>>>>index 0000000..79f1852
> >>>>>>--- /dev/null
> >>>>>>+++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
> >>>>>>@@ -0,0 +1,1136 @@
> >>>>>>+/dts-v1/;
> >>>>>>+
> >>>>>>+#include <dt-bindings/input/input.h>
> >>>>>>+#include "tegra124.dtsi"
> >>>>>>+
> >>>>>>+/ {
> >>>>>>+       model = "Acer Chromebook 13";
> >>>>>>+       compatible = "google,nyan-big", "nvidia,tegra124";
> >>>>>
> >>>>>
> >>>>>
> >>>>>In light of v1 and the above commit message referring to this as Google
> >>>>>Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
> >>>>>"google,nyan" as secondary string, independent of the new file name?
> >>>>
> >>>>
> >>>>
> >>>>Despite this board having been derived from Nyan, it isn't Nyan, so I
> >>>>don't
> >>>>think Nyan should be part of any compatible value, nor a separate
> >>>>compatible
> >>>>value.
> >>>
> >>>
> >>>"google,nyan-big" is the compatible string that the bootloader on
> >>>these devices looks for.  It's also the convention we are now using
> >>>for our ARM devices, as Olof has already mentioned.
> >>
> >>I don't understand "that the bootloader looks for"; why is the bootloader
> >>doing anything w.r.t the compatible value in the DT that's passed to the
> >>kernel.
> >
> >The ChromeOS bootloader ("depthcharge") boots FIT images and selects
> >the appropriate device-tree from the image based on the compatible
> >string.  On Big boards, it looks for "google,nyan-big".  This only
> >becomes an issue if there are multiple device-trees in the FIT image.
> >If there's only a single configuration (or you chain-load U-Boot),
> >then the bootloader will boot with that configuration.  If you build a
> >kernel image in the ChromiumOS environment, however, you'll end up
> >with multiple device-trees (all those built by the kernel config at
> >least) in the FIT image - this is what allows us to boot the same
> >binary on different boards.
> 
> This just makes me dislike FIT (and DT ABIs) even more, although I suppose
> the same issue would arise if the DTBs were stored in separate files and
> looked up by filename.
> 
> I have to say this sucks, because it means that a downstream bootloader is
> imposing an ABI on the mainline kernel without a chance to fix things during
> upstreaming. For all other boards, we've concentrated on mainline U-Boot as
> the bootloader precisely so that strange behaviour of our downstream product
> kernels don't force the hand of the mainline kernel design.
> 
> Still, I suppose I have no choice but to drop my objection here.

Do you? We reject things all the time if they're considered not good
enough during upstreaming. The whole DT ABI debate in fact explicitly
resulted in the decision not to take any of the downstream components
into consideration when upstreaming. ABI stability only counts for
things that we've supported in one of the final releases.

Thierry

[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-20  5:36                             ` Thierry Reding
  0 siblings, 0 replies; 42+ messages in thread
From: Thierry Reding @ 2014-08-20  5:36 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Aug 19, 2014 at 03:47:41PM -0600, Stephen Warren wrote:
> On 08/18/2014 06:11 PM, Andrew Bresticker wrote:
> >On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
> >>On 08/18/2014 05:24 PM, Andrew Bresticker wrote:
> >>>
> >>>On Mon, Aug 18, 2014 at 9:10 AM, Stephen Warren <swarren@wwwdotorg.org>
> >>>wrote:
> >>>>
> >>>>On 08/16/2014 09:20 AM, Andreas F?rber wrote:
> >>>>>
> >>>>>
> >>>>>Hi,
> >>>>>
> >>>>>Am 13.08.2014 21:14, schrieb Dylan Reid:
> >>>>>>
> >>>>>>
> >>>>>>The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
> >>>>>>processor and is similar to the Venice2 reference platform.
> >>>>>>
> >>>>>>The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
> >>>>>>and work on the 1266x768 models.  The HD models haven't yet been
> >>>>>>tested.
> >>>>>>
> >>>>>>WiFi does not work yet, it needs at least some PMIC changes to enable
> >>>>>>the 32k clock.
> >>>>>>
> >>>>>>The elan trackpad is not yet functional but hopefully will be soon as
> >>>>>>there are patches under review.
> >>>>>>
> >>>>>>There is also an issue on reboot because the TPM isn't reset.  It will
> >>>>>>cause the stock firmware to enter recovery mode.  This can be worked
> >>>>>>around by an EC-reset, press the refresh and power keys at the same
> >>>>>>time.
> >>>>
> >>>>
> >>>>
> >>>>>>diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts
> >>>>>>b/arch/arm/boot/dts/tegra124-nyan-big.dts
> >>>>>>new file mode 100644
> >>>>>>index 0000000..79f1852
> >>>>>>--- /dev/null
> >>>>>>+++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
> >>>>>>@@ -0,0 +1,1136 @@
> >>>>>>+/dts-v1/;
> >>>>>>+
> >>>>>>+#include <dt-bindings/input/input.h>
> >>>>>>+#include "tegra124.dtsi"
> >>>>>>+
> >>>>>>+/ {
> >>>>>>+       model = "Acer Chromebook 13";
> >>>>>>+       compatible = "google,nyan-big", "nvidia,tegra124";
> >>>>>
> >>>>>
> >>>>>
> >>>>>In light of v1 and the above commit message referring to this as Google
> >>>>>Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
> >>>>>"google,nyan" as secondary string, independent of the new file name?
> >>>>
> >>>>
> >>>>
> >>>>Despite this board having been derived from Nyan, it isn't Nyan, so I
> >>>>don't
> >>>>think Nyan should be part of any compatible value, nor a separate
> >>>>compatible
> >>>>value.
> >>>
> >>>
> >>>"google,nyan-big" is the compatible string that the bootloader on
> >>>these devices looks for.  It's also the convention we are now using
> >>>for our ARM devices, as Olof has already mentioned.
> >>
> >>I don't understand "that the bootloader looks for"; why is the bootloader
> >>doing anything w.r.t the compatible value in the DT that's passed to the
> >>kernel.
> >
> >The ChromeOS bootloader ("depthcharge") boots FIT images and selects
> >the appropriate device-tree from the image based on the compatible
> >string.  On Big boards, it looks for "google,nyan-big".  This only
> >becomes an issue if there are multiple device-trees in the FIT image.
> >If there's only a single configuration (or you chain-load U-Boot),
> >then the bootloader will boot with that configuration.  If you build a
> >kernel image in the ChromiumOS environment, however, you'll end up
> >with multiple device-trees (all those built by the kernel config at
> >least) in the FIT image - this is what allows us to boot the same
> >binary on different boards.
> 
> This just makes me dislike FIT (and DT ABIs) even more, although I suppose
> the same issue would arise if the DTBs were stored in separate files and
> looked up by filename.
> 
> I have to say this sucks, because it means that a downstream bootloader is
> imposing an ABI on the mainline kernel without a chance to fix things during
> upstreaming. For all other boards, we've concentrated on mainline U-Boot as
> the bootloader precisely so that strange behaviour of our downstream product
> kernels don't force the hand of the mainline kernel design.
> 
> Still, I suppose I have no choice but to drop my objection here.

Do you? We reject things all the time if they're considered not good
enough during upstreaming. The whole DT ABI debate in fact explicitly
resulted in the decision not to take any of the downstream components
into consideration when upstreaming. ABI stability only counts for
things that we've supported in one of the final releases.

Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140820/c073fc53/attachment-0001.sig>

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-08-18 23:43                 ` Stephen Warren
@ 2014-08-20 13:29                     ` Olof Johansson
  -1 siblings, 0 replies; 42+ messages in thread
From: Olof Johansson @ 2014-08-20 13:29 UTC (permalink / raw)
  To: Stephen Warren
  Cc: Andrew Bresticker, Andreas Färber, Dylan Reid,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA, Thierry Reding,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote:
> On 08/18/2014 05:24 PM, Andrew Bresticker wrote:
>>
>> On Mon, Aug 18, 2014 at 9:10 AM, Stephen Warren <swarren@wwwdotorg.org>
>> wrote:
>>>
>>> On 08/16/2014 09:20 AM, Andreas Färber wrote:
>>>>
>>>>
>>>> Hi,
>>>>
>>>> Am 13.08.2014 21:14, schrieb Dylan Reid:
>>>>>
>>>>>
>>>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>>>>> processor and is similar to the Venice2 reference platform.
>>>>>
>>>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>>>>> and work on the 1266x768 models.  The HD models haven't yet been
>>>>> tested.
>>>>>
>>>>> WiFi does not work yet, it needs at least some PMIC changes to enable
>>>>> the 32k clock.
>>>>>
>>>>> The elan trackpad is not yet functional but hopefully will be soon as
>>>>> there are patches under review.
>>>>>
>>>>> There is also an issue on reboot because the TPM isn't reset.  It will
>>>>> cause the stock firmware to enter recovery mode.  This can be worked
>>>>> around by an EC-reset, press the refresh and power keys at the same
>>>>> time.
>>>
>>>
>>>
>>>>> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>> b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>> new file mode 100644
>>>>> index 0000000..79f1852
>>>>> --- /dev/null
>>>>> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>> @@ -0,0 +1,1136 @@
>>>>> +/dts-v1/;
>>>>> +
>>>>> +#include <dt-bindings/input/input.h>
>>>>> +#include "tegra124.dtsi"
>>>>> +
>>>>> +/ {
>>>>> +       model = "Acer Chromebook 13";
>>>>> +       compatible = "google,nyan-big", "nvidia,tegra124";
>>>>
>>>>
>>>>
>>>> In light of v1 and the above commit message referring to this as Google
>>>> Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
>>>> "google,nyan" as secondary string, independent of the new file name?
>>>
>>>
>>>
>>> Despite this board having been derived from Nyan, it isn't Nyan, so I
>>> don't
>>> think Nyan should be part of any compatible value, nor a separate
>>> compatible
>>> value.
>>
>>
>> "google,nyan-big" is the compatible string that the bootloader on
>> these devices looks for.  It's also the convention we are now using
>> for our ARM devices, as Olof has already mentioned.
>
>
> I don't understand "that the bootloader looks for"; why is the bootloader
> doing anything w.r.t the compatible value in the DT that's passed to the
> kernel.
>
> Olof also mentioned that if I had any better ideas on file naming, I should
> point them out. As I mentioned in response, there's zero need for all the
> files or compatible values to have "nyan" in them in order to include any
> common .dtsi file, which was the justification for having "nyan" in the
> filename, IIRC.

Yes, I asked for input, not full veto on things that you happened to
not like. I also didn't say that we could change everything depending
on said input -- some of them might be longer-term changes that we'll
have to consider for a future project, etc. Some of them we might even
disagree on! (see below).

> Again, this board *isn't* Nyan, so it should pretend that it is.

It is a derivative design of the nyan reference platform, and it is
compatible with it. It is perfectly fine to claim to be compatible
with it. I'm sorry, but you're just wrong here.


-Olof

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-20 13:29                     ` Olof Johansson
  0 siblings, 0 replies; 42+ messages in thread
From: Olof Johansson @ 2014-08-20 13:29 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
> On 08/18/2014 05:24 PM, Andrew Bresticker wrote:
>>
>> On Mon, Aug 18, 2014 at 9:10 AM, Stephen Warren <swarren@wwwdotorg.org>
>> wrote:
>>>
>>> On 08/16/2014 09:20 AM, Andreas F?rber wrote:
>>>>
>>>>
>>>> Hi,
>>>>
>>>> Am 13.08.2014 21:14, schrieb Dylan Reid:
>>>>>
>>>>>
>>>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>>>>> processor and is similar to the Venice2 reference platform.
>>>>>
>>>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>>>>> and work on the 1266x768 models.  The HD models haven't yet been
>>>>> tested.
>>>>>
>>>>> WiFi does not work yet, it needs at least some PMIC changes to enable
>>>>> the 32k clock.
>>>>>
>>>>> The elan trackpad is not yet functional but hopefully will be soon as
>>>>> there are patches under review.
>>>>>
>>>>> There is also an issue on reboot because the TPM isn't reset.  It will
>>>>> cause the stock firmware to enter recovery mode.  This can be worked
>>>>> around by an EC-reset, press the refresh and power keys at the same
>>>>> time.
>>>
>>>
>>>
>>>>> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>> b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>> new file mode 100644
>>>>> index 0000000..79f1852
>>>>> --- /dev/null
>>>>> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>> @@ -0,0 +1,1136 @@
>>>>> +/dts-v1/;
>>>>> +
>>>>> +#include <dt-bindings/input/input.h>
>>>>> +#include "tegra124.dtsi"
>>>>> +
>>>>> +/ {
>>>>> +       model = "Acer Chromebook 13";
>>>>> +       compatible = "google,nyan-big", "nvidia,tegra124";
>>>>
>>>>
>>>>
>>>> In light of v1 and the above commit message referring to this as Google
>>>> Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
>>>> "google,nyan" as secondary string, independent of the new file name?
>>>
>>>
>>>
>>> Despite this board having been derived from Nyan, it isn't Nyan, so I
>>> don't
>>> think Nyan should be part of any compatible value, nor a separate
>>> compatible
>>> value.
>>
>>
>> "google,nyan-big" is the compatible string that the bootloader on
>> these devices looks for.  It's also the convention we are now using
>> for our ARM devices, as Olof has already mentioned.
>
>
> I don't understand "that the bootloader looks for"; why is the bootloader
> doing anything w.r.t the compatible value in the DT that's passed to the
> kernel.
>
> Olof also mentioned that if I had any better ideas on file naming, I should
> point them out. As I mentioned in response, there's zero need for all the
> files or compatible values to have "nyan" in them in order to include any
> common .dtsi file, which was the justification for having "nyan" in the
> filename, IIRC.

Yes, I asked for input, not full veto on things that you happened to
not like. I also didn't say that we could change everything depending
on said input -- some of them might be longer-term changes that we'll
have to consider for a future project, etc. Some of them we might even
disagree on! (see below).

> Again, this board *isn't* Nyan, so it should pretend that it is.

It is a derivative design of the nyan reference platform, and it is
compatible with it. It is perfectly fine to claim to be compatible
with it. I'm sorry, but you're just wrong here.


-Olof

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-08-19 21:47                         ` Stephen Warren
@ 2014-08-20 13:37                             ` Olof Johansson
  -1 siblings, 0 replies; 42+ messages in thread
From: Olof Johansson @ 2014-08-20 13:37 UTC (permalink / raw)
  To: Stephen Warren
  Cc: Andrew Bresticker, Andreas Färber, Dylan Reid,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA, Thierry Reding,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Tue, Aug 19, 2014 at 2:47 PM, Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote:
> On 08/18/2014 06:11 PM, Andrew Bresticker wrote:
>>
>> On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren@wwwdotorg.org>
>> wrote:
>>>
>>> On 08/18/2014 05:24 PM, Andrew Bresticker wrote:
>>>>
>>>>
>>>> On Mon, Aug 18, 2014 at 9:10 AM, Stephen Warren <swarren@wwwdotorg.org>
>>>> wrote:
>>>>>
>>>>>
>>>>> On 08/16/2014 09:20 AM, Andreas Färber wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> Am 13.08.2014 21:14, schrieb Dylan Reid:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>>>>>>> processor and is similar to the Venice2 reference platform.
>>>>>>>
>>>>>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>>>>>>> and work on the 1266x768 models.  The HD models haven't yet been
>>>>>>> tested.
>>>>>>>
>>>>>>> WiFi does not work yet, it needs at least some PMIC changes to enable
>>>>>>> the 32k clock.
>>>>>>>
>>>>>>> The elan trackpad is not yet functional but hopefully will be soon as
>>>>>>> there are patches under review.
>>>>>>>
>>>>>>> There is also an issue on reboot because the TPM isn't reset.  It
>>>>>>> will
>>>>>>> cause the stock firmware to enter recovery mode.  This can be worked
>>>>>>> around by an EC-reset, press the refresh and power keys at the same
>>>>>>> time.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>>> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>>>> b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>>>> new file mode 100644
>>>>>>> index 0000000..79f1852
>>>>>>> --- /dev/null
>>>>>>> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>>>> @@ -0,0 +1,1136 @@
>>>>>>> +/dts-v1/;
>>>>>>> +
>>>>>>> +#include <dt-bindings/input/input.h>
>>>>>>> +#include "tegra124.dtsi"
>>>>>>> +
>>>>>>> +/ {
>>>>>>> +       model = "Acer Chromebook 13";
>>>>>>> +       compatible = "google,nyan-big", "nvidia,tegra124";
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> In light of v1 and the above commit message referring to this as
>>>>>> Google
>>>>>> Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
>>>>>> "google,nyan" as secondary string, independent of the new file name?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Despite this board having been derived from Nyan, it isn't Nyan, so I
>>>>> don't
>>>>> think Nyan should be part of any compatible value, nor a separate
>>>>> compatible
>>>>> value.
>>>>
>>>>
>>>>
>>>> "google,nyan-big" is the compatible string that the bootloader on
>>>> these devices looks for.  It's also the convention we are now using
>>>> for our ARM devices, as Olof has already mentioned.
>>>
>>>
>>> I don't understand "that the bootloader looks for"; why is the bootloader
>>> doing anything w.r.t the compatible value in the DT that's passed to the
>>> kernel.
>>
>>
>> The ChromeOS bootloader ("depthcharge") boots FIT images and selects
>> the appropriate device-tree from the image based on the compatible
>> string.  On Big boards, it looks for "google,nyan-big".  This only
>> becomes an issue if there are multiple device-trees in the FIT image.
>> If there's only a single configuration (or you chain-load U-Boot),
>> then the bootloader will boot with that configuration.  If you build a
>> kernel image in the ChromiumOS environment, however, you'll end up
>> with multiple device-trees (all those built by the kernel config at
>> least) in the FIT image - this is what allows us to boot the same
>> binary on different boards.
>
>
> This just makes me dislike FIT (and DT ABIs) even more, although I suppose
> the same issue would arise if the DTBs were stored in separate files and
> looked up by filename.

Yes, or stored in separate files and looked up by compatible field.

Do you have a suggestion on a better way to solve it, btw? Definitely
not one of those things we can fix retroactively, but if it works
poorly for you upstream we'll consider improvements if we can for
future products.

I'm not a huge fan of fitImage myself, but it gets the work done.

> I have to say this sucks, because it means that a downstream bootloader is
> imposing an ABI on the mainline kernel without a chance to fix things during
> upstreaming. For all other boards, we've concentrated on mainline U-Boot as
> the bootloader precisely so that strange behaviour of our downstream product
> kernels don't force the hand of the mainline kernel design.
>
> Still, I suppose I have no choice but to drop my objection here.

Thanks for being pragmatic on this one, Stephen!


-Olof

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-20 13:37                             ` Olof Johansson
  0 siblings, 0 replies; 42+ messages in thread
From: Olof Johansson @ 2014-08-20 13:37 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Aug 19, 2014 at 2:47 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
> On 08/18/2014 06:11 PM, Andrew Bresticker wrote:
>>
>> On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren@wwwdotorg.org>
>> wrote:
>>>
>>> On 08/18/2014 05:24 PM, Andrew Bresticker wrote:
>>>>
>>>>
>>>> On Mon, Aug 18, 2014 at 9:10 AM, Stephen Warren <swarren@wwwdotorg.org>
>>>> wrote:
>>>>>
>>>>>
>>>>> On 08/16/2014 09:20 AM, Andreas F?rber wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> Am 13.08.2014 21:14, schrieb Dylan Reid:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>>>>>>> processor and is similar to the Venice2 reference platform.
>>>>>>>
>>>>>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>>>>>>> and work on the 1266x768 models.  The HD models haven't yet been
>>>>>>> tested.
>>>>>>>
>>>>>>> WiFi does not work yet, it needs at least some PMIC changes to enable
>>>>>>> the 32k clock.
>>>>>>>
>>>>>>> The elan trackpad is not yet functional but hopefully will be soon as
>>>>>>> there are patches under review.
>>>>>>>
>>>>>>> There is also an issue on reboot because the TPM isn't reset.  It
>>>>>>> will
>>>>>>> cause the stock firmware to enter recovery mode.  This can be worked
>>>>>>> around by an EC-reset, press the refresh and power keys at the same
>>>>>>> time.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>>> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>>>> b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>>>> new file mode 100644
>>>>>>> index 0000000..79f1852
>>>>>>> --- /dev/null
>>>>>>> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
>>>>>>> @@ -0,0 +1,1136 @@
>>>>>>> +/dts-v1/;
>>>>>>> +
>>>>>>> +#include <dt-bindings/input/input.h>
>>>>>>> +#include "tegra124.dtsi"
>>>>>>> +
>>>>>>> +/ {
>>>>>>> +       model = "Acer Chromebook 13";
>>>>>>> +       compatible = "google,nyan-big", "nvidia,tegra124";
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> In light of v1 and the above commit message referring to this as
>>>>>> Google
>>>>>> Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
>>>>>> "google,nyan" as secondary string, independent of the new file name?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Despite this board having been derived from Nyan, it isn't Nyan, so I
>>>>> don't
>>>>> think Nyan should be part of any compatible value, nor a separate
>>>>> compatible
>>>>> value.
>>>>
>>>>
>>>>
>>>> "google,nyan-big" is the compatible string that the bootloader on
>>>> these devices looks for.  It's also the convention we are now using
>>>> for our ARM devices, as Olof has already mentioned.
>>>
>>>
>>> I don't understand "that the bootloader looks for"; why is the bootloader
>>> doing anything w.r.t the compatible value in the DT that's passed to the
>>> kernel.
>>
>>
>> The ChromeOS bootloader ("depthcharge") boots FIT images and selects
>> the appropriate device-tree from the image based on the compatible
>> string.  On Big boards, it looks for "google,nyan-big".  This only
>> becomes an issue if there are multiple device-trees in the FIT image.
>> If there's only a single configuration (or you chain-load U-Boot),
>> then the bootloader will boot with that configuration.  If you build a
>> kernel image in the ChromiumOS environment, however, you'll end up
>> with multiple device-trees (all those built by the kernel config at
>> least) in the FIT image - this is what allows us to boot the same
>> binary on different boards.
>
>
> This just makes me dislike FIT (and DT ABIs) even more, although I suppose
> the same issue would arise if the DTBs were stored in separate files and
> looked up by filename.

Yes, or stored in separate files and looked up by compatible field.

Do you have a suggestion on a better way to solve it, btw? Definitely
not one of those things we can fix retroactively, but if it works
poorly for you upstream we'll consider improvements if we can for
future products.

I'm not a huge fan of fitImage myself, but it gets the work done.

> I have to say this sucks, because it means that a downstream bootloader is
> imposing an ABI on the mainline kernel without a chance to fix things during
> upstreaming. For all other boards, we've concentrated on mainline U-Boot as
> the bootloader precisely so that strange behaviour of our downstream product
> kernels don't force the hand of the mainline kernel design.
>
> Still, I suppose I have no choice but to drop my objection here.

Thanks for being pragmatic on this one, Stephen!


-Olof

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-08-20 13:29                     ` Olof Johansson
@ 2014-08-20 14:32                         ` Thierry Reding
  -1 siblings, 0 replies; 42+ messages in thread
From: Thierry Reding @ 2014-08-20 14:32 UTC (permalink / raw)
  To: Olof Johansson
  Cc: Stephen Warren, Andrew Bresticker, Andreas Färber,
	Dylan Reid, linux-tegra-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

[-- Attachment #1: Type: text/plain, Size: 989 bytes --]

On Wed, Aug 20, 2014 at 06:29:14AM -0700, Olof Johansson wrote:
> On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote:
[...]
> > Again, this board *isn't* Nyan, so it should pretend that it is.
> 
> It is a derivative design of the nyan reference platform, and it is
> compatible with it. It is perfectly fine to claim to be compatible
> with it. I'm sorry, but you're just wrong here.

I guess that depends a little on how you define compatibility. I had
always assumed that the top-level compatible string would be a sort of
"checksum" over the rest of the content. Which, admittedly, makes it
kind of redundant. Compatibility could mean a lot of things. Does it
mean any kernel/DTB compatible with one device could run on any device
derived from it? Does compatibility mean it needs to provide full
functionality or is it still compatible if it runs at a reduced feature
set but doesn't "break" otherwise?

Thierry

[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-20 14:32                         ` Thierry Reding
  0 siblings, 0 replies; 42+ messages in thread
From: Thierry Reding @ 2014-08-20 14:32 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Aug 20, 2014 at 06:29:14AM -0700, Olof Johansson wrote:
> On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
[...]
> > Again, this board *isn't* Nyan, so it should pretend that it is.
> 
> It is a derivative design of the nyan reference platform, and it is
> compatible with it. It is perfectly fine to claim to be compatible
> with it. I'm sorry, but you're just wrong here.

I guess that depends a little on how you define compatibility. I had
always assumed that the top-level compatible string would be a sort of
"checksum" over the rest of the content. Which, admittedly, makes it
kind of redundant. Compatibility could mean a lot of things. Does it
mean any kernel/DTB compatible with one device could run on any device
derived from it? Does compatibility mean it needs to provide full
functionality or is it still compatible if it runs at a reduced feature
set but doesn't "break" otherwise?

Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140820/882f6571/attachment.sig>

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-08-20 13:37                             ` Olof Johansson
@ 2014-08-20 15:25                                 ` Thierry Reding
  -1 siblings, 0 replies; 42+ messages in thread
From: Thierry Reding @ 2014-08-20 15:25 UTC (permalink / raw)
  To: Olof Johansson
  Cc: Stephen Warren, Andrew Bresticker, Andreas Färber,
	Dylan Reid, linux-tegra-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

[-- Attachment #1: Type: text/plain, Size: 6090 bytes --]

On Wed, Aug 20, 2014 at 06:37:48AM -0700, Olof Johansson wrote:
> On Tue, Aug 19, 2014 at 2:47 PM, Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote:
> > On 08/18/2014 06:11 PM, Andrew Bresticker wrote:
> >>
> >> On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
> >> wrote:
> >>>
> >>> On 08/18/2014 05:24 PM, Andrew Bresticker wrote:
> >>>>
> >>>>
> >>>> On Mon, Aug 18, 2014 at 9:10 AM, Stephen Warren <swarren@wwwdotorg.org>
> >>>> wrote:
> >>>>>
> >>>>>
> >>>>> On 08/16/2014 09:20 AM, Andreas Färber wrote:
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> Hi,
> >>>>>>
> >>>>>> Am 13.08.2014 21:14, schrieb Dylan Reid:
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
> >>>>>>> processor and is similar to the Venice2 reference platform.
> >>>>>>>
> >>>>>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
> >>>>>>> and work on the 1266x768 models.  The HD models haven't yet been
> >>>>>>> tested.
> >>>>>>>
> >>>>>>> WiFi does not work yet, it needs at least some PMIC changes to enable
> >>>>>>> the 32k clock.
> >>>>>>>
> >>>>>>> The elan trackpad is not yet functional but hopefully will be soon as
> >>>>>>> there are patches under review.
> >>>>>>>
> >>>>>>> There is also an issue on reboot because the TPM isn't reset.  It
> >>>>>>> will
> >>>>>>> cause the stock firmware to enter recovery mode.  This can be worked
> >>>>>>> around by an EC-reset, press the refresh and power keys at the same
> >>>>>>> time.
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>>> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts
> >>>>>>> b/arch/arm/boot/dts/tegra124-nyan-big.dts
> >>>>>>> new file mode 100644
> >>>>>>> index 0000000..79f1852
> >>>>>>> --- /dev/null
> >>>>>>> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
> >>>>>>> @@ -0,0 +1,1136 @@
> >>>>>>> +/dts-v1/;
> >>>>>>> +
> >>>>>>> +#include <dt-bindings/input/input.h>
> >>>>>>> +#include "tegra124.dtsi"
> >>>>>>> +
> >>>>>>> +/ {
> >>>>>>> +       model = "Acer Chromebook 13";
> >>>>>>> +       compatible = "google,nyan-big", "nvidia,tegra124";
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> In light of v1 and the above commit message referring to this as
> >>>>>> Google
> >>>>>> Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
> >>>>>> "google,nyan" as secondary string, independent of the new file name?
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> Despite this board having been derived from Nyan, it isn't Nyan, so I
> >>>>> don't
> >>>>> think Nyan should be part of any compatible value, nor a separate
> >>>>> compatible
> >>>>> value.
> >>>>
> >>>>
> >>>>
> >>>> "google,nyan-big" is the compatible string that the bootloader on
> >>>> these devices looks for.  It's also the convention we are now using
> >>>> for our ARM devices, as Olof has already mentioned.
> >>>
> >>>
> >>> I don't understand "that the bootloader looks for"; why is the bootloader
> >>> doing anything w.r.t the compatible value in the DT that's passed to the
> >>> kernel.
> >>
> >>
> >> The ChromeOS bootloader ("depthcharge") boots FIT images and selects
> >> the appropriate device-tree from the image based on the compatible
> >> string.  On Big boards, it looks for "google,nyan-big".  This only
> >> becomes an issue if there are multiple device-trees in the FIT image.
> >> If there's only a single configuration (or you chain-load U-Boot),
> >> then the bootloader will boot with that configuration.  If you build a
> >> kernel image in the ChromiumOS environment, however, you'll end up
> >> with multiple device-trees (all those built by the kernel config at
> >> least) in the FIT image - this is what allows us to boot the same
> >> binary on different boards.
> >
> >
> > This just makes me dislike FIT (and DT ABIs) even more, although I suppose
> > the same issue would arise if the DTBs were stored in separate files and
> > looked up by filename.
> 
> Yes, or stored in separate files and looked up by compatible field.
> 
> Do you have a suggestion on a better way to solve it, btw? Definitely
> not one of those things we can fix retroactively, but if it works
> poorly for you upstream we'll consider improvements if we can for
> future products.
> 
> I'm not a huge fan of fitImage myself, but it gets the work done.

It's been a long time since I've used FIT, but I seem to remember that
it was simply a device tree-based description of a file format. As such
couldn't you add an additional property to the configuration entry that
the bootloader could match on? That would avoid the need to parse an
embedded device tree and it might be useful to keep variants for the
same board in the same FIT image.

Perhaps you can explain a little more what the use-cases are. For
example how are people suppose to run an upstream kernel on one of these
Chromebooks? Do they completely replace one FIT image with another (and
in the process delete or rename the original one)? Or can they simply
add another FIT image that contains the kernel and DTB from upstream? Is
there a way to add new configurations to an existing FIT image? How does
dual-booting work? Does the user get a menu to choose a configuration
they want to boot if multiple entries are compatible with the detected
board?

Upstream U-Boot exports some variables (such as $soc and $board) to the
shell environment so that scripts can use them. What I usually end up
doing is put files (zImage, DTB, ...) in locations based on those names
so that I can boot all systems from the same SD card (or TFTP/NFS setup)
yet retain the possibility to update each of the files separately. Maybe
something like that could work for Chromebooks. If you locate files by
filename you become much less reliable on the content itself. Files
could be named tegra124-nyan-big.dtb even if the compatible was just
"google,big". The same goes for additional properties in FIT images.

Thierry

[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-20 15:25                                 ` Thierry Reding
  0 siblings, 0 replies; 42+ messages in thread
From: Thierry Reding @ 2014-08-20 15:25 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Aug 20, 2014 at 06:37:48AM -0700, Olof Johansson wrote:
> On Tue, Aug 19, 2014 at 2:47 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
> > On 08/18/2014 06:11 PM, Andrew Bresticker wrote:
> >>
> >> On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren@wwwdotorg.org>
> >> wrote:
> >>>
> >>> On 08/18/2014 05:24 PM, Andrew Bresticker wrote:
> >>>>
> >>>>
> >>>> On Mon, Aug 18, 2014 at 9:10 AM, Stephen Warren <swarren@wwwdotorg.org>
> >>>> wrote:
> >>>>>
> >>>>>
> >>>>> On 08/16/2014 09:20 AM, Andreas F?rber wrote:
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> Hi,
> >>>>>>
> >>>>>> Am 13.08.2014 21:14, schrieb Dylan Reid:
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
> >>>>>>> processor and is similar to the Venice2 reference platform.
> >>>>>>>
> >>>>>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
> >>>>>>> and work on the 1266x768 models.  The HD models haven't yet been
> >>>>>>> tested.
> >>>>>>>
> >>>>>>> WiFi does not work yet, it needs at least some PMIC changes to enable
> >>>>>>> the 32k clock.
> >>>>>>>
> >>>>>>> The elan trackpad is not yet functional but hopefully will be soon as
> >>>>>>> there are patches under review.
> >>>>>>>
> >>>>>>> There is also an issue on reboot because the TPM isn't reset.  It
> >>>>>>> will
> >>>>>>> cause the stock firmware to enter recovery mode.  This can be worked
> >>>>>>> around by an EC-reset, press the refresh and power keys at the same
> >>>>>>> time.
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>>> diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts
> >>>>>>> b/arch/arm/boot/dts/tegra124-nyan-big.dts
> >>>>>>> new file mode 100644
> >>>>>>> index 0000000..79f1852
> >>>>>>> --- /dev/null
> >>>>>>> +++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
> >>>>>>> @@ -0,0 +1,1136 @@
> >>>>>>> +/dts-v1/;
> >>>>>>> +
> >>>>>>> +#include <dt-bindings/input/input.h>
> >>>>>>> +#include "tegra124.dtsi"
> >>>>>>> +
> >>>>>>> +/ {
> >>>>>>> +       model = "Acer Chromebook 13";
> >>>>>>> +       compatible = "google,nyan-big", "nvidia,tegra124";
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> In light of v1 and the above commit message referring to this as
> >>>>>> Google
> >>>>>> Big, shouldn't this be "google,big", "nvidia,tegra124" and optionally
> >>>>>> "google,nyan" as secondary string, independent of the new file name?
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> Despite this board having been derived from Nyan, it isn't Nyan, so I
> >>>>> don't
> >>>>> think Nyan should be part of any compatible value, nor a separate
> >>>>> compatible
> >>>>> value.
> >>>>
> >>>>
> >>>>
> >>>> "google,nyan-big" is the compatible string that the bootloader on
> >>>> these devices looks for.  It's also the convention we are now using
> >>>> for our ARM devices, as Olof has already mentioned.
> >>>
> >>>
> >>> I don't understand "that the bootloader looks for"; why is the bootloader
> >>> doing anything w.r.t the compatible value in the DT that's passed to the
> >>> kernel.
> >>
> >>
> >> The ChromeOS bootloader ("depthcharge") boots FIT images and selects
> >> the appropriate device-tree from the image based on the compatible
> >> string.  On Big boards, it looks for "google,nyan-big".  This only
> >> becomes an issue if there are multiple device-trees in the FIT image.
> >> If there's only a single configuration (or you chain-load U-Boot),
> >> then the bootloader will boot with that configuration.  If you build a
> >> kernel image in the ChromiumOS environment, however, you'll end up
> >> with multiple device-trees (all those built by the kernel config at
> >> least) in the FIT image - this is what allows us to boot the same
> >> binary on different boards.
> >
> >
> > This just makes me dislike FIT (and DT ABIs) even more, although I suppose
> > the same issue would arise if the DTBs were stored in separate files and
> > looked up by filename.
> 
> Yes, or stored in separate files and looked up by compatible field.
> 
> Do you have a suggestion on a better way to solve it, btw? Definitely
> not one of those things we can fix retroactively, but if it works
> poorly for you upstream we'll consider improvements if we can for
> future products.
> 
> I'm not a huge fan of fitImage myself, but it gets the work done.

It's been a long time since I've used FIT, but I seem to remember that
it was simply a device tree-based description of a file format. As such
couldn't you add an additional property to the configuration entry that
the bootloader could match on? That would avoid the need to parse an
embedded device tree and it might be useful to keep variants for the
same board in the same FIT image.

Perhaps you can explain a little more what the use-cases are. For
example how are people suppose to run an upstream kernel on one of these
Chromebooks? Do they completely replace one FIT image with another (and
in the process delete or rename the original one)? Or can they simply
add another FIT image that contains the kernel and DTB from upstream? Is
there a way to add new configurations to an existing FIT image? How does
dual-booting work? Does the user get a menu to choose a configuration
they want to boot if multiple entries are compatible with the detected
board?

Upstream U-Boot exports some variables (such as $soc and $board) to the
shell environment so that scripts can use them. What I usually end up
doing is put files (zImage, DTB, ...) in locations based on those names
so that I can boot all systems from the same SD card (or TFTP/NFS setup)
yet retain the possibility to update each of the files separately. Maybe
something like that could work for Chromebooks. If you locate files by
filename you become much less reliable on the content itself. Files
could be named tegra124-nyan-big.dtb even if the compatible was just
"google,big". The same goes for additional properties in FIT images.

Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140820/0e95bf1d/attachment.sig>

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-08-20 14:32                         ` Thierry Reding
@ 2014-08-20 15:40                           ` Olof Johansson
  -1 siblings, 0 replies; 42+ messages in thread
From: Olof Johansson @ 2014-08-20 15:40 UTC (permalink / raw)
  To: Thierry Reding
  Cc: Stephen Warren, Andrew Bresticker, Andreas Färber,
	Dylan Reid, linux-tegra-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Wed, Aug 20, 2014 at 7:32 AM, Thierry Reding
<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> On Wed, Aug 20, 2014 at 06:29:14AM -0700, Olof Johansson wrote:
>> On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote:
> [...]
>> > Again, this board *isn't* Nyan, so it should pretend that it is.
>>
>> It is a derivative design of the nyan reference platform, and it is
>> compatible with it. It is perfectly fine to claim to be compatible
>> with it. I'm sorry, but you're just wrong here.
>
> I guess that depends a little on how you define compatibility. I had
> always assumed that the top-level compatible string would be a sort of
> "checksum" over the rest of the content. Which, admittedly, makes it
> kind of redundant. Compatibility could mean a lot of things. Does it
> mean any kernel/DTB compatible with one device could run on any device
> derived from it? Does compatibility mean it needs to provide full
> functionality or is it still compatible if it runs at a reduced feature
> set but doesn't "break" otherwise?

Consider:
        compatible = "foo,x", "foo,y";

My interpretation is:  foo,x is compatible with foo,y if and only if:

foo,x can be driven by the same code as foo,y -- i.e. the driver
doesn't need changes for basic things to work (and nothing should be
broken).

foo,x _can_ be a superset though. It could have features that foo,y
doesn't have, that needs driver changes to take advantage of. But
using the foo,y driver with a foo,x device should give you the foo,y
functionality.

The simple case is where foo,x is more or less identical to foo,y, but
there might be some implementation-specific bugs that makes it useful
to be able to, at some point in the future, tell if you're running on
a foo,x or foo,y device even if the code is identical today.


In this particular case, google,nyan and google,nyan-big are very
similar. There are some differences in panels, etc, but it's described
in the individual device trees already, but things will come up and be
functional even if you boot with the wrong device tree (as far as I
know). Andrew has done that in the past, as far as I know.


-Olof

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-20 15:40                           ` Olof Johansson
  0 siblings, 0 replies; 42+ messages in thread
From: Olof Johansson @ 2014-08-20 15:40 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Aug 20, 2014 at 7:32 AM, Thierry Reding
<thierry.reding@gmail.com> wrote:
> On Wed, Aug 20, 2014 at 06:29:14AM -0700, Olof Johansson wrote:
>> On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
> [...]
>> > Again, this board *isn't* Nyan, so it should pretend that it is.
>>
>> It is a derivative design of the nyan reference platform, and it is
>> compatible with it. It is perfectly fine to claim to be compatible
>> with it. I'm sorry, but you're just wrong here.
>
> I guess that depends a little on how you define compatibility. I had
> always assumed that the top-level compatible string would be a sort of
> "checksum" over the rest of the content. Which, admittedly, makes it
> kind of redundant. Compatibility could mean a lot of things. Does it
> mean any kernel/DTB compatible with one device could run on any device
> derived from it? Does compatibility mean it needs to provide full
> functionality or is it still compatible if it runs at a reduced feature
> set but doesn't "break" otherwise?

Consider:
        compatible = "foo,x", "foo,y";

My interpretation is:  foo,x is compatible with foo,y if and only if:

foo,x can be driven by the same code as foo,y -- i.e. the driver
doesn't need changes for basic things to work (and nothing should be
broken).

foo,x _can_ be a superset though. It could have features that foo,y
doesn't have, that needs driver changes to take advantage of. But
using the foo,y driver with a foo,x device should give you the foo,y
functionality.

The simple case is where foo,x is more or less identical to foo,y, but
there might be some implementation-specific bugs that makes it useful
to be able to, at some point in the future, tell if you're running on
a foo,x or foo,y device even if the code is identical today.


In this particular case, google,nyan and google,nyan-big are very
similar. There are some differences in panels, etc, but it's described
in the individual device trees already, but things will come up and be
functional even if you boot with the wrong device tree (as far as I
know). Andrew has done that in the past, as far as I know.


-Olof

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-08-20 15:25                                 ` Thierry Reding
@ 2014-08-20 17:25                                   ` Andrew Bresticker
  -1 siblings, 0 replies; 42+ messages in thread
From: Andrew Bresticker @ 2014-08-20 17:25 UTC (permalink / raw)
  To: Thierry Reding
  Cc: Olof Johansson, Stephen Warren, Andreas Färber, Dylan Reid,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

> It's been a long time since I've used FIT, but I seem to remember that
> it was simply a device tree-based description of a file format. As such
> couldn't you add an additional property to the configuration entry that
> the bootloader could match on? That would avoid the need to parse an
> embedded device tree and it might be useful to keep variants for the
> same board in the same FIT image.

Yes, I suppose something like that would be possible, however it's not
just depthcharge that matches to configurations based on the
compatible string within the configuration's FDT blob, this is the
convention U-Boot uses as well when booting FIT images.

> Perhaps you can explain a little more what the use-cases are. For
> example how are people suppose to run an upstream kernel on one of these
> Chromebooks?

There are a few ways you could run an upstream kernel:

1) Building your own verified-boot-wrapped FIT image and replacing the
existing one using tools found in the ChromiumOS tree [0].  This is
the workflow must of our developers use when working on product
kernels, but could just as easily be done with an upstream kernel.

2) Using U-Boot, either through the built-in legacy mode payload
(Ctrl-L at the developer screen) or by replacing the vboot-wrapped FIT
image with one that has U-Boot as a payload rather than a kernel [1].

3) If you're willing to flash your own firmware to the device, you can
build netboot-enabled firmware form the ChromiumOS tree that will load
a FIT image over the network.  This is the most flexible, as it
doesn't require the root device to be partitioned in any particular
way and allows you to boot non-ChromeOS distributions (e.g. Ubuntu).
This is what Dylan and I usually do when working on upstream kernels.

> How does dual-booting work?

You could dual-boot with the legacy-mode U-Boot, described above.

> Does the user get a menu to choose a configuration they want to boot if
> multiple entries are compatible with the detected board?

IIRC depthcharge will just pick the first one if there are multiple
exact matches.

[0] http://www.chromium.org/chromium-os/how-tos-and-troubleshooting/kernel-faq#TOC-How-to-quickly-test-kernel-modifications-the-fast-way-
[1] http://www.chromium.org/chromium-os/u-boot-porting-guide/using-nv-u-boot-on-the-samsung-arm-chromebook#TOC-Installing-nv-U-Boot-chained-U-Boot-method-

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-20 17:25                                   ` Andrew Bresticker
  0 siblings, 0 replies; 42+ messages in thread
From: Andrew Bresticker @ 2014-08-20 17:25 UTC (permalink / raw)
  To: linux-arm-kernel

> It's been a long time since I've used FIT, but I seem to remember that
> it was simply a device tree-based description of a file format. As such
> couldn't you add an additional property to the configuration entry that
> the bootloader could match on? That would avoid the need to parse an
> embedded device tree and it might be useful to keep variants for the
> same board in the same FIT image.

Yes, I suppose something like that would be possible, however it's not
just depthcharge that matches to configurations based on the
compatible string within the configuration's FDT blob, this is the
convention U-Boot uses as well when booting FIT images.

> Perhaps you can explain a little more what the use-cases are. For
> example how are people suppose to run an upstream kernel on one of these
> Chromebooks?

There are a few ways you could run an upstream kernel:

1) Building your own verified-boot-wrapped FIT image and replacing the
existing one using tools found in the ChromiumOS tree [0].  This is
the workflow must of our developers use when working on product
kernels, but could just as easily be done with an upstream kernel.

2) Using U-Boot, either through the built-in legacy mode payload
(Ctrl-L at the developer screen) or by replacing the vboot-wrapped FIT
image with one that has U-Boot as a payload rather than a kernel [1].

3) If you're willing to flash your own firmware to the device, you can
build netboot-enabled firmware form the ChromiumOS tree that will load
a FIT image over the network.  This is the most flexible, as it
doesn't require the root device to be partitioned in any particular
way and allows you to boot non-ChromeOS distributions (e.g. Ubuntu).
This is what Dylan and I usually do when working on upstream kernels.

> How does dual-booting work?

You could dual-boot with the legacy-mode U-Boot, described above.

> Does the user get a menu to choose a configuration they want to boot if
> multiple entries are compatible with the detected board?

IIRC depthcharge will just pick the first one if there are multiple
exact matches.

[0] http://www.chromium.org/chromium-os/how-tos-and-troubleshooting/kernel-faq#TOC-How-to-quickly-test-kernel-modifications-the-fast-way-
[1] http://www.chromium.org/chromium-os/u-boot-porting-guide/using-nv-u-boot-on-the-samsung-arm-chromebook#TOC-Installing-nv-U-Boot-chained-U-Boot-method-

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-08-20 15:40                           ` Olof Johansson
@ 2014-08-21  7:19                               ` Thierry Reding
  -1 siblings, 0 replies; 42+ messages in thread
From: Thierry Reding @ 2014-08-21  7:19 UTC (permalink / raw)
  To: Olof Johansson
  Cc: Stephen Warren, Andrew Bresticker, Andreas Färber,
	Dylan Reid, linux-tegra-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

[-- Attachment #1: Type: text/plain, Size: 3382 bytes --]

On Wed, Aug 20, 2014 at 08:40:33AM -0700, Olof Johansson wrote:
> On Wed, Aug 20, 2014 at 7:32 AM, Thierry Reding
> <thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> > On Wed, Aug 20, 2014 at 06:29:14AM -0700, Olof Johansson wrote:
> >> On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote:
> > [...]
> >> > Again, this board *isn't* Nyan, so it should pretend that it is.
> >>
> >> It is a derivative design of the nyan reference platform, and it is
> >> compatible with it. It is perfectly fine to claim to be compatible
> >> with it. I'm sorry, but you're just wrong here.
> >
> > I guess that depends a little on how you define compatibility. I had
> > always assumed that the top-level compatible string would be a sort of
> > "checksum" over the rest of the content. Which, admittedly, makes it
> > kind of redundant. Compatibility could mean a lot of things. Does it
> > mean any kernel/DTB compatible with one device could run on any device
> > derived from it? Does compatibility mean it needs to provide full
> > functionality or is it still compatible if it runs at a reduced feature
> > set but doesn't "break" otherwise?
> 
> Consider:
>         compatible = "foo,x", "foo,y";
> 
> My interpretation is:  foo,x is compatible with foo,y if and only if:
> 
> foo,x can be driven by the same code as foo,y -- i.e. the driver
> doesn't need changes for basic things to work (and nothing should be
> broken).
> 
> foo,x _can_ be a superset though. It could have features that foo,y
> doesn't have, that needs driver changes to take advantage of. But
> using the foo,y driver with a foo,x device should give you the foo,y
> functionality.
> 
> The simple case is where foo,x is more or less identical to foo,y, but
> there might be some implementation-specific bugs that makes it useful
> to be able to, at some point in the future, tell if you're running on
> a foo,x or foo,y device even if the code is identical today.
> 
> 
> In this particular case, google,nyan and google,nyan-big are very
> similar. There are some differences in panels, etc, but it's described
> in the individual device trees already, but things will come up and be
> functional even if you boot with the wrong device tree (as far as I
> know). Andrew has done that in the past, as far as I know.

The problem with the above that it makes a bunch of assumptions about
drivers. It's perfectly possible for one OS to be implemented in a way
that matches your expectations above, while another OS would not work
the same way.

In particular since you point out panels being different: you typically
can't rely on a driver for one panel to support another panel as well.
While it's true that many panels provide an EDID for the display timings
it's equally well possible that some panels don't, therefore a driver
for one panel can't drive another (because the timings are wrong). There
are other things that can be incompatible between panels such as power
up/down sequences and power supplies. All those together mean that the
panels aren't compatible and I'd argue that the panel is one of the key
features of a Chromebook. Booting a "google,nyan" DTB on a
"google,nyan-big" device may (depending on OS) in fact break
functionality and hence be incompatible.

Thierry

[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-08-21  7:19                               ` Thierry Reding
  0 siblings, 0 replies; 42+ messages in thread
From: Thierry Reding @ 2014-08-21  7:19 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Aug 20, 2014 at 08:40:33AM -0700, Olof Johansson wrote:
> On Wed, Aug 20, 2014 at 7:32 AM, Thierry Reding
> <thierry.reding@gmail.com> wrote:
> > On Wed, Aug 20, 2014 at 06:29:14AM -0700, Olof Johansson wrote:
> >> On Mon, Aug 18, 2014 at 4:43 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
> > [...]
> >> > Again, this board *isn't* Nyan, so it should pretend that it is.
> >>
> >> It is a derivative design of the nyan reference platform, and it is
> >> compatible with it. It is perfectly fine to claim to be compatible
> >> with it. I'm sorry, but you're just wrong here.
> >
> > I guess that depends a little on how you define compatibility. I had
> > always assumed that the top-level compatible string would be a sort of
> > "checksum" over the rest of the content. Which, admittedly, makes it
> > kind of redundant. Compatibility could mean a lot of things. Does it
> > mean any kernel/DTB compatible with one device could run on any device
> > derived from it? Does compatibility mean it needs to provide full
> > functionality or is it still compatible if it runs at a reduced feature
> > set but doesn't "break" otherwise?
> 
> Consider:
>         compatible = "foo,x", "foo,y";
> 
> My interpretation is:  foo,x is compatible with foo,y if and only if:
> 
> foo,x can be driven by the same code as foo,y -- i.e. the driver
> doesn't need changes for basic things to work (and nothing should be
> broken).
> 
> foo,x _can_ be a superset though. It could have features that foo,y
> doesn't have, that needs driver changes to take advantage of. But
> using the foo,y driver with a foo,x device should give you the foo,y
> functionality.
> 
> The simple case is where foo,x is more or less identical to foo,y, but
> there might be some implementation-specific bugs that makes it useful
> to be able to, at some point in the future, tell if you're running on
> a foo,x or foo,y device even if the code is identical today.
> 
> 
> In this particular case, google,nyan and google,nyan-big are very
> similar. There are some differences in panels, etc, but it's described
> in the individual device trees already, but things will come up and be
> functional even if you boot with the wrong device tree (as far as I
> know). Andrew has done that in the past, as far as I know.

The problem with the above that it makes a bunch of assumptions about
drivers. It's perfectly possible for one OS to be implemented in a way
that matches your expectations above, while another OS would not work
the same way.

In particular since you point out panels being different: you typically
can't rely on a driver for one panel to support another panel as well.
While it's true that many panels provide an EDID for the display timings
it's equally well possible that some panels don't, therefore a driver
for one panel can't drive another (because the timings are wrong). There
are other things that can be incompatible between panels such as power
up/down sequences and power supplies. All those together mean that the
panels aren't compatible and I'd argue that the panel is one of the key
features of a Chromebook. Booting a "google,nyan" DTB on a
"google,nyan-big" device may (depending on OS) in fact break
functionality and hence be incompatible.

Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140821/59e857eb/attachment.sig>

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-08-13 19:14 ` Dylan Reid
@ 2014-09-04 19:40     ` Stephen Warren
  -1 siblings, 0 replies; 42+ messages in thread
From: Stephen Warren @ 2014-09-04 19:40 UTC (permalink / raw)
  To: Dylan Reid
  Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA,
	thierry.reding-Re5JQEeQqe8AvxtiuMwx3w,
	abrestic-F7+t8E8rja9g9hUCZPvPmw,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	olof-nZhT3qVonbNeoWH0uzbU5w

On 08/13/2014 01:14 PM, Dylan Reid wrote:
> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
> processor and is similar to the Venice2 reference platform.
>
> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
> and work on the 1266x768 models.  The HD models haven't yet been
> tested.
>
> WiFi does not work yet, it needs at least some PMIC changes to enable
> the 32k clock.
>
> The elan trackpad is not yet functional but hopefully will be soon as
> there are patches under review.
>
> There is also an issue on reboot because the TPM isn't reset.  It will
> cause the stock firmware to enter recovery mode.  This can be worked
> around by an EC-reset, press the refresh and power keys at the same
> time.

BTW, I'm only waiting on a few minor fixes for issues pointed out by 
Andreas before applying this patch:
* Resolution typo in the commit message.
* Sort order of the Makefile addition.
* pwm: label move.
* Stray content/syntax error in regulator@1 node.

I'm assuming you'll repost for that? I guess I could fix them up when 
applying, but I usually wouldn't.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-09-04 19:40     ` Stephen Warren
  0 siblings, 0 replies; 42+ messages in thread
From: Stephen Warren @ 2014-09-04 19:40 UTC (permalink / raw)
  To: linux-arm-kernel

On 08/13/2014 01:14 PM, Dylan Reid wrote:
> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
> processor and is similar to the Venice2 reference platform.
>
> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
> and work on the 1266x768 models.  The HD models haven't yet been
> tested.
>
> WiFi does not work yet, it needs at least some PMIC changes to enable
> the 32k clock.
>
> The elan trackpad is not yet functional but hopefully will be soon as
> there are patches under review.
>
> There is also an issue on reboot because the TPM isn't reset.  It will
> cause the stock firmware to enter recovery mode.  This can be worked
> around by an EC-reset, press the refresh and power keys at the same
> time.

BTW, I'm only waiting on a few minor fixes for issues pointed out by 
Andreas before applying this patch:
* Resolution typo in the commit message.
* Sort order of the Makefile addition.
* pwm: label move.
* Stray content/syntax error in regulator at 1 node.

I'm assuming you'll repost for that? I guess I could fix them up when 
applying, but I usually wouldn't.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-09-04 19:40     ` Stephen Warren
@ 2014-09-04 20:33         ` Dylan Reid
  -1 siblings, 0 replies; 42+ messages in thread
From: Dylan Reid @ 2014-09-04 20:33 UTC (permalink / raw)
  To: Stephen Warren
  Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA, Thierry Reding,
	Andrew Bresticker,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	olof-nZhT3qVonbNeoWH0uzbU5w

On Thu, Sep 4, 2014 at 12:40 PM, Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote:
> On 08/13/2014 01:14 PM, Dylan Reid wrote:
>>
>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>> processor and is similar to the Venice2 reference platform.
>>
>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>> and work on the 1266x768 models.  The HD models haven't yet been
>> tested.
>>
>> WiFi does not work yet, it needs at least some PMIC changes to enable
>> the 32k clock.
>>
>> The elan trackpad is not yet functional but hopefully will be soon as
>> there are patches under review.
>>
>> There is also an issue on reboot because the TPM isn't reset.  It will
>> cause the stock firmware to enter recovery mode.  This can be worked
>> around by an EC-reset, press the refresh and power keys at the same
>> time.
>
>
> BTW, I'm only waiting on a few minor fixes for issues pointed out by Andreas
> before applying this patch:

Thanks Stephen,

Sorry I've been MIA, things have been a little crazy here.

> * Resolution typo in the commit message.
> * Sort order of the Makefile addition.
> * pwm: label move.

If I move the pwm label, should I move the others as well?  Do we want
to use the same method that has been used for exynos5250?  Exynos has
a label on most things that are overridden and the .dts files that
override them, like exynos5250-snow.dts, access them with &label
syntax.  It's easy for me to do, but it will involve converting
venice2 and jetson as well to avoid label re-defines.

> * Stray content/syntax error in regulator@1 node.
>
> I'm assuming you'll repost for that? I guess I could fix them up when
> applying, but I usually wouldn't.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-09-04 20:33         ` Dylan Reid
  0 siblings, 0 replies; 42+ messages in thread
From: Dylan Reid @ 2014-09-04 20:33 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Sep 4, 2014 at 12:40 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
> On 08/13/2014 01:14 PM, Dylan Reid wrote:
>>
>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>> processor and is similar to the Venice2 reference platform.
>>
>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>> and work on the 1266x768 models.  The HD models haven't yet been
>> tested.
>>
>> WiFi does not work yet, it needs at least some PMIC changes to enable
>> the 32k clock.
>>
>> The elan trackpad is not yet functional but hopefully will be soon as
>> there are patches under review.
>>
>> There is also an issue on reboot because the TPM isn't reset.  It will
>> cause the stock firmware to enter recovery mode.  This can be worked
>> around by an EC-reset, press the refresh and power keys at the same
>> time.
>
>
> BTW, I'm only waiting on a few minor fixes for issues pointed out by Andreas
> before applying this patch:

Thanks Stephen,

Sorry I've been MIA, things have been a little crazy here.

> * Resolution typo in the commit message.
> * Sort order of the Makefile addition.
> * pwm: label move.

If I move the pwm label, should I move the others as well?  Do we want
to use the same method that has been used for exynos5250?  Exynos has
a label on most things that are overridden and the .dts files that
override them, like exynos5250-snow.dts, access them with &label
syntax.  It's easy for me to do, but it will involve converting
venice2 and jetson as well to avoid label re-defines.

> * Stray content/syntax error in regulator at 1 node.
>
> I'm assuming you'll repost for that? I guess I could fix them up when
> applying, but I usually wouldn't.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-09-04 20:33         ` Dylan Reid
@ 2014-09-04 21:04             ` Stephen Warren
  -1 siblings, 0 replies; 42+ messages in thread
From: Stephen Warren @ 2014-09-04 21:04 UTC (permalink / raw)
  To: Dylan Reid
  Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA, Thierry Reding,
	Andrew Bresticker,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	olof-nZhT3qVonbNeoWH0uzbU5w

On 09/04/2014 02:33 PM, Dylan Reid wrote:
> On Thu, Sep 4, 2014 at 12:40 PM, Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote:
>> On 08/13/2014 01:14 PM, Dylan Reid wrote:
>>>
>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>>> processor and is similar to the Venice2 reference platform.
>>>
>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>>> and work on the 1266x768 models.  The HD models haven't yet been
>>> tested.
>>>
>>> WiFi does not work yet, it needs at least some PMIC changes to enable
>>> the 32k clock.
>>>
>>> The elan trackpad is not yet functional but hopefully will be soon as
>>> there are patches under review.
>>>
>>> There is also an issue on reboot because the TPM isn't reset.  It will
>>> cause the stock firmware to enter recovery mode.  This can be worked
>>> around by an EC-reset, press the refresh and power keys at the same
>>> time.
>>
>>
>> BTW, I'm only waiting on a few minor fixes for issues pointed out by Andreas
>> before applying this patch:
>
> Thanks Stephen,
>
> Sorry I've been MIA, things have been a little crazy here.
>
>> * Resolution typo in the commit message.
>> * Sort order of the Makefile addition.
>> * pwm: label move.
>
> If I move the pwm label, should I move the others as well?  Do we want
> to use the same method that has been used for exynos5250?  Exynos has
> a label on most things that are overridden and the .dts files that
> override them, like exynos5250-snow.dts, access them with &label
> syntax.  It's easy for me to do, but it will involve converting
> venice2 and jetson as well to avoid label re-defines.

I think anything that's first defined in tegra124.dtsi should have the 
label defined in tegra124.dtsi, provided the label makes sens across all 
boards. From v2 of the patch, that looks like: dpaux, pwm. It looks like 
the pinmux label isn't used, so I'd suggest dropping that. The label 
name hdmi_ddc feels board-specific (since different boards could at 
least theoretically use different I2C controllers for DDC), so I'd leave 
that in the board dts file myself.

The &label { ... } syntax wouldn't be consistent with any of the other 
Tegra files at the moment, so I'd suggest sticking to the overall DT 
structure you already have in patch v2. I admit it's unfortunate that 
Exynos and Tegra use different node reference styles, but consistency 
between all the Tegra DT files feels most important to me right now:-)

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-09-04 21:04             ` Stephen Warren
  0 siblings, 0 replies; 42+ messages in thread
From: Stephen Warren @ 2014-09-04 21:04 UTC (permalink / raw)
  To: linux-arm-kernel

On 09/04/2014 02:33 PM, Dylan Reid wrote:
> On Thu, Sep 4, 2014 at 12:40 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
>> On 08/13/2014 01:14 PM, Dylan Reid wrote:
>>>
>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>>> processor and is similar to the Venice2 reference platform.
>>>
>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>>> and work on the 1266x768 models.  The HD models haven't yet been
>>> tested.
>>>
>>> WiFi does not work yet, it needs at least some PMIC changes to enable
>>> the 32k clock.
>>>
>>> The elan trackpad is not yet functional but hopefully will be soon as
>>> there are patches under review.
>>>
>>> There is also an issue on reboot because the TPM isn't reset.  It will
>>> cause the stock firmware to enter recovery mode.  This can be worked
>>> around by an EC-reset, press the refresh and power keys at the same
>>> time.
>>
>>
>> BTW, I'm only waiting on a few minor fixes for issues pointed out by Andreas
>> before applying this patch:
>
> Thanks Stephen,
>
> Sorry I've been MIA, things have been a little crazy here.
>
>> * Resolution typo in the commit message.
>> * Sort order of the Makefile addition.
>> * pwm: label move.
>
> If I move the pwm label, should I move the others as well?  Do we want
> to use the same method that has been used for exynos5250?  Exynos has
> a label on most things that are overridden and the .dts files that
> override them, like exynos5250-snow.dts, access them with &label
> syntax.  It's easy for me to do, but it will involve converting
> venice2 and jetson as well to avoid label re-defines.

I think anything that's first defined in tegra124.dtsi should have the 
label defined in tegra124.dtsi, provided the label makes sens across all 
boards. From v2 of the patch, that looks like: dpaux, pwm. It looks like 
the pinmux label isn't used, so I'd suggest dropping that. The label 
name hdmi_ddc feels board-specific (since different boards could at 
least theoretically use different I2C controllers for DDC), so I'd leave 
that in the board dts file myself.

The &label { ... } syntax wouldn't be consistent with any of the other 
Tegra files at the moment, so I'd suggest sticking to the overall DT 
structure you already have in patch v2. I admit it's unfortunate that 
Exynos and Tegra use different node reference styles, but consistency 
between all the Tegra DT files feels most important to me right now:-)

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
  2014-09-04 21:04             ` Stephen Warren
@ 2014-09-04 21:08                 ` Dylan Reid
  -1 siblings, 0 replies; 42+ messages in thread
From: Dylan Reid @ 2014-09-04 21:08 UTC (permalink / raw)
  To: Stephen Warren
  Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA, Thierry Reding,
	Andrew Bresticker,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	olof-nZhT3qVonbNeoWH0uzbU5w

On Thu, Sep 4, 2014 at 2:04 PM, Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote:
> On 09/04/2014 02:33 PM, Dylan Reid wrote:
>>
>> On Thu, Sep 4, 2014 at 12:40 PM, Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
>> wrote:
>>>
>>> On 08/13/2014 01:14 PM, Dylan Reid wrote:
>>>>
>>>>
>>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>>>> processor and is similar to the Venice2 reference platform.
>>>>
>>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>>>> and work on the 1266x768 models.  The HD models haven't yet been
>>>> tested.
>>>>
>>>> WiFi does not work yet, it needs at least some PMIC changes to enable
>>>> the 32k clock.
>>>>
>>>> The elan trackpad is not yet functional but hopefully will be soon as
>>>> there are patches under review.
>>>>
>>>> There is also an issue on reboot because the TPM isn't reset.  It will
>>>> cause the stock firmware to enter recovery mode.  This can be worked
>>>> around by an EC-reset, press the refresh and power keys at the same
>>>> time.
>>>
>>>
>>>
>>> BTW, I'm only waiting on a few minor fixes for issues pointed out by
>>> Andreas
>>> before applying this patch:
>>
>>
>> Thanks Stephen,
>>
>> Sorry I've been MIA, things have been a little crazy here.
>>
>>> * Resolution typo in the commit message.
>>> * Sort order of the Makefile addition.
>>> * pwm: label move.
>>
>>
>> If I move the pwm label, should I move the others as well?  Do we want
>> to use the same method that has been used for exynos5250?  Exynos has
>> a label on most things that are overridden and the .dts files that
>> override them, like exynos5250-snow.dts, access them with &label
>> syntax.  It's easy for me to do, but it will involve converting
>> venice2 and jetson as well to avoid label re-defines.
>
>
> I think anything that's first defined in tegra124.dtsi should have the label
> defined in tegra124.dtsi, provided the label makes sens across all boards.
> From v2 of the patch, that looks like: dpaux, pwm. It looks like the pinmux
> label isn't used, so I'd suggest dropping that. The label name hdmi_ddc
> feels board-specific (since different boards could at least theoretically
> use different I2C controllers for DDC), so I'd leave that in the board dts
> file myself.
>
> The &label { ... } syntax wouldn't be consistent with any of the other Tegra
> files at the moment, so I'd suggest sticking to the overall DT structure you
> already have in patch v2. I admit it's unfortunate that Exynos and Tegra use
> different node reference styles, but consistency between all the Tegra DT
> files feels most important to me right now:-)

Sounds good.  I'll do that, run a few tests and send the patches out by EOD.

Thanks,

Dylan

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree
@ 2014-09-04 21:08                 ` Dylan Reid
  0 siblings, 0 replies; 42+ messages in thread
From: Dylan Reid @ 2014-09-04 21:08 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Sep 4, 2014 at 2:04 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
> On 09/04/2014 02:33 PM, Dylan Reid wrote:
>>
>> On Thu, Sep 4, 2014 at 12:40 PM, Stephen Warren <swarren@wwwdotorg.org>
>> wrote:
>>>
>>> On 08/13/2014 01:14 PM, Dylan Reid wrote:
>>>>
>>>>
>>>> The Acer Chromebook 13, codenamed Big, contains an NVIDIA tegra124
>>>> processor and is similar to the Venice2 reference platform.
>>>>
>>>> The keyboard, USB 2, audio, HDMI, sdcard, and emmc have been tested
>>>> and work on the 1266x768 models.  The HD models haven't yet been
>>>> tested.
>>>>
>>>> WiFi does not work yet, it needs at least some PMIC changes to enable
>>>> the 32k clock.
>>>>
>>>> The elan trackpad is not yet functional but hopefully will be soon as
>>>> there are patches under review.
>>>>
>>>> There is also an issue on reboot because the TPM isn't reset.  It will
>>>> cause the stock firmware to enter recovery mode.  This can be worked
>>>> around by an EC-reset, press the refresh and power keys at the same
>>>> time.
>>>
>>>
>>>
>>> BTW, I'm only waiting on a few minor fixes for issues pointed out by
>>> Andreas
>>> before applying this patch:
>>
>>
>> Thanks Stephen,
>>
>> Sorry I've been MIA, things have been a little crazy here.
>>
>>> * Resolution typo in the commit message.
>>> * Sort order of the Makefile addition.
>>> * pwm: label move.
>>
>>
>> If I move the pwm label, should I move the others as well?  Do we want
>> to use the same method that has been used for exynos5250?  Exynos has
>> a label on most things that are overridden and the .dts files that
>> override them, like exynos5250-snow.dts, access them with &label
>> syntax.  It's easy for me to do, but it will involve converting
>> venice2 and jetson as well to avoid label re-defines.
>
>
> I think anything that's first defined in tegra124.dtsi should have the label
> defined in tegra124.dtsi, provided the label makes sens across all boards.
> From v2 of the patch, that looks like: dpaux, pwm. It looks like the pinmux
> label isn't used, so I'd suggest dropping that. The label name hdmi_ddc
> feels board-specific (since different boards could at least theoretically
> use different I2C controllers for DDC), so I'd leave that in the board dts
> file myself.
>
> The &label { ... } syntax wouldn't be consistent with any of the other Tegra
> files at the moment, so I'd suggest sticking to the overall DT structure you
> already have in patch v2. I admit it's unfortunate that Exynos and Tegra use
> different node reference styles, but consistency between all the Tegra DT
> files feels most important to me right now:-)

Sounds good.  I'll do that, run a few tests and send the patches out by EOD.

Thanks,

Dylan

^ permalink raw reply	[flat|nested] 42+ messages in thread

end of thread, other threads:[~2014-09-04 21:08 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-13 19:14 [PATCH v2] ARM: tegra: add Acer Chromebook 13 device tree Dylan Reid
2014-08-13 19:14 ` Dylan Reid
     [not found] ` <1407957267-3258-1-git-send-email-dgreid-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2014-08-16 15:20   ` Andreas Färber
2014-08-16 15:20     ` Andreas Färber
     [not found]     ` <53EF76CF.9050808-l3A5Bk7waGM@public.gmane.org>
2014-08-18 16:10       ` Stephen Warren
2014-08-18 16:10         ` Stephen Warren
     [not found]         ` <53F2255E.7090208-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-08-18 17:03           ` Andreas Färber
2014-08-18 17:03             ` Andreas Färber
2014-08-18 23:24           ` Andrew Bresticker
2014-08-18 23:24             ` Andrew Bresticker
     [not found]             ` <CAL1qeaH-WfA-DLKwuXA_hBPHYuXksAibLq__zisrT9ALaRGdAw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-08-18 23:43               ` Stephen Warren
2014-08-18 23:43                 ` Stephen Warren
     [not found]                 ` <53F28F90.3000004-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-08-19  0:11                   ` Andrew Bresticker
2014-08-19  0:11                     ` Andrew Bresticker
     [not found]                     ` <CAL1qeaFnfLDOXq07fY4xLfdRpG8FQ63ya+-0Hk+ewA1wXkLOLw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-08-19 21:47                       ` Stephen Warren
2014-08-19 21:47                         ` Stephen Warren
     [not found]                         ` <53F3C5FD.4050808-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-08-20  5:36                           ` Thierry Reding
2014-08-20  5:36                             ` Thierry Reding
2014-08-20 13:37                           ` Olof Johansson
2014-08-20 13:37                             ` Olof Johansson
     [not found]                             ` <CAOesGMhDe0zFYkUWqBOTunK76wccdKOQ8b+EFAzeTr+oOUQyWA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-08-20 15:25                               ` Thierry Reding
2014-08-20 15:25                                 ` Thierry Reding
2014-08-20 17:25                                 ` Andrew Bresticker
2014-08-20 17:25                                   ` Andrew Bresticker
2014-08-20 13:29                   ` Olof Johansson
2014-08-20 13:29                     ` Olof Johansson
     [not found]                     ` <CAOesGMhBdQh_ddycZ-Y5dupR9hW74bogHtG3yyPUJ2tAgWi19A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-08-20 14:32                       ` Thierry Reding
2014-08-20 14:32                         ` Thierry Reding
2014-08-20 15:40                         ` Olof Johansson
2014-08-20 15:40                           ` Olof Johansson
     [not found]                           ` <CAOesGMjFGabNOk0ODjbDN5aaro5309t02+B+UZoM_+q5VE9Ltw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-08-21  7:19                             ` Thierry Reding
2014-08-21  7:19                               ` Thierry Reding
2014-08-18 23:05   ` Andrew Bresticker
2014-08-18 23:05     ` Andrew Bresticker
2014-09-04 19:40   ` Stephen Warren
2014-09-04 19:40     ` Stephen Warren
     [not found]     ` <5408C023.8060403-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-09-04 20:33       ` Dylan Reid
2014-09-04 20:33         ` Dylan Reid
     [not found]         ` <CAEUnVG5xdbGZS5pFef0mkCB15pCCFR=vW5rELwU--KTBCT_feQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-09-04 21:04           ` Stephen Warren
2014-09-04 21:04             ` Stephen Warren
     [not found]             ` <5408D3F7.5080200-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-09-04 21:08               ` Dylan Reid
2014-09-04 21:08                 ` Dylan Reid

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.