OSDN Git Service

ARM: tegra: Add device-tree for ASUS Transformer EeePad TF101
authorNikola Milosavljevic <mnidza@outlook.com>
Sat, 11 Dec 2021 21:13:49 +0000 (00:13 +0300)
committerThierry Reding <treding@nvidia.com>
Wed, 15 Dec 2021 16:29:54 +0000 (17:29 +0100)
Add device-tree for Tegra20-based ASUS Transformer EeePad TF101.

Link: https://wiki.postmarketos.org/wiki/ASUS_Eee_Pad_Transformer_(asus-tf101)
Co-developed-by: David Heidelberg <david@ixit.cz>
Signed-off-by: David Heidelberg <david@ixit.cz>
Co-developed-by: Svyatoslav Ryhel <clamor95@gmail.com>
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Co-developed-by: Antoni Aloy Torrens <aaloytorrens@gmail.com>
Signed-off-by: Antoni Aloy Torrens <aaloytorrens@gmail.com>
Signed-off-by: Nikola Milosavljevic <mnidza@outlook.com>
Co-developed-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
[treding@nvidia.com: cosmetic fixups]
Signed-off-by: Thierry Reding <treding@nvidia.com>
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/tegra20-asus-tf101.dts [new file with mode: 0644]
arch/arm/boot/dts/tegra20.dtsi

index 0de64f2..f51edce 100644 (file)
@@ -1304,6 +1304,7 @@ dtb-$(CONFIG_MACH_SUNIV) += \
        suniv-f1c100s-licheepi-nano.dtb
 dtb-$(CONFIG_ARCH_TEGRA_2x_SOC) += \
        tegra20-acer-a500-picasso.dtb \
+       tegra20-asus-tf101.dtb \
        tegra20-harmony.dtb \
        tegra20-colibri-eval-v3.dtb \
        tegra20-colibri-iris.dtb \
diff --git a/arch/arm/boot/dts/tegra20-asus-tf101.dts b/arch/arm/boot/dts/tegra20-asus-tf101.dts
new file mode 100644 (file)
index 0000000..020172e
--- /dev/null
@@ -0,0 +1,1280 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+
+#include <dt-bindings/input/atmel-maxtouch.h>
+#include <dt-bindings/input/gpio-keys.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/thermal/thermal.h>
+
+#include "tegra20.dtsi"
+#include "tegra20-cpu-opp.dtsi"
+#include "tegra20-cpu-opp-microvolt.dtsi"
+
+/ {
+       model = "ASUS EeePad Transformer TF101";
+       compatible = "asus,tf101", "nvidia,tegra20";
+       chassis-type = "convertible";
+
+       aliases {
+               mmc0 = &sdmmc4; /* eMMC */
+               mmc1 = &sdmmc3; /* MicroSD */
+               mmc2 = &sdmmc1; /* WiFi */
+
+               rtc0 = &pmic;
+               rtc1 = "/rtc@7000e000";
+
+               serial0 = &uartd;
+               serial1 = &uartc; /* Bluetooth */
+               serial2 = &uartb; /* GPS */
+       };
+
+       /*
+        * The decompressor and also some bootloaders rely on a
+        * pre-existing /chosen node to be available to insert the
+        * command line and merge other ATAGS info.
+        */
+       chosen {};
+
+       memory@0 {
+               reg = <0x00000000 0x40000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               ramoops@2ffe0000 {
+                       compatible = "ramoops";
+                       reg = <0x2ffe0000 0x10000>;     /* 64kB */
+                       console-size = <0x8000>;        /* 32kB */
+                       record-size = <0x400>;          /*  1kB */
+                       ecc-size = <16>;
+               };
+
+               linux,cma@30000000 {
+                       compatible = "shared-dma-pool";
+                       alloc-ranges = <0x30000000 0x10000000>;
+                       size = <0x10000000>; /* 256MiB */
+                       linux,cma-default;
+                       reusable;
+               };
+       };
+
+       host1x@50000000 {
+               dc@54200000 {
+                       rgb {
+                               status = "okay";
+
+                               port@0 {
+                                       lcd_output: endpoint {
+                                               remote-endpoint = <&lvds_encoder_input>;
+                                               bus-width = <18>;
+                                       };
+                               };
+                       };
+               };
+
+               hdmi@54280000 {
+                       status = "okay";
+
+                       vdd-supply = <&hdmi_vdd_reg>;
+                       pll-supply = <&hdmi_pll_reg>;
+                       hdmi-supply = <&vdd_hdmi_en>;
+
+                       nvidia,ddc-i2c-bus = <&hdmi_ddc>;
+                       nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7)
+                               GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       gpio@6000d000 {
+               charging-enable-hog {
+                       gpio-hog;
+                       gpios = <TEGRA_GPIO(R, 6) GPIO_ACTIVE_HIGH>;
+                       output-low;
+               };
+       };
+
+       pinmux@70000014 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&state_default>;
+
+               state_default: pinmux {
+                       ata {
+                               nvidia,pins = "ata";
+                               nvidia,function = "ide";
+                       };
+
+                       atb {
+                               nvidia,pins = "atb", "gma", "gme";
+                               nvidia,function = "sdio4";
+                       };
+
+                       atc {
+                               nvidia,pins = "atc";
+                               nvidia,function = "nand";
+                       };
+
+                       atd {
+                               nvidia,pins = "atd", "ate", "gmb", "spia",
+                                       "spib", "spic";
+                               nvidia,function = "gmi";
+                       };
+
+                       cdev1 {
+                               nvidia,pins = "cdev1";
+                               nvidia,function = "plla_out";
+                       };
+
+                       cdev2 {
+                               nvidia,pins = "cdev2";
+                               nvidia,function = "pllp_out4";
+                       };
+
+                       crtp {
+                               nvidia,pins = "crtp";
+                               nvidia,function = "crt";
+                       };
+
+                       lm1 {
+                               nvidia,pins = "lm1";
+                               nvidia,function = "rsvd3";
+                       };
+
+                       csus {
+                               nvidia,pins = "csus";
+                               nvidia,function = "vi_sensor_clk";
+                       };
+
+                       dap1 {
+                               nvidia,pins = "dap1";
+                               nvidia,function = "dap1";
+                       };
+
+                       dap2 {
+                               nvidia,pins = "dap2";
+                               nvidia,function = "dap2";
+                       };
+
+                       dap3 {
+                               nvidia,pins = "dap3";
+                               nvidia,function = "dap3";
+                       };
+
+                       dap4 {
+                               nvidia,pins = "dap4";
+                               nvidia,function = "dap4";
+                       };
+
+                       dta {
+                               nvidia,pins = "dta", "dtb", "dtc", "dtd", "dte";
+                               nvidia,function = "vi";
+                       };
+
+                       dtf {
+                               nvidia,pins = "dtf";
+                               nvidia,function = "i2c3";
+                       };
+
+                       gmc {
+                               nvidia,pins = "gmc";
+                               nvidia,function = "uartd";
+                       };
+
+                       gmd {
+                               nvidia,pins = "gmd";
+                               nvidia,function = "sflash";
+                       };
+
+                       gpu {
+                               nvidia,pins = "gpu";
+                               nvidia,function = "pwm";
+                       };
+
+                       gpu7 {
+                               nvidia,pins = "gpu7";
+                               nvidia,function = "rtck";
+                       };
+
+                       gpv {
+                               nvidia,pins = "gpv", "slxa";
+                               nvidia,function = "pcie";
+                       };
+
+                       hdint {
+                               nvidia,pins = "hdint";
+                               nvidia,function = "hdmi";
+                       };
+
+                       i2cp {
+                               nvidia,pins = "i2cp";
+                               nvidia,function = "i2cp";
+                       };
+
+                       irrx {
+                               nvidia,pins = "irrx", "irtx";
+                               nvidia,function = "uartb";
+                       };
+
+                       kbca {
+                               nvidia,pins = "kbca", "kbcb", "kbcc", "kbcd",
+                                       "kbce", "kbcf";
+                               nvidia,function = "kbc";
+                       };
+
+                       lcsn {
+                               nvidia,pins = "lcsn", "ldc", "lm0", "lpw1",
+                                       "lsdi", "lvp0";
+                               nvidia,function = "rsvd4";
+                       };
+
+                       ld0 {
+                               nvidia,pins = "ld0", "ld1", "ld2", "ld3", "ld4",
+                                       "ld5", "ld6", "ld7", "ld8", "ld9",
+                                       "ld10", "ld11", "ld12", "ld13", "ld14",
+                                       "ld15", "ld16", "ld17", "ldi", "lhp0",
+                                       "lhp1", "lhp2", "lhs", "lpp", "lpw0",
+                                       "lpw2", "lsc0", "lsc1", "lsck", "lsda",
+                                       "lspi", "lvp1", "lvs";
+                               nvidia,function = "displaya";
+                       };
+
+                       owc {
+                               nvidia,pins = "owc", "spdi", "spdo", "uac";
+                               nvidia,function = "rsvd2";
+                       };
+
+                       pmc {
+                               nvidia,pins = "pmc";
+                               nvidia,function = "pwr_on";
+                       };
+
+                       rm {
+                               nvidia,pins = "rm";
+                               nvidia,function = "i2c1";
+                       };
+
+                       sdb {
+                               nvidia,pins = "sdb", "sdc", "sdd", "slxc", "slxk";
+                               nvidia,function = "sdio3";
+                       };
+
+                       sdio1 {
+                               nvidia,pins = "sdio1";
+                               nvidia,function = "sdio1";
+                       };
+
+                       slxd {
+                               nvidia,pins = "slxd";
+                               nvidia,function = "spdif";
+                       };
+
+                       spid {
+                               nvidia,pins = "spid", "spie", "spif";
+                               nvidia,function = "spi1";
+                       };
+
+                       spig {
+                               nvidia,pins = "spig", "spih";
+                               nvidia,function = "spi2_alt";
+                       };
+
+                       uaa {
+                               nvidia,pins = "uaa", "uab", "uda";
+                               nvidia,function = "ulpi";
+                       };
+
+                       uad {
+                               nvidia,pins = "uad";
+                               nvidia,function = "irda";
+                       };
+
+                       uca {
+                               nvidia,pins = "uca", "ucb";
+                               nvidia,function = "uartc";
+                       };
+
+                       conf_ata {
+                               nvidia,pins = "ata", "atb", "atc", "atd",
+                                       "cdev1", "cdev2", "dap1", "dap4",
+                                       "dte", "ddc", "dtf", "gma", "gmc",
+                                       "gme", "gpu", "gpu7", "gpv", "i2cp",
+                                       "irrx", "irtx", "pta", "rm", "sdc",
+                                       "sdd", "slxc", "slxd", "slxk", "spdi",
+                                       "spdo", "uac", "uad",
+                                       "uda", "csus";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       conf_ate {
+                               nvidia,pins = "ate", "dap2", "dap3", "gmb", "gmd",
+                                       "owc", "spia", "spib", "spic",
+                                       "spid", "spie", "spig", "slxa";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       conf_ck32 {
+                               nvidia,pins = "ck32", "ddrc", "pmca", "pmcb",
+                                       "pmcc", "pmcd", "pmce", "xm2c", "xm2d";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                       };
+
+                       conf_crtp {
+                               nvidia,pins = "crtp", "spih";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       conf_dta {
+                               nvidia,pins = "dta", "dtb", "dtc", "dtd";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       conf_spif {
+                               nvidia,pins = "spif";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       conf_hdint {
+                               nvidia,pins = "hdint", "lcsn", "ldc", "lm1",
+                                       "lpw1", "lsck", "lsda", "lsdi", "lvp0";
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       conf_kbca {
+                               nvidia,pins = "kbca", "kbcb", "kbcc", "kbcd",
+                                       "kbce", "kbcf", "sdio1", "uaa", "uab",
+                                       "uca", "ucb";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       conf_lc {
+                               nvidia,pins = "lc", "ls";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                       };
+
+                       conf_ld0 {
+                               nvidia,pins = "ld0", "ld1", "ld2", "ld3", "ld4",
+                                       "ld5", "ld6", "ld7", "ld8", "ld9",
+                                       "ld10", "ld11", "ld12", "ld13", "ld14",
+                                       "ld15", "ld16", "ld17", "ldi", "lhp0",
+                                       "lhp1", "lhp2", "lhs", "lm0", "lpp",
+                                       "lpw0", "lpw2", "lsc0", "lsc1", "lspi",
+                                       "lvp1", "lvs", "pmc", "sdb";
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       conf_ld17_0 {
+                               nvidia,pins = "ld17_0", "ld19_18", "ld21_20",
+                                       "ld23_22";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                       };
+
+                       drive_sdio1 {
+                               nvidia,pins = "drive_sdio1", "drive_ddc", "drive_vi1";
+                               nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>;
+                               nvidia,schmitt = <TEGRA_PIN_ENABLE>;
+                               nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
+                               nvidia,pull-down-strength = <31>;
+                               nvidia,pull-up-strength = <31>;
+                               nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOWEST>;
+                               nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOWEST>;
+                       };
+
+                       drive_csus {
+                               nvidia,pins = "drive_csus";
+                               nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>;
+                               nvidia,schmitt = <TEGRA_PIN_DISABLE>;
+                               nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
+                               nvidia,pull-down-strength = <31>;
+                               nvidia,pull-up-strength = <31>;
+                               nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOWEST>;
+                               nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOWEST>;
+                       };
+               };
+
+               state_i2cmux_ddc: pinmux_i2cmux_ddc {
+                       ddc {
+                               nvidia,pins = "ddc";
+                               nvidia,function = "i2c2";
+                       };
+
+                       pta {
+                               nvidia,pins = "pta";
+                               nvidia,function = "rsvd4";
+                       };
+               };
+
+               state_i2cmux_pta: pinmux_i2cmux_pta {
+                       ddc {
+                               nvidia,pins = "ddc";
+                               nvidia,function = "rsvd4";
+                       };
+
+                       pta {
+                               nvidia,pins = "pta";
+                               nvidia,function = "i2c2";
+                       };
+               };
+
+               state_i2cmux_idle: pinmux_i2cmux_idle {
+                       ddc {
+                               nvidia,pins = "ddc";
+                               nvidia,function = "rsvd4";
+                       };
+
+                       pta {
+                               nvidia,pins = "pta";
+                               nvidia,function = "rsvd4";
+                       };
+               };
+       };
+
+       i2s@70002800 {
+               status = "okay";
+       };
+
+       serial@70006040 {
+               compatible = "nvidia,tegra20-hsuart";
+               /* GPS BCM4751 */
+       };
+
+       serial@70006200 {
+               compatible = "nvidia,tegra20-hsuart";
+               status = "okay";
+
+               /* Azurewave AW-NH615 BCM4329B1 */
+               bluetooth {
+                       compatible = "brcm,bcm4329-bt";
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(U, 6) IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "host-wakeup";
+
+                       /* PLLP 216MHz / 16 / 4 */
+                       max-speed = <3375000>;
+
+                       clocks = <&tegra_pmc TEGRA_PMC_CLK_BLINK>;
+                       clock-names = "txco";
+
+                       vbat-supply  = <&vdd_3v3_sys>;
+                       vddio-supply = <&vdd_1v8_sys>;
+
+                       device-wakeup-gpios = <&gpio TEGRA_GPIO(U, 1) GPIO_ACTIVE_HIGH>;
+                       shutdown-gpios =      <&gpio TEGRA_GPIO(U, 0) GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       serial@70006300 {
+               status = "okay";
+       };
+
+       pwm@7000a000 {
+               status = "okay";
+       };
+
+       i2c@7000c000 {
+               status = "okay";
+               clock-frequency = <400000>;
+
+               /* Aichi AMI306 digital compass */
+               magnetometer@e {
+                       compatible = "asahi-kasei,ak8974";
+                       reg = <0xe>;
+
+                       avdd-supply = <&vdd_3v3_sys>;
+                       dvdd-supply = <&vdd_1v8_sys>;
+
+                       mount-matrix = "-1",  "0",  "0",
+                                       "0",  "1",  "0",
+                                       "0",  "0", "-1";
+               };
+
+               wm8903: audio-codec@1a {
+                       compatible = "wlf,wm8903";
+                       reg = <0x1a>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(X, 1) IRQ_TYPE_EDGE_BOTH>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+
+                       micdet-cfg = <0x83>;
+                       micdet-delay = <100>;
+
+                       gpio-cfg = <
+                               0xffffffff /* don't touch */
+                               0xffffffff /* don't touch */
+                               0x00000000 /* Speaker-enable GPIO, output, low */
+                               0x00000400 /* Mic bias current detect */
+                               0xffffffff /* don't touch */
+                       >;
+
+                       AVDD-supply  = <&vdd_1v8_sys>;
+                       CPVDD-supply = <&vdd_1v8_sys>;
+                       DBVDD-supply = <&vdd_1v8_sys>;
+                       DCVDD-supply = <&vdd_1v8_sys>;
+               };
+
+               /* Atmel MXT1386 Touchscreen */
+               touchscreen@5b {
+                       compatible = "atmel,maxtouch";
+                       reg = <0x5b>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(V, 6) IRQ_TYPE_LEVEL_LOW>;
+
+                       reset-gpios = <&gpio TEGRA_GPIO(Q, 7) GPIO_ACTIVE_LOW>;
+
+                       vdda-supply = <&vdd_3v3_sys>;
+                       vdd-supply  = <&vdd_3v3_sys>;
+
+                       atmel,wakeup-method = <ATMEL_MXT_WAKEUP_I2C_SCL>;
+               };
+
+               gyroscope@68 {
+                       compatible = "invensense,mpu3050";
+                       reg = <0x68>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(Z, 4) IRQ_TYPE_EDGE_RISING>;
+
+                       vdd-supply    = <&vdd_3v3_sys>;
+                       vlogic-supply = <&vdd_1v8_sys>;
+
+                       mount-matrix =   "0",  "1",  "0",
+                                       "-1",  "0",  "0",
+                                        "0",  "0",  "1";
+
+                       i2c-gate {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               accelerometer@f {
+                                       compatible = "kionix,kxtf9";
+                                       reg = <0xf>;
+
+                                       interrupt-parent = <&gpio>;
+                                       interrupts = <TEGRA_GPIO(N, 4) IRQ_TYPE_EDGE_RISING>;
+
+                                       vdd-supply = <&vdd_1v8_sys>;
+                                       vddio-supply = <&vdd_1v8_sys>;
+
+                                       mount-matrix =   "1",  "0",  "0",
+                                                        "0",  "1",  "0",
+                                                        "0",  "0",  "1";
+                               };
+                       };
+               };
+       };
+
+       i2c2: i2c@7000c400 {
+               status = "okay";
+               clock-frequency = <100000>;
+       };
+
+       i2c@7000c500 {
+               status = "okay";
+               clock-frequency = <400000>;
+       };
+
+       i2c@7000d000 {
+               status = "okay";
+               clock-frequency = <400000>;
+
+               pmic: pmic@34 {
+                       compatible = "ti,tps6586x";
+                       reg = <0x34>;
+                       interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+
+                       ti,system-power-controller;
+
+                       #gpio-cells = <2>;
+                       gpio-controller;
+
+                       sys-supply = <&vdd_5v0_sys>;
+                       vin-sm0-supply = <&sys_reg>;
+                       vin-sm1-supply = <&sys_reg>;
+                       vin-sm2-supply = <&sys_reg>;
+                       vinldo01-supply = <&sm2_reg>;
+                       vinldo23-supply = <&sm2_reg>;
+                       vinldo4-supply = <&sm2_reg>;
+                       vinldo678-supply = <&sm2_reg>;
+                       vinldo9-supply = <&sm2_reg>;
+
+                       regulators {
+                               sys_reg: sys {
+                                       regulator-name = "vdd_sys";
+                                       regulator-always-on;
+                               };
+
+                               vdd_core: sm0 {
+                                       regulator-name = "vdd_sm0,vdd_core";
+                                       regulator-min-microvolt = <950000>;
+                                       regulator-max-microvolt = <1300000>;
+                                       regulator-coupled-with = <&rtc_vdd &vdd_cpu>;
+                                       regulator-coupled-max-spread = <170000 550000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+
+                                       nvidia,tegra-core-regulator;
+                               };
+
+                               vdd_cpu: sm1 {
+                                       regulator-name = "vdd_sm1,vdd_cpu";
+                                       regulator-min-microvolt = <750000>;
+                                       regulator-max-microvolt = <1125000>;
+                                       regulator-coupled-with = <&vdd_core &rtc_vdd>;
+                                       regulator-coupled-max-spread = <550000 550000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+
+                                       nvidia,tegra-cpu-regulator;
+                               };
+
+                               sm2_reg: sm2 {
+                                       regulator-name = "vdd_sm2,vin_ldo*";
+                                       regulator-min-microvolt = <3700000>;
+                                       regulator-max-microvolt = <3700000>;
+                                       regulator-always-on;
+                               };
+
+                               /* LDO0 is not connected to anything */
+
+                               ldo1 {
+                                       regulator-name = "vdd_ldo1,avdd_pll*";
+                                       regulator-min-microvolt = <1100000>;
+                                       regulator-max-microvolt = <1100000>;
+                                       regulator-always-on;
+                               };
+
+                               rtc_vdd: ldo2 {
+                                       regulator-name = "vdd_ldo2,vdd_rtc";
+                                       regulator-min-microvolt = <950000>;
+                                       regulator-max-microvolt = <1300000>;
+                                       regulator-coupled-with = <&vdd_core &vdd_cpu>;
+                                       regulator-coupled-max-spread = <170000 550000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+
+                                       nvidia,tegra-rtc-regulator;
+                               };
+
+                               ldo3 {
+                                       regulator-name = "vdd_ldo3,avdd_usb*";
+                                       regulator-min-microvolt = <3300000>;
+                                       regulator-max-microvolt = <3300000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo4 {
+                                       regulator-name = "vdd_ldo4,avdd_osc,vddio_sys";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       regulator-always-on;
+                               };
+
+                               vcore_emmc: ldo5 {
+                                       regulator-name = "vdd_ldo5,vcore_mmc";
+                                       regulator-min-microvolt = <2850000>;
+                                       regulator-max-microvolt = <2850000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo6 {
+                                       regulator-name = "vdd_ldo6,avdd_vdac";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                               };
+
+                               hdmi_vdd_reg: ldo7 {
+                                       regulator-name = "vdd_ldo7,avdd_hdmi,vdd_fuse";
+                                       regulator-min-microvolt = <3300000>;
+                                       regulator-max-microvolt = <3300000>;
+                               };
+
+                               hdmi_pll_reg: ldo8 {
+                                       regulator-name = "vdd_ldo8,avdd_hdmi_pll";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                               };
+
+                               ldo9 {
+                                       regulator-name = "vdd_ldo9,avdd_2v85,vdd_ddr_rx";
+                                       regulator-min-microvolt = <2850000>;
+                                       regulator-max-microvolt = <2850000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo_rtc {
+                                       regulator-name = "vdd_rtc_out,vdd_cell";
+                                       regulator-min-microvolt = <3300000>;
+                                       regulator-max-microvolt = <3300000>;
+                                       regulator-always-on;
+                               };
+                       };
+               };
+
+               nct1008: temperature-sensor@4c {
+                       compatible = "onnn,nct1008";
+                       reg = <0x4c>;
+                       vcc-supply = <&vdd_3v3_sys>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(N, 6) IRQ_TYPE_EDGE_FALLING>;
+
+                       #thermal-sensor-cells = <1>;
+               };
+       };
+
+       pmc@7000e400 {
+               nvidia,invert-interrupt;
+               nvidia,suspend-mode = <1>;
+               nvidia,cpu-pwr-good-time = <2000>;
+               nvidia,cpu-pwr-off-time = <100>;
+               nvidia,core-pwr-good-time = <3845 3845>;
+               nvidia,core-pwr-off-time = <458>;
+               nvidia,sys-clock-req-active-high;
+               core-supply = <&vdd_core>;
+       };
+
+       memory-controller@7000f400 {
+               nvidia,use-ram-code;
+
+               emc-tables@3 {
+                       reg = <0x3>;
+
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       lpddr2 {
+                               compatible = "elpida,B8132B2PB-6D-F", "jedec,lpddr2-s4";
+                               revision-id1 = <1>;
+                               density = <2048>;
+                               io-width = <16>;
+                       };
+
+                       emc-table@25000 {
+                               reg = <25000>;
+                               compatible = "nvidia,tegra20-emc-table";
+                               clock-frequency = <25000>;
+                               nvidia,emc-registers = <0x00000002 0x00000006
+                                       0x00000003 0x00000003 0x00000006 0x00000004
+                                       0x00000002 0x00000009 0x00000003 0x00000003
+                                       0x00000002 0x00000002 0x00000002 0x00000004
+                                       0x00000003 0x00000008 0x0000000b 0x0000004d
+                                       0x00000000 0x00000003 0x00000003 0x00000003
+                                       0x00000008 0x00000001 0x0000000a 0x00000004
+                                       0x00000003 0x00000008 0x00000004 0x00000006
+                                       0x00000002 0x00000068 0x00000000 0x00000003
+                                       0x00000000 0x00000000 0x00000282 0xa0ae04ae
+                                       0x00070000 0x00000000 0x00000000 0x00000003
+                                       0x00000000 0x00000000 0x00000000 0x00000000>;
+                       };
+
+                       emc-table@50000 {
+                               reg = <50000>;
+                               compatible = "nvidia,tegra20-emc-table";
+                               clock-frequency = <50000>;
+                               nvidia,emc-registers = <0x00000003 0x00000007
+                                       0x00000003 0x00000003 0x00000006 0x00000004
+                                       0x00000002 0x00000009 0x00000003 0x00000003
+                                       0x00000002 0x00000002 0x00000002 0x00000005
+                                       0x00000003 0x00000008 0x0000000b 0x0000009f
+                                       0x00000000 0x00000003 0x00000003 0x00000003
+                                       0x00000008 0x00000001 0x0000000a 0x00000007
+                                       0x00000003 0x00000008 0x00000004 0x00000006
+                                       0x00000002 0x000000d0 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000282 0xa0ae04ae
+                                       0x00070000 0x00000000 0x00000000 0x00000005
+                                       0x00000000 0x00000000 0x00000000 0x00000000>;
+                       };
+
+                       emc-table@75000 {
+                               reg = <75000>;
+                               compatible = "nvidia,tegra20-emc-table";
+                               clock-frequency = <75000>;
+                               nvidia,emc-registers = <0x00000005 0x0000000a
+                                       0x00000004 0x00000003 0x00000006 0x00000004
+                                       0x00000002 0x00000009 0x00000003 0x00000003
+                                       0x00000002 0x00000002 0x00000002 0x00000005
+                                       0x00000003 0x00000008 0x0000000b 0x000000ff
+                                       0x00000000 0x00000003 0x00000003 0x00000003
+                                       0x00000008 0x00000001 0x0000000a 0x0000000b
+                                       0x00000003 0x00000008 0x00000004 0x00000006
+                                       0x00000002 0x00000138 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000282 0xa0ae04ae
+                                       0x00070000 0x00000000 0x00000000 0x00000007
+                                       0x00000000 0x00000000 0x00000000 0x00000000>;
+                       };
+
+                       emc-table@150000 {
+                               reg = <150000>;
+                               compatible = "nvidia,tegra20-emc-table";
+                               clock-frequency = <150000>;
+                               nvidia,emc-registers = <0x00000009 0x00000014
+                                       0x00000007 0x00000003 0x00000006 0x00000004
+                                       0x00000002 0x00000009 0x00000003 0x00000003
+                                       0x00000002 0x00000002 0x00000002 0x00000005
+                                       0x00000003 0x00000008 0x0000000b 0x0000021f
+                                       0x00000000 0x00000003 0x00000003 0x00000003
+                                       0x00000008 0x00000001 0x0000000a 0x00000015
+                                       0x00000003 0x00000008 0x00000004 0x00000006
+                                       0x00000002 0x00000270 0x00000000 0x00000001
+                                       0x00000000 0x00000000 0x00000282 0xa07c04ae
+                                       0x007dc010 0x00000000 0x00000000 0x0000000e
+                                       0x00000000 0x00000000 0x00000000 0x00000000>;
+                       };
+
+                       emc-table@300000 {
+                               reg = <300000>;
+                               compatible = "nvidia,tegra20-emc-table";
+                               clock-frequency = <300000>;
+                               nvidia,emc-registers = <0x00000012 0x00000027
+                                       0x0000000d 0x00000006 0x00000007 0x00000005
+                                       0x00000003 0x00000009 0x00000006 0x00000006
+                                       0x00000003 0x00000003 0x00000002 0x00000006
+                                       0x00000003 0x00000009 0x0000000c 0x0000045f
+                                       0x00000000 0x00000004 0x00000004 0x00000006
+                                       0x00000008 0x00000001 0x0000000e 0x0000002a
+                                       0x00000003 0x0000000f 0x00000007 0x00000005
+                                       0x00000002 0x000004e0 0x00000005 0x00000002
+                                       0x00000000 0x00000000 0x00000282 0xe059048b
+                                       0x007e0010 0x00000000 0x00000000 0x0000001b
+                                       0x00000000 0x00000000 0x00000000 0x00000000>;
+                       };
+               };
+       };
+
+       /* Peripheral USB via ASUS connector */
+       usb@c5000000 {
+               compatible = "nvidia,tegra20-udc";
+               status = "okay";
+               dr_mode = "peripheral";
+       };
+
+       usb-phy@c5000000 {
+               status = "okay";
+               dr_mode = "peripheral";
+               nvidia,xcvr-setup-use-fuses;
+               nvidia,xcvr-lsfslew = <2>;
+               nvidia,xcvr-lsrslew = <2>;
+               vbus-supply = <&vdd_5v0_sys>;
+       };
+
+       /* Dock's USB port */
+       usb@c5008000 {
+               status = "okay";
+       };
+
+       usb-phy@c5008000 {
+               status = "okay";
+               nvidia,xcvr-setup-use-fuses;
+               vbus-supply = <&vdd_5v0_sys>;
+       };
+
+       sdmmc1: mmc@c8000000 {
+               status = "okay";
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               assigned-clocks = <&tegra_car TEGRA20_CLK_SDMMC1>;
+               assigned-clock-parents = <&tegra_car TEGRA20_CLK_PLL_C>;
+               assigned-clock-rates = <40000000>;
+
+               max-frequency = <40000000>;
+               keep-power-in-suspend;
+               bus-width = <4>;
+               non-removable;
+
+               mmc-pwrseq = <&brcm_wifi_pwrseq>;
+               vmmc-supply = <&vdd_3v3_sys>;
+               vqmmc-supply = <&vdd_3v3_sys>;
+
+               /* Azurewave AW-NH615 BCM4329B1 */
+               wifi@1 {
+                       compatible = "brcm,bcm4329-fmac";
+                       reg = <1>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(S, 0) IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "host-wake";
+               };
+       };
+
+       sdmmc3: mmc@c8000400 {
+               status = "okay";
+               bus-width = <4>;
+               cd-gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>;
+               wp-gpios = <&gpio TEGRA_GPIO(H, 1) GPIO_ACTIVE_HIGH>;
+               power-gpios = <&gpio TEGRA_GPIO(I, 6) GPIO_ACTIVE_HIGH>;
+               vmmc-supply = <&vdd_3v3_sys>;
+               vqmmc-supply = <&vdd_3v3_sys>;
+       };
+
+       sdmmc4: mmc@c8000600 {
+               status = "okay";
+               bus-width = <8>;
+               vmmc-supply = <&vcore_emmc>;
+               vqmmc-supply = <&vdd_3v3_sys>;
+               non-removable;
+       };
+
+       mains: ac-adapter-detect {
+               compatible = "gpio-charger";
+               charger-type = "mains";
+               gpios = <&gpio TEGRA_GPIO(V, 3) GPIO_ACTIVE_LOW>;
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+
+               enable-gpios = <&gpio TEGRA_GPIO(D, 4) GPIO_ACTIVE_HIGH>;
+               power-supply = <&vdd_3v3_sys>;
+               pwms = <&pwm 2 4000000>;
+
+               brightness-levels = <7 255>;
+               num-interpolated-steps = <248>;
+               default-brightness-level = <20>;
+       };
+
+       /* PMIC has a built-in 32KHz oscillator which is used by PMC */
+       clk32k_in: clock-32k-in {
+               compatible = "fixed-clock";
+               clock-frequency = <32768>;
+               #clock-cells = <0>;
+       };
+
+       cpus {
+               cpu0: cpu@0 {
+                       cpu-supply = <&vdd_cpu>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       #cooling-cells = <2>;
+               };
+
+               cpu1: cpu@1 {
+                       cpu-supply = <&vdd_cpu>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       #cooling-cells = <2>;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               dock-hall-sensor {
+                       label = "Lid";
+                       gpios = <&gpio TEGRA_GPIO(S, 4) GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_SW>;
+                       linux,code = <SW_LID>;
+                       debounce-interval = <500>;
+                       wakeup-event-action = <EV_ACT_ASSERTED>;
+                       wakeup-source;
+               };
+
+               power {
+                       label = "Power";
+                       gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_POWER>;
+                       debounce-interval = <10>;
+                       wakeup-event-action = <EV_ACT_ASSERTED>;
+                       wakeup-source;
+               };
+
+               volume-up {
+                       label = "Volume Up";
+                       gpios = <&gpio TEGRA_GPIO(Q, 5) GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEUP>;
+                       debounce-interval = <10>;
+                       wakeup-event-action = <EV_ACT_ASSERTED>;
+                       wakeup-source;
+               };
+
+               volume-down {
+                       label = "Volume Down";
+                       gpios = <&gpio TEGRA_GPIO(Q, 4) GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       debounce-interval = <10>;
+                       wakeup-event-action = <EV_ACT_ASSERTED>;
+                       wakeup-source;
+               };
+       };
+
+       display-panel {
+               compatible = "panel-lvds";
+
+               /* AUO B101EW05 using custom timings */
+
+               backlight = <&backlight>;
+               ddc-i2c-bus = <&lvds_ddc>;
+               power-supply = <&vdd_pnl_reg>;
+
+               width-mm = <218>;
+               height-mm = <135>;
+
+               data-mapping = "jeida-18";
+
+               panel-timing {
+                       clock-frequency = <71200000>;
+                       hactive = <1280>;
+                       vactive = <800>;
+                       hfront-porch = <8>;
+                       hback-porch = <18>;
+                       hsync-len = <184>;
+                       vsync-len = <3>;
+                       vfront-porch = <4>;
+                       vback-porch = <8>;
+               };
+
+               port {
+                       panel_input: endpoint {
+                               remote-endpoint = <&lvds_encoder_output>;
+                       };
+               };
+       };
+
+       i2cmux {
+               compatible = "i2c-mux-pinctrl";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               i2c-parent = <&i2c2>;
+
+               pinctrl-names = "ddc", "pta", "idle";
+               pinctrl-0 = <&state_i2cmux_ddc>;
+               pinctrl-1 = <&state_i2cmux_pta>;
+               pinctrl-2 = <&state_i2cmux_idle>;
+
+               hdmi_ddc: i2c@0 {
+                       reg = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               lvds_ddc: i2c@1 {
+                       reg = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       smart-battery@b {
+                               compatible = "ti,bq20z75", "sbs,sbs-battery";
+                               reg = <0xb>;
+                               sbs,i2c-retry-count = <2>;
+                               sbs,poll-retry-count = <10>;
+                               power-supplies = <&mains>;
+                       };
+               };
+       };
+
+       lvds-encoder {
+               compatible = "ti,sn75lvds83", "lvds-encoder";
+
+               powerdown-gpios = <&gpio TEGRA_GPIO(B, 2) GPIO_ACTIVE_LOW>;
+               power-supply = <&vdd_3v3_sys>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               lvds_encoder_input: endpoint {
+                                       remote-endpoint = <&lcd_output>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               lvds_encoder_output: endpoint {
+                                       remote-endpoint = <&panel_input>;
+                               };
+                       };
+               };
+       };
+
+       vdd_5v0_sys: regulator-5v0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_5v0";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+
+       vdd_3v3_sys: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_3v3_vs";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               vin-supply = <&vdd_5v0_sys>;
+       };
+
+       regulator-pcie {
+               compatible = "regulator-fixed";
+               regulator-name = "pcie_vdd";
+               regulator-min-microvolt = <1500000>;
+               regulator-max-microvolt = <1500000>;
+               gpio = <&pmic 0 GPIO_ACTIVE_HIGH>;
+               regulator-always-on;
+       };
+
+       vdd_pnl_reg: regulator-panel {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_pnl";
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               gpio = <&gpio TEGRA_GPIO(C, 6) GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       vdd_1v8_sys: regulator-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_1v8_vs";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+               vin-supply = <&vdd_5v0_sys>;
+       };
+
+       vdd_hdmi_en: regulator-hdmi {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_5v0_hdmi_en";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               vin-supply = <&vdd_5v0_sys>;
+               gpio = <&gpio TEGRA_GPIO(V, 5) GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       sound {
+               compatible = "asus,tegra-audio-wm8903-tf101",
+                            "nvidia,tegra-audio-wm8903";
+               nvidia,model = "Asus EeePad Transformer WM8903";
+
+               nvidia,audio-routing =
+                       "Headphone Jack", "HPOUTR",
+                       "Headphone Jack", "HPOUTL",
+                       "Int Spk", "ROP",
+                       "Int Spk", "RON",
+                       "Int Spk", "LOP",
+                       "Int Spk", "LON",
+                       "Mic Jack", "MICBIAS",
+                       "IN1L", "Mic Jack";
+
+               nvidia,i2s-controller = <&tegra_i2s1>;
+               nvidia,audio-codec = <&wm8903>;
+
+               nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>;
+               nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>;
+               nvidia,headset;
+
+               clocks = <&tegra_car TEGRA20_CLK_PLL_A>,
+                        <&tegra_car TEGRA20_CLK_PLL_A_OUT0>,
+                        <&tegra_car TEGRA20_CLK_CDEV1>;
+               clock-names = "pll_a", "pll_a_out0", "mclk";
+       };
+
+       thermal-zones {
+               /*
+                * NCT1008 has two sensors:
+                *
+                *      0: internal that monitors ambient/skin temperature
+                *      1: external that is connected to the CPU's diode
+                *
+                * Ideally we should use userspace thermal governor,
+                * but it's a much more complex solution.  The "skin"
+                * zone is a simpler solution which prevents TF101 from
+                * getting too hot from a user's tactile perspective.
+                * The CPU zone is intended to protect silicon from damage.
+                */
+
+               skin-thermal {
+                       polling-delay-passive = <1000>; /* milliseconds */
+                       polling-delay = <5000>; /* milliseconds */
+
+                       thermal-sensors = <&nct1008 0>;
+
+                       trips {
+                               trip0: skin-alert {
+                                       /* start throttling at 60C */
+                                       temperature = <60000>;
+                                       hysteresis = <200>;
+                                       type = "passive";
+                               };
+
+                               trip1: skin-crit {
+                                       /* shut down at 70C */
+                                       temperature = <70000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&trip0>;
+                                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+
+               cpu-thermal {
+                       polling-delay-passive = <1000>; /* milliseconds */
+                       polling-delay = <5000>; /* milliseconds */
+
+                       thermal-sensors = <&nct1008 1>;
+
+                       trips {
+                               trip2: cpu-alert {
+                                       /* throttle at 85C until temperature drops to 84.8C */
+                                       temperature = <85000>;
+                                       hysteresis = <200>;
+                                       type = "passive";
+                               };
+
+                               trip3: cpu-crit {
+                                       /* shut down at 90C */
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map1 {
+                                       trip = <&trip2>;
+                                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+       };
+
+       brcm_wifi_pwrseq: wifi-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+
+               clocks = <&tegra_pmc TEGRA_PMC_CLK_BLINK>;
+               clock-names = "ext_clock";
+
+               reset-gpios = <&gpio TEGRA_GPIO(K, 6) GPIO_ACTIVE_LOW>;
+               post-power-on-delay-ms = <200>;
+               power-off-delay-us = <200>;
+       };
+};
+
+&emc_icc_dvfs_opp_table {
+       /delete-node/ opp-666000000;
+       /delete-node/ opp-760000000;
+};
index 9508248..6f493a8 100644 (file)
                status = "disabled";
        };
 
-       i2c@7000c400 {
+       i2c2: i2c@7000c400 {
                compatible = "nvidia,tegra20-i2c";
                reg = <0x7000c400 0x100>;
                interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;