From nobody Tue Sep 9 21:32:26 2025 Received: from mail-lf1-f50.google.com (mail-lf1-f50.google.com [209.85.167.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7AD702C2346; Sat, 6 Sep 2025 06:29:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757140202; cv=none; b=fMZA3E8nXVGqaftyK3zuFwsXy0k+Gji+Dc+9PjWtKOes6kGpWG/DDGIVmkklnqCKNfzIKYTX9XqVKOknRqaDiVAKN6cRZxf0wZIFT7aclRT7Y1sWvBq51XVBB072IN6dEnp1zrNy3yTaiiZtOf/+N+Fr2gt2WpMwMlgv1Qpi17s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757140202; c=relaxed/simple; bh=IbEDXx6TcOiBjLLRVqeOgKt+7cMnTmo58VJw1+HuJSw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RKkLfcioplV+TIQPpqRQAAGc94V/VkSXy4d253Iak+Yao/j1v9SqUOnDiHBcVdQLmdkdakGCcW5BUAT0+M+1dNAD1YD/CEtWm9NKJW7ZcpvjScxm77jnPFwcbj3RvJD32KS0F5UL2uWmlEFrpouEupeCvjSeNgMFNhu979oYADM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ish5R9Ew; arc=none smtp.client-ip=209.85.167.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ish5R9Ew" Received: by mail-lf1-f50.google.com with SMTP id 2adb3069b0e04-55f6f7edf45so2918788e87.2; Fri, 05 Sep 2025 23:29:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757140196; x=1757744996; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SpkqLCTHuDiXR8yNf6u1uqAjNgUO9/Dm7yaYdRHBCic=; b=ish5R9EwG4yumbDZ6A6RAtEAerjRLvK1YzfUqqtxqrj+Q/S/bzt+D1vkjlEKZ0tPoI TaNuvX5P6BC6OUbchBNeKWy6b+WOlg5br+/WAk1CeWgHidYWzZFx7pmpcPKlVz5nPYvp kkScO3TWrgMi+u653o5KlWXaeKukXf0W4MfF6FPF1aozP68y72FayuvEeTy8bdmiUD99 q4wYrj37RsT5MKgffozMZ9Hi8mol/znucs4pyp8sy4WRprUN65rj3C6nQXwWaHXfNtr0 jet3n1KCqI/gEmp9MkWFMhl4TEaF9ZmkslnVTBRyDFuBtEjVti/LWe6temtcQy0mECeD viAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757140196; x=1757744996; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SpkqLCTHuDiXR8yNf6u1uqAjNgUO9/Dm7yaYdRHBCic=; b=bEApqZVnyIT7AnjciA7v0pF3sCELMs/d4y+3OxxfY7DLtWIuPKZnBdr/auFRct3U8t wNTDpvTY+/FLRI0ZxVnuNAtqEDsz+93FnDDw1s/buWCtXiAviLr5DJ68sB+xKbhhbJM0 JV3MO7wCWQLJ5aKn0gG/3cmGzHVz6cxjKfesVdnUMQG1s6UQ10upQhZCbBaZ6y1qI5Y+ rSdkVLTUBB/oCKpB4uTZ2Czdju0BYYP5/gjRVBgfOVr+7nyBA+qyd0mUKgT5j6NiskM1 R0BwGRG2feosV1qVeT14c5+5csHjAsV1SyXKWZUJE6yOAbampTnJaFxNPla0ElyIav31 OxkQ== X-Forwarded-Encrypted: i=1; AJvYcCWLtH5AVU6O3TbdUAvQ4irg8dyvq8wc8BYYtud/s+LtkIu7Y2WnovpYYFUunkX3BVffJD0A0lS0VrZSVvc=@vger.kernel.org, AJvYcCX00hjtzIToBYsD8tUncZTIfxRLzWdPPx7mS71SrhI2X/It2XANdIlaO/l64z204hPUibW8l78dW0mLDjc=@vger.kernel.org X-Gm-Message-State: AOJu0YyAJuS4xWrQ+nAk3imhbQRou1cAGJxmzKtwCXKmRT8gkj7CWQ84 IGeax9/l6ZAy/Z9ulL2cAT5IwjPgo4i6q+D/9P4jf1dnRAutqhe/Q8FR X-Gm-Gg: ASbGnct4W3+rsELbWyvdAM0uIRAO4ctycxdnCKPP8osMb0R63JJjONM9wb0Mmc1Q0NB 1p4rVIHnTH31eWvTOXWssfRVZf2WSuOxHuaZUtpXeQLR1PW/+VnzhiAwn/qDGdda8o7AGjBOf2K THGEc8WRuo+rTPfVcP7Nm82izGJPYBpMQbkvU/1QzuQ7p8kMkrmbeEXqNotqdSgT1sAWrVyS3If l8PKQOd57xJR6bdluFjLIRt7/ubSDRGl2l3Y5CgSEeg8lT+LhTLtF5G1EZlL8DmNASxO+DzVjjL 9CJqKMUQhxw7kU8CzecbEYOQgHornTa/UgJ9/hSjtTdJJQi6zyUoeE7r6QQgoDr51FN/e9nGGa1 RoHvb3r6VGY6I5DMsl1Jn8Zmf X-Google-Smtp-Source: AGHT+IHaVtQ46hPuPHKpXuSY/aSAyVyIBboALGQyrEFqitisnWvaB2YOK3THVql0G+xtOJTodSvlcQ== X-Received: by 2002:a05:6512:3b0e:b0:55f:596f:2ec0 with SMTP id 2adb3069b0e04-562603a2278mr417971e87.5.1757140195549; Fri, 05 Sep 2025 23:29:55 -0700 (PDT) Received: from xeon.. ([188.163.112.70]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5608abb7c74sm2178737e87.54.2025.09.05.23.29.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Sep 2025 23:29:55 -0700 (PDT) From: Svyatoslav Ryhel To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Thierry Reding , Thierry Reding , Jonathan Hunter , Svyatoslav Ryhel , Maxim Schwalm , Ion Agorria Cc: devicetree@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 4/4] ARM: tegra: add support for ASUS Eee Pad Slider SL101 Date: Sat, 6 Sep 2025 09:29:34 +0300 Message-ID: <20250906062934.6637-5-clamor95@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250906062934.6637-1-clamor95@gmail.com> References: <20250906062934.6637-1-clamor95@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Factor out common part from ASUS Eee Pad Transformer TF101 device tree into tegra20-asus-transformer-common.dtsi and add device tree fragment for ASUS Eee Pad Slider SL101. Tested-by: Winona Schroeer-Smith # ASUS SL101 Tested-by: Antoni Aloy Torrens # ASUS TF101 Signed-off-by: Svyatoslav Ryhel --- arch/arm/boot/dts/nvidia/Makefile | 1 + .../boot/dts/nvidia/tegra20-asus-sl101.dts | 61 + .../boot/dts/nvidia/tegra20-asus-tf101.dts | 1254 +--------------- .../tegra20-asus-transformer-common.dtsi | 1268 +++++++++++++++++ 4 files changed, 1333 insertions(+), 1251 deletions(-) create mode 100644 arch/arm/boot/dts/nvidia/tegra20-asus-sl101.dts create mode 100644 arch/arm/boot/dts/nvidia/tegra20-asus-transformer-commo= n.dtsi diff --git a/arch/arm/boot/dts/nvidia/Makefile b/arch/arm/boot/dts/nvidia/M= akefile index ff2c5bfd8efa..bfb62ab2ee2a 100644 --- a/arch/arm/boot/dts/nvidia/Makefile +++ b/arch/arm/boot/dts/nvidia/Makefile @@ -14,6 +14,7 @@ dtb-$(CONFIG_ARCH_TEGRA_124_SOC) +=3D \ tegra124-venice2.dtb dtb-$(CONFIG_ARCH_TEGRA_2x_SOC) +=3D \ tegra20-acer-a500-picasso.dtb \ + tegra20-asus-sl101.dtb \ tegra20-asus-tf101.dtb \ tegra20-harmony.dtb \ tegra20-colibri-eval-v3.dtb \ diff --git a/arch/arm/boot/dts/nvidia/tegra20-asus-sl101.dts b/arch/arm/boo= t/dts/nvidia/tegra20-asus-sl101.dts new file mode 100644 index 000000000000..8828129d1fa3 --- /dev/null +++ b/arch/arm/boot/dts/nvidia/tegra20-asus-sl101.dts @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; + +#include "tegra20-asus-transformer-common.dtsi" + +/ { + model =3D "ASUS Eee Pad Slider SL101"; + compatible =3D "asus,sl101", "nvidia,tegra20"; + + i2c@7000c000 { + magnetometer@e { + mount-matrix =3D "1", "0", "0", + "0", "-1", "0", + "0", "0", "1"; + }; + + /* Atmel MXT1386 Touchscreen */ + touchscreen@5a { + compatible =3D "atmel,maxtouch"; + reg =3D <0x5a>; + + interrupt-parent =3D <&gpio>; + interrupts =3D ; + + reset-gpios =3D <&gpio TEGRA_GPIO(Q, 7) GPIO_ACTIVE_LOW>; + + vdda-supply =3D <&vdd_3v3_sys>; + vdd-supply =3D <&vdd_3v3_sys>; + + atmel,wakeup-method =3D ; + }; + + gyroscope@68 { + mount-matrix =3D "0", "1", "0", + "-1", "0", "0", + "0", "0", "1"; + + i2c-gate { + accelerometer@f { + mount-matrix =3D "1", "0", "0", + "0", "-1", "0", + "0", "0", "1"; + }; + }; + }; + }; + + extcon-keys { + compatible =3D "gpio-keys"; + + switch-tablet-mode { + label =3D "Tablet Mode"; + gpios =3D <&gpio TEGRA_GPIO(S, 4) GPIO_ACTIVE_LOW>; + linux,input-type =3D ; + linux,code =3D ; + debounce-interval =3D <500>; + wakeup-event-action =3D ; + wakeup-source; + }; + }; +}; diff --git a/arch/arm/boot/dts/nvidia/tegra20-asus-tf101.dts b/arch/arm/boo= t/dts/nvidia/tegra20-asus-tf101.dts index efd8838f9644..0d93820a5ad4 100644 --- a/arch/arm/boot/dts/nvidia/tegra20-asus-tf101.dts +++ b/arch/arm/boot/dts/nvidia/tegra20-asus-tf101.dts @@ -1,545 +1,19 @@ // SPDX-License-Identifier: GPL-2.0 /dts-v1/; =20 -#include -#include -#include -#include - -#include "tegra20.dtsi" -#include "tegra20-cpu-opp.dtsi" -#include "tegra20-cpu-opp-microvolt.dtsi" +#include "tegra20-asus-transformer-common.dtsi" =20 / { - model =3D "ASUS EeePad Transformer TF101"; + model =3D "ASUS Eee Pad Transformer TF101"; compatible =3D "asus,tf101", "nvidia,tegra20"; - chassis-type =3D "convertible"; - - aliases { - mmc0 =3D &sdmmc4; /* eMMC */ - mmc1 =3D &sdmmc3; /* MicroSD */ - mmc2 =3D &sdmmc1; /* WiFi */ - - rtc0 =3D &pmic; - rtc1 =3D "/rtc@7000e000"; - - serial0 =3D &uartd; - serial1 =3D &uartc; /* Bluetooth */ - serial2 =3D &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 =3D <0x00000000 0x40000000>; - }; - - reserved-memory { - #address-cells =3D <1>; - #size-cells =3D <1>; - ranges; - - ramoops@2ffe0000 { - compatible =3D "ramoops"; - reg =3D <0x2ffe0000 0x10000>; /* 64kB */ - console-size =3D <0x8000>; /* 32kB */ - record-size =3D <0x400>; /* 1kB */ - ecc-size =3D <16>; - }; - - linux,cma@30000000 { - compatible =3D "shared-dma-pool"; - alloc-ranges =3D <0x30000000 0x10000000>; - size =3D <0x10000000>; /* 256MiB */ - linux,cma-default; - reusable; - }; - }; - - host1x@50000000 { - dc@54200000 { - rgb { - status =3D "okay"; - - port { - lcd_output: endpoint { - remote-endpoint =3D <&lvds_encoder_input>; - bus-width =3D <18>; - }; - }; - }; - }; - - hdmi@54280000 { - status =3D "okay"; - - vdd-supply =3D <&hdmi_vdd_reg>; - pll-supply =3D <&hdmi_pll_reg>; - hdmi-supply =3D <&vdd_hdmi_en>; - - nvidia,ddc-i2c-bus =3D <&hdmi_ddc>; - nvidia,hpd-gpio =3D <&gpio TEGRA_GPIO(N, 7) - GPIO_ACTIVE_HIGH>; - }; - }; - - gpio@6000d000 { - charging-enable-hog { - gpio-hog; - gpios =3D ; - output-low; - }; - }; - - pinmux@70000014 { - pinctrl-names =3D "default"; - pinctrl-0 =3D <&state_default>; - - state_default: pinmux { - ata { - nvidia,pins =3D "ata"; - nvidia,function =3D "ide"; - }; - - atb { - nvidia,pins =3D "atb", "gma", "gme"; - nvidia,function =3D "sdio4"; - }; - - atc { - nvidia,pins =3D "atc"; - nvidia,function =3D "nand"; - }; - - atd { - nvidia,pins =3D "atd", "ate", "gmb", "spia", - "spib", "spic"; - nvidia,function =3D "gmi"; - }; - - cdev1 { - nvidia,pins =3D "cdev1"; - nvidia,function =3D "plla_out"; - }; - - cdev2 { - nvidia,pins =3D "cdev2"; - nvidia,function =3D "pllp_out4"; - }; - - crtp { - nvidia,pins =3D "crtp"; - nvidia,function =3D "crt"; - }; - - lm1 { - nvidia,pins =3D "lm1"; - nvidia,function =3D "rsvd3"; - }; - - csus { - nvidia,pins =3D "csus"; - nvidia,function =3D "vi_sensor_clk"; - }; - - dap1 { - nvidia,pins =3D "dap1"; - nvidia,function =3D "dap1"; - }; - - dap2 { - nvidia,pins =3D "dap2"; - nvidia,function =3D "dap2"; - }; - - dap3 { - nvidia,pins =3D "dap3"; - nvidia,function =3D "dap3"; - }; - - dap4 { - nvidia,pins =3D "dap4"; - nvidia,function =3D "dap4"; - }; - - dta { - nvidia,pins =3D "dta", "dtb", "dtc", "dtd", "dte"; - nvidia,function =3D "vi"; - }; - - dtf { - nvidia,pins =3D "dtf"; - nvidia,function =3D "i2c3"; - }; - - gmc { - nvidia,pins =3D "gmc"; - nvidia,function =3D "uartd"; - }; - - gmd { - nvidia,pins =3D "gmd"; - nvidia,function =3D "sflash"; - }; - - gpu { - nvidia,pins =3D "gpu"; - nvidia,function =3D "pwm"; - }; - - gpu7 { - nvidia,pins =3D "gpu7"; - nvidia,function =3D "rtck"; - }; - - gpv { - nvidia,pins =3D "gpv", "slxa"; - nvidia,function =3D "pcie"; - }; - - hdint { - nvidia,pins =3D "hdint"; - nvidia,function =3D "hdmi"; - }; - - i2cp { - nvidia,pins =3D "i2cp"; - nvidia,function =3D "i2cp"; - }; - - irrx { - nvidia,pins =3D "irrx", "irtx"; - nvidia,function =3D "uartb"; - }; - - kbca { - nvidia,pins =3D "kbca", "kbcb", "kbcc", "kbcd", - "kbce", "kbcf"; - nvidia,function =3D "kbc"; - }; - - lcsn { - nvidia,pins =3D "lcsn", "ldc", "lm0", "lpw1", - "lsdi", "lvp0"; - nvidia,function =3D "rsvd4"; - }; - - ld0 { - nvidia,pins =3D "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 =3D "displaya"; - }; - - owc { - nvidia,pins =3D "owc", "spdi", "spdo", "uac"; - nvidia,function =3D "rsvd2"; - }; - - pmc { - nvidia,pins =3D "pmc"; - nvidia,function =3D "pwr_on"; - }; - - rm { - nvidia,pins =3D "rm"; - nvidia,function =3D "i2c1"; - }; - - sdb { - nvidia,pins =3D "sdb", "sdc", "sdd", "slxc", "slxk"; - nvidia,function =3D "sdio3"; - }; - - sdio1 { - nvidia,pins =3D "sdio1"; - nvidia,function =3D "sdio1"; - }; - - slxd { - nvidia,pins =3D "slxd"; - nvidia,function =3D "spdif"; - }; - - spid { - nvidia,pins =3D "spid", "spie", "spif"; - nvidia,function =3D "spi1"; - }; - - spig { - nvidia,pins =3D "spig", "spih"; - nvidia,function =3D "spi2_alt"; - }; - - uaa { - nvidia,pins =3D "uaa", "uab", "uda"; - nvidia,function =3D "ulpi"; - }; - - uad { - nvidia,pins =3D "uad"; - nvidia,function =3D "irda"; - }; - - uca { - nvidia,pins =3D "uca", "ucb"; - nvidia,function =3D "uartc"; - }; - - conf_ata { - nvidia,pins =3D "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 =3D ; - nvidia,tristate =3D ; - }; - - conf_ate { - nvidia,pins =3D "ate", "dap2", "dap3", "gmb", "gmd", - "owc", "spia", "spib", "spic", - "spid", "spie", "spig", "slxa"; - nvidia,pull =3D ; - nvidia,tristate =3D ; - }; - - conf_ck32 { - nvidia,pins =3D "ck32", "ddrc", "pmca", "pmcb", - "pmcc", "pmcd", "pmce", "xm2c", "xm2d"; - nvidia,pull =3D ; - }; - - conf_crtp { - nvidia,pins =3D "crtp", "spih"; - nvidia,pull =3D ; - nvidia,tristate =3D ; - }; - - conf_dta { - nvidia,pins =3D "dta", "dtb", "dtc", "dtd"; - nvidia,pull =3D ; - nvidia,tristate =3D ; - }; - - conf_spif { - nvidia,pins =3D "spif"; - nvidia,pull =3D ; - nvidia,tristate =3D ; - }; - - conf_hdint { - nvidia,pins =3D "hdint", "lcsn", "ldc", "lm1", - "lpw1", "lsck", "lsda", "lsdi", "lvp0"; - nvidia,tristate =3D ; - }; - - conf_kbca { - nvidia,pins =3D "kbca", "kbcb", "kbcc", "kbcd", - "kbce", "kbcf", "sdio1", "uaa", "uab", - "uca", "ucb"; - nvidia,pull =3D ; - nvidia,tristate =3D ; - }; - - conf_lc { - nvidia,pins =3D "lc", "ls"; - nvidia,pull =3D ; - }; - - conf_ld0 { - nvidia,pins =3D "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 =3D ; - }; - - conf_ld17_0 { - nvidia,pins =3D "ld17_0", "ld19_18", "ld21_20", - "ld23_22"; - nvidia,pull =3D ; - }; - - drive_sdio1 { - nvidia,pins =3D "drive_sdio1", "drive_ddc", "drive_vi1"; - nvidia,high-speed-mode =3D ; - nvidia,schmitt =3D ; - nvidia,low-power-mode =3D ; - nvidia,pull-down-strength =3D <31>; - nvidia,pull-up-strength =3D <31>; - nvidia,slew-rate-rising =3D ; - nvidia,slew-rate-falling =3D ; - }; - - drive_csus { - nvidia,pins =3D "drive_csus"; - nvidia,high-speed-mode =3D ; - nvidia,schmitt =3D ; - nvidia,low-power-mode =3D ; - nvidia,pull-down-strength =3D <31>; - nvidia,pull-up-strength =3D <31>; - nvidia,slew-rate-rising =3D ; - nvidia,slew-rate-falling =3D ; - }; - }; - - state_i2cmux_ddc: pinmux-i2cmux-ddc { - ddc { - nvidia,pins =3D "ddc"; - nvidia,function =3D "i2c2"; - }; - - pta { - nvidia,pins =3D "pta"; - nvidia,function =3D "rsvd4"; - }; - }; - - state_i2cmux_idle: pinmux-i2cmux-idle { - ddc { - nvidia,pins =3D "ddc"; - nvidia,function =3D "rsvd4"; - }; - - pta { - nvidia,pins =3D "pta"; - nvidia,function =3D "rsvd4"; - }; - }; - - state_i2cmux_pta: pinmux-i2cmux-pta { - ddc { - nvidia,pins =3D "ddc"; - nvidia,function =3D "rsvd4"; - }; - - pta { - nvidia,pins =3D "pta"; - nvidia,function =3D "i2c2"; - }; - }; - }; - - spdif@70002400 { - status =3D "okay"; - - nvidia,fixed-parent-rate; - }; - - i2s@70002800 { - status =3D "okay"; - - nvidia,fixed-parent-rate; - }; - - serial@70006040 { - compatible =3D "nvidia,tegra20-hsuart"; - reset-names =3D "serial"; - /delete-property/ reg-shift; - /* GPS BCM4751 */ - }; - - serial@70006200 { - compatible =3D "nvidia,tegra20-hsuart"; - reset-names =3D "serial"; - /delete-property/ reg-shift; - status =3D "okay"; - - /* Azurewave AW-NH615 BCM4329B1 */ - bluetooth { - compatible =3D "brcm,bcm4329-bt"; - - interrupt-parent =3D <&gpio>; - interrupts =3D ; - interrupt-names =3D "host-wakeup"; - - /* PLLP 216MHz / 16 / 4 */ - max-speed =3D <3375000>; - - clocks =3D <&tegra_pmc TEGRA_PMC_CLK_BLINK>; - clock-names =3D "txco"; - - vbat-supply =3D <&vdd_3v3_sys>; - vddio-supply =3D <&vdd_1v8_sys>; - - device-wakeup-gpios =3D <&gpio TEGRA_GPIO(U, 1) GPIO_ACTIVE_HIGH>; - shutdown-gpios =3D <&gpio TEGRA_GPIO(U, 0) GPIO_ACTIVE_HIGH>; - }; - }; - - serial@70006300 { - /delete-property/ dmas; - /delete-property/ dma-names; - status =3D "okay"; - }; - - pwm@7000a000 { - status =3D "okay"; - }; =20 i2c@7000c000 { - status =3D "okay"; - clock-frequency =3D <400000>; - - /* Aichi AMI306 digital compass */ magnetometer@e { - compatible =3D "asahi-kasei,ak8974"; - reg =3D <0xe>; - - interrupt-parent =3D <&gpio>; - interrupts =3D ; - - avdd-supply =3D <&vdd_3v3_sys>; - dvdd-supply =3D <&vdd_1v8_sys>; - mount-matrix =3D "-1", "0", "0", "0", "1", "0", "0", "0", "-1"; }; =20 - wm8903: audio-codec@1a { - compatible =3D "wlf,wm8903"; - reg =3D <0x1a>; - - interrupt-parent =3D <&gpio>; - interrupts =3D ; - - gpio-controller; - #gpio-cells =3D <2>; - - micdet-cfg =3D <0x83>; - micdet-delay =3D <100>; - - gpio-cfg =3D < - 0x00000600 /* DMIC_LR, output */ - 0x00000680 /* DMIC_DAT, input */ - 0x00000000 /* Speaker-enable GPIO, output, low */ - 0xffffffff /* don't touch */ - 0xffffffff /* don't touch */ - >; - - AVDD-supply =3D <&vdd_1v8_sys>; - CPVDD-supply =3D <&vdd_1v8_sys>; - DBVDD-supply =3D <&vdd_1v8_sys>; - DCVDD-supply =3D <&vdd_1v8_sys>; - }; - /* Atmel MXT1386 Touchscreen */ touchscreen@5b { compatible =3D "atmel,maxtouch"; @@ -557,33 +31,12 @@ touchscreen@5b { }; =20 gyroscope@68 { - compatible =3D "invensense,mpu3050"; - reg =3D <0x68>; - - interrupt-parent =3D <&gpio>; - interrupts =3D ; - - vdd-supply =3D <&vdd_3v3_sys>; - vlogic-supply =3D <&vdd_1v8_sys>; - mount-matrix =3D "0", "1", "0", "-1", "0", "0", "0", "0", "1"; =20 i2c-gate { - #address-cells =3D <1>; - #size-cells =3D <0>; - accelerometer@f { - compatible =3D "kionix,kxtf9"; - reg =3D <0xf>; - - interrupt-parent =3D <&gpio>; - interrupts =3D ; - - vdd-supply =3D <&vdd_1v8_sys>; - vddio-supply =3D <&vdd_1v8_sys>; - mount-matrix =3D "-1", "0", "0", "0", "-1", "0", "0", "0", "-1"; @@ -592,461 +45,9 @@ accelerometer@f { }; }; =20 - i2c2: i2c@7000c400 { - status =3D "okay"; - clock-frequency =3D <100000>; - }; - - i2c@7000c500 { - status =3D "okay"; - clock-frequency =3D <400000>; - }; - - i2c@7000d000 { - status =3D "okay"; - clock-frequency =3D <400000>; - - pmic: pmic@34 { - compatible =3D "ti,tps6586x"; - reg =3D <0x34>; - interrupts =3D ; - - ti,system-power-controller; - - #gpio-cells =3D <2>; - gpio-controller; - - sys-supply =3D <&vdd_5v0_sys>; - vin-sm0-supply =3D <&sys_reg>; - vin-sm1-supply =3D <&sys_reg>; - vin-sm2-supply =3D <&sys_reg>; - vinldo01-supply =3D <&sm2_reg>; - vinldo23-supply =3D <&sm2_reg>; - vinldo4-supply =3D <&sm2_reg>; - vinldo678-supply =3D <&sm2_reg>; - vinldo9-supply =3D <&sm2_reg>; - - regulators { - sys_reg: sys { - regulator-name =3D "vdd_sys"; - regulator-always-on; - }; - - vdd_core: sm0 { - regulator-name =3D "vdd_sm0,vdd_core"; - regulator-min-microvolt =3D <950000>; - regulator-max-microvolt =3D <1300000>; - regulator-coupled-with =3D <&rtc_vdd &vdd_cpu>; - regulator-coupled-max-spread =3D <170000 550000>; - regulator-always-on; - regulator-boot-on; - - nvidia,tegra-core-regulator; - }; - - vdd_cpu: sm1 { - regulator-name =3D "vdd_sm1,vdd_cpu"; - regulator-min-microvolt =3D <750000>; - regulator-max-microvolt =3D <1125000>; - regulator-coupled-with =3D <&vdd_core &rtc_vdd>; - regulator-coupled-max-spread =3D <550000 550000>; - regulator-always-on; - regulator-boot-on; - - nvidia,tegra-cpu-regulator; - }; - - sm2_reg: sm2 { - regulator-name =3D "vdd_sm2,vin_ldo*"; - regulator-min-microvolt =3D <3700000>; - regulator-max-microvolt =3D <3700000>; - regulator-always-on; - }; - - /* LDO0 is not connected to anything */ - - ldo1 { - regulator-name =3D "vdd_ldo1,avdd_pll*"; - regulator-min-microvolt =3D <1100000>; - regulator-max-microvolt =3D <1100000>; - regulator-always-on; - }; - - rtc_vdd: ldo2 { - regulator-name =3D "vdd_ldo2,vdd_rtc"; - regulator-min-microvolt =3D <950000>; - regulator-max-microvolt =3D <1300000>; - regulator-coupled-with =3D <&vdd_core &vdd_cpu>; - regulator-coupled-max-spread =3D <170000 550000>; - regulator-always-on; - regulator-boot-on; - - nvidia,tegra-rtc-regulator; - }; - - ldo3 { - regulator-name =3D "vdd_ldo3,avdd_usb*"; - regulator-min-microvolt =3D <3300000>; - regulator-max-microvolt =3D <3300000>; - regulator-always-on; - }; - - ldo4 { - regulator-name =3D "vdd_ldo4,avdd_osc,vddio_sys"; - regulator-min-microvolt =3D <1800000>; - regulator-max-microvolt =3D <1800000>; - regulator-always-on; - }; - - vcore_emmc: ldo5 { - regulator-name =3D "vdd_ldo5,vcore_mmc"; - regulator-min-microvolt =3D <2850000>; - regulator-max-microvolt =3D <2850000>; - regulator-always-on; - }; - - ldo6 { - regulator-name =3D "vdd_ldo6,avdd_vdac"; - regulator-min-microvolt =3D <1800000>; - regulator-max-microvolt =3D <1800000>; - }; - - hdmi_vdd_reg: ldo7 { - regulator-name =3D "vdd_ldo7,avdd_hdmi,vdd_fuse"; - regulator-min-microvolt =3D <3300000>; - regulator-max-microvolt =3D <3300000>; - }; - - hdmi_pll_reg: ldo8 { - regulator-name =3D "vdd_ldo8,avdd_hdmi_pll"; - regulator-min-microvolt =3D <1800000>; - regulator-max-microvolt =3D <1800000>; - }; - - ldo9 { - regulator-name =3D "vdd_ldo9,avdd_2v85,vdd_ddr_rx"; - regulator-min-microvolt =3D <2850000>; - regulator-max-microvolt =3D <2850000>; - regulator-always-on; - }; - - ldo_rtc { - regulator-name =3D "vdd_rtc_out,vdd_cell"; - regulator-min-microvolt =3D <3300000>; - regulator-max-microvolt =3D <3300000>; - regulator-always-on; - }; - }; - }; - - nct1008: temperature-sensor@4c { - compatible =3D "onnn,nct1008"; - reg =3D <0x4c>; - vcc-supply =3D <&vdd_3v3_sys>; - - interrupt-parent =3D <&gpio>; - interrupts =3D ; - - #thermal-sensor-cells =3D <1>; - }; - }; - - pmc@7000e400 { - nvidia,invert-interrupt; - nvidia,suspend-mode =3D <1>; - nvidia,cpu-pwr-good-time =3D <2000>; - nvidia,cpu-pwr-off-time =3D <100>; - nvidia,core-pwr-good-time =3D <3845 3845>; - nvidia,core-pwr-off-time =3D <458>; - nvidia,sys-clock-req-active-high; - core-supply =3D <&vdd_core>; - }; - - memory-controller@7000f400 { - nvidia,use-ram-code; - - emc-tables@3 { - reg =3D <0x3>; - - #address-cells =3D <1>; - #size-cells =3D <0>; - - emc-table@25000 { - reg =3D <25000>; - compatible =3D "nvidia,tegra20-emc-table"; - clock-frequency =3D <25000>; - nvidia,emc-registers =3D <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 =3D <50000>; - compatible =3D "nvidia,tegra20-emc-table"; - clock-frequency =3D <50000>; - nvidia,emc-registers =3D <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 =3D <75000>; - compatible =3D "nvidia,tegra20-emc-table"; - clock-frequency =3D <75000>; - nvidia,emc-registers =3D <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 =3D <150000>; - compatible =3D "nvidia,tegra20-emc-table"; - clock-frequency =3D <150000>; - nvidia,emc-registers =3D <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 =3D <300000>; - compatible =3D "nvidia,tegra20-emc-table"; - clock-frequency =3D <300000>; - nvidia,emc-registers =3D <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>; - }; - - lpddr2 { - compatible =3D "elpida,B8132B2PB-6D-F", "jedec,lpddr2-s4"; - revision-id =3D <1 0>; - density =3D <2048>; - io-width =3D <16>; - }; - }; - }; - - /* Peripheral USB via ASUS connector */ - usb@c5000000 { - compatible =3D "nvidia,tegra20-udc"; - status =3D "okay"; - dr_mode =3D "peripheral"; - }; - - usb-phy@c5000000 { - status =3D "okay"; - dr_mode =3D "peripheral"; - nvidia,xcvr-setup-use-fuses; - nvidia,xcvr-lsfslew =3D <2>; - nvidia,xcvr-lsrslew =3D <2>; - vbus-supply =3D <&vdd_5v0_sys>; - }; - - /* Dock's USB port */ - usb@c5008000 { - status =3D "okay"; - }; - - usb-phy@c5008000 { - status =3D "okay"; - nvidia,xcvr-setup-use-fuses; - vbus-supply =3D <&vdd_5v0_sys>; - }; - - sdmmc1: mmc@c8000000 { - status =3D "okay"; - - #address-cells =3D <1>; - #size-cells =3D <0>; - - assigned-clocks =3D <&tegra_car TEGRA20_CLK_SDMMC1>; - assigned-clock-parents =3D <&tegra_car TEGRA20_CLK_PLL_C>; - assigned-clock-rates =3D <40000000>; - - max-frequency =3D <40000000>; - keep-power-in-suspend; - bus-width =3D <4>; - non-removable; - - mmc-pwrseq =3D <&brcm_wifi_pwrseq>; - vmmc-supply =3D <&vdd_3v3_sys>; - vqmmc-supply =3D <&vdd_3v3_sys>; - - /* Azurewave AW-NH615 BCM4329B1 */ - wifi@1 { - compatible =3D "brcm,bcm4329-fmac"; - reg =3D <1>; - - interrupt-parent =3D <&gpio>; - interrupts =3D ; - interrupt-names =3D "host-wake"; - }; - }; - - sdmmc3: mmc@c8000400 { - status =3D "okay"; - bus-width =3D <4>; - cd-gpios =3D <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>; - wp-gpios =3D <&gpio TEGRA_GPIO(H, 1) GPIO_ACTIVE_HIGH>; - power-gpios =3D <&gpio TEGRA_GPIO(I, 6) GPIO_ACTIVE_HIGH>; - vmmc-supply =3D <&vdd_3v3_sys>; - vqmmc-supply =3D <&vdd_3v3_sys>; - }; - - sdmmc4: mmc@c8000600 { - status =3D "okay"; - bus-width =3D <8>; - vmmc-supply =3D <&vcore_emmc>; - vqmmc-supply =3D <&vdd_3v3_sys>; - non-removable; - }; - - mains: ac-adapter-detect { - compatible =3D "gpio-charger"; - charger-type =3D "mains"; - gpios =3D <&gpio TEGRA_GPIO(V, 3) GPIO_ACTIVE_LOW>; - }; - - backlight: backlight { - compatible =3D "pwm-backlight"; - - enable-gpios =3D <&gpio TEGRA_GPIO(D, 4) GPIO_ACTIVE_HIGH>; - power-supply =3D <&vdd_3v3_sys>; - pwms =3D <&pwm 2 4000000>; - - brightness-levels =3D <7 255>; - num-interpolated-steps =3D <248>; - default-brightness-level =3D <20>; - }; - - /* PMIC has a built-in 32KHz oscillator which is used by PMC */ - clk32k_in: clock-32k-in { - compatible =3D "fixed-clock"; - clock-frequency =3D <32768>; - #clock-cells =3D <0>; - }; - - cpus { - cpu0: cpu@0 { - cpu-supply =3D <&vdd_cpu>; - operating-points-v2 =3D <&cpu0_opp_table>; - #cooling-cells =3D <2>; - }; - - cpu1: cpu@1 { - cpu-supply =3D <&vdd_cpu>; - operating-points-v2 =3D <&cpu0_opp_table>; - #cooling-cells =3D <2>; - }; - }; - - display-panel { - compatible =3D "auo,b101ew05", "panel-lvds"; - - /* AUO B101EW05 using custom timings */ - - backlight =3D <&backlight>; - ddc-i2c-bus =3D <&lvds_ddc>; - power-supply =3D <&vdd_pnl_reg>; - - width-mm =3D <218>; - height-mm =3D <135>; - - data-mapping =3D "jeida-18"; - - panel-timing { - clock-frequency =3D <71200000>; - hactive =3D <1280>; - vactive =3D <800>; - hfront-porch =3D <8>; - hback-porch =3D <18>; - hsync-len =3D <184>; - vsync-len =3D <3>; - vfront-porch =3D <4>; - vback-porch =3D <8>; - }; - - port { - panel_input: endpoint { - remote-endpoint =3D <&lvds_encoder_output>; - }; - }; - }; - - gpio-keys { + extcon-keys { compatible =3D "gpio-keys"; =20 - key-power { - label =3D "Power"; - gpios =3D <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>; - linux,code =3D ; - debounce-interval =3D <10>; - wakeup-event-action =3D ; - wakeup-source; - }; - - key-volume-down { - label =3D "Volume Down"; - gpios =3D <&gpio TEGRA_GPIO(Q, 4) GPIO_ACTIVE_LOW>; - linux,code =3D ; - debounce-interval =3D <10>; - wakeup-event-action =3D ; - wakeup-source; - }; - - key-volume-up { - label =3D "Volume Up"; - gpios =3D <&gpio TEGRA_GPIO(Q, 5) GPIO_ACTIVE_LOW>; - linux,code =3D ; - debounce-interval =3D <10>; - wakeup-event-action =3D ; - wakeup-source; - }; - switch-dock-hall-sensor { label =3D "Lid"; gpios =3D <&gpio TEGRA_GPIO(S, 4) GPIO_ACTIVE_LOW>; @@ -1057,253 +58,4 @@ switch-dock-hall-sensor { wakeup-source; }; }; - - i2cmux { - compatible =3D "i2c-mux-pinctrl"; - #address-cells =3D <1>; - #size-cells =3D <0>; - - i2c-parent =3D <&i2c2>; - - pinctrl-names =3D "ddc", "pta", "idle"; - pinctrl-0 =3D <&state_i2cmux_ddc>; - pinctrl-1 =3D <&state_i2cmux_pta>; - pinctrl-2 =3D <&state_i2cmux_idle>; - - hdmi_ddc: i2c@0 { - reg =3D <0>; - #address-cells =3D <1>; - #size-cells =3D <0>; - }; - - lvds_ddc: i2c@1 { - reg =3D <1>; - #address-cells =3D <1>; - #size-cells =3D <0>; - - smart-battery@b { - compatible =3D "ti,bq20z75", "sbs,sbs-battery"; - reg =3D <0xb>; - sbs,i2c-retry-count =3D <2>; - sbs,poll-retry-count =3D <10>; - power-supplies =3D <&mains>; - }; - - /* Dynaimage ambient light sensor */ - light-sensor@1c { - compatible =3D "dynaimage,al3000a"; - reg =3D <0x1c>; - - interrupt-parent =3D <&gpio>; - interrupts =3D ; - - vdd-supply =3D <&vdd_1v8_sys>; - }; - }; - }; - - lvds-encoder { - compatible =3D "ti,sn75lvds83", "lvds-encoder"; - - powerdown-gpios =3D <&gpio TEGRA_GPIO(B, 2) GPIO_ACTIVE_LOW>; - power-supply =3D <&vdd_3v3_sys>; - - ports { - #address-cells =3D <1>; - #size-cells =3D <0>; - - port@0 { - reg =3D <0>; - - lvds_encoder_input: endpoint { - remote-endpoint =3D <&lcd_output>; - }; - }; - - port@1 { - reg =3D <1>; - - lvds_encoder_output: endpoint { - remote-endpoint =3D <&panel_input>; - }; - }; - }; - }; - - opp-table-emc { - /delete-node/ opp-666000000; - /delete-node/ opp-760000000; - }; - - vdd_5v0_sys: regulator-5v0 { - compatible =3D "regulator-fixed"; - regulator-name =3D "vdd_5v0"; - regulator-min-microvolt =3D <5000000>; - regulator-max-microvolt =3D <5000000>; - regulator-always-on; - }; - - vdd_3v3_sys: regulator-3v3 { - compatible =3D "regulator-fixed"; - regulator-name =3D "vdd_3v3_vs"; - regulator-min-microvolt =3D <3300000>; - regulator-max-microvolt =3D <3300000>; - regulator-always-on; - vin-supply =3D <&vdd_5v0_sys>; - }; - - regulator-pcie { - compatible =3D "regulator-fixed"; - regulator-name =3D "pcie_vdd"; - regulator-min-microvolt =3D <1500000>; - regulator-max-microvolt =3D <1500000>; - gpio =3D <&pmic 0 GPIO_ACTIVE_HIGH>; - regulator-always-on; - }; - - vdd_pnl_reg: regulator-panel { - compatible =3D "regulator-fixed"; - regulator-name =3D "vdd_pnl"; - regulator-min-microvolt =3D <2800000>; - regulator-max-microvolt =3D <2800000>; - gpio =3D <&gpio TEGRA_GPIO(C, 6) GPIO_ACTIVE_HIGH>; - enable-active-high; - }; - - vdd_1v8_sys: regulator-1v8 { - compatible =3D "regulator-fixed"; - regulator-name =3D "vdd_1v8_vs"; - regulator-min-microvolt =3D <1800000>; - regulator-max-microvolt =3D <1800000>; - regulator-always-on; - vin-supply =3D <&vdd_5v0_sys>; - }; - - vdd_hdmi_en: regulator-hdmi { - compatible =3D "regulator-fixed"; - regulator-name =3D "vdd_5v0_hdmi_en"; - regulator-min-microvolt =3D <5000000>; - regulator-max-microvolt =3D <5000000>; - regulator-always-on; - vin-supply =3D <&vdd_5v0_sys>; - gpio =3D <&gpio TEGRA_GPIO(V, 5) GPIO_ACTIVE_HIGH>; - enable-active-high; - }; - - sound { - compatible =3D "asus,tegra-audio-wm8903-tf101", - "nvidia,tegra-audio-wm8903"; - nvidia,model =3D "Asus EeePad Transformer WM8903"; - - nvidia,audio-routing =3D - "Headphone Jack", "HPOUTR", - "Headphone Jack", "HPOUTL", - "Int Spk", "ROP", - "Int Spk", "RON", - "Int Spk", "LOP", - "Int Spk", "LON", - "IN2L", "Mic Jack", - "DMICDAT", "Int Mic"; - - nvidia,i2s-controller =3D <&tegra_i2s1>; - nvidia,audio-codec =3D <&wm8903>; - - nvidia,spkr-en-gpios =3D <&wm8903 2 GPIO_ACTIVE_HIGH>; - nvidia,hp-det-gpios =3D <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>; - nvidia,mic-det-gpios =3D <&gpio TEGRA_GPIO(X, 1) GPIO_ACTIVE_LOW>; - nvidia,coupled-mic-hp-det; - - clocks =3D <&tegra_car TEGRA20_CLK_PLL_A>, - <&tegra_car TEGRA20_CLK_PLL_A_OUT0>, - <&tegra_car TEGRA20_CLK_CDEV1>; - clock-names =3D "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 =3D <1000>; /* milliseconds */ - polling-delay =3D <5000>; /* milliseconds */ - - thermal-sensors =3D <&nct1008 0>; - - trips { - trip0: skin-alert { - /* start throttling at 60C */ - temperature =3D <60000>; - hysteresis =3D <200>; - type =3D "passive"; - }; - - trip1: skin-crit { - /* shut down at 70C */ - temperature =3D <70000>; - hysteresis =3D <2000>; - type =3D "critical"; - }; - }; - - cooling-maps { - map0 { - trip =3D <&trip0>; - cooling-device =3D <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, - <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; - }; - }; - }; - - cpu-thermal { - polling-delay-passive =3D <1000>; /* milliseconds */ - polling-delay =3D <5000>; /* milliseconds */ - - thermal-sensors =3D <&nct1008 1>; - - trips { - trip2: cpu-alert { - /* throttle at 85C until temperature drops to 84.8C */ - temperature =3D <85000>; - hysteresis =3D <200>; - type =3D "passive"; - }; - - trip3: cpu-crit { - /* shut down at 90C */ - temperature =3D <90000>; - hysteresis =3D <2000>; - type =3D "critical"; - }; - }; - - cooling-maps { - map1 { - trip =3D <&trip2>; - cooling-device =3D <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, - <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; - }; - }; - }; - }; - - brcm_wifi_pwrseq: wifi-pwrseq { - compatible =3D "mmc-pwrseq-simple"; - - clocks =3D <&tegra_pmc TEGRA_PMC_CLK_BLINK>; - clock-names =3D "ext_clock"; - - reset-gpios =3D <&gpio TEGRA_GPIO(K, 6) GPIO_ACTIVE_LOW>; - post-power-on-delay-ms =3D <200>; - power-off-delay-us =3D <200>; - }; }; diff --git a/arch/arm/boot/dts/nvidia/tegra20-asus-transformer-common.dtsi = b/arch/arm/boot/dts/nvidia/tegra20-asus-transformer-common.dtsi new file mode 100644 index 000000000000..b48f53c00efa --- /dev/null +++ b/arch/arm/boot/dts/nvidia/tegra20-asus-transformer-common.dtsi @@ -0,0 +1,1268 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include +#include +#include +#include + +#include "tegra20.dtsi" +#include "tegra20-cpu-opp.dtsi" +#include "tegra20-cpu-opp-microvolt.dtsi" + +/ { + chassis-type =3D "convertible"; + + aliases { + mmc0 =3D &sdmmc4; /* eMMC */ + mmc1 =3D &sdmmc3; /* MicroSD */ + mmc2 =3D &sdmmc1; /* WiFi */ + + rtc0 =3D &pmic; + rtc1 =3D "/rtc@7000e000"; + + serial0 =3D &uartd; + serial1 =3D &uartc; /* Bluetooth */ + serial2 =3D &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 =3D <0x00000000 0x40000000>; + }; + + reserved-memory { + #address-cells =3D <1>; + #size-cells =3D <1>; + ranges; + + ramoops@2ffe0000 { + compatible =3D "ramoops"; + reg =3D <0x2ffe0000 0x10000>; /* 64kB */ + console-size =3D <0x8000>; /* 32kB */ + record-size =3D <0x400>; /* 1kB */ + ecc-size =3D <16>; + }; + + linux,cma@30000000 { + compatible =3D "shared-dma-pool"; + alloc-ranges =3D <0x30000000 0x10000000>; + size =3D <0x10000000>; /* 256MiB */ + linux,cma-default; + reusable; + }; + }; + + host1x@50000000 { + dc@54200000 { + rgb { + status =3D "okay"; + + port { + lcd_output: endpoint { + remote-endpoint =3D <&lvds_encoder_input>; + bus-width =3D <18>; + }; + }; + }; + }; + + hdmi@54280000 { + status =3D "okay"; + + vdd-supply =3D <&hdmi_vdd_reg>; + pll-supply =3D <&hdmi_pll_reg>; + hdmi-supply =3D <&vdd_hdmi_en>; + + nvidia,ddc-i2c-bus =3D <&hdmi_ddc>; + nvidia,hpd-gpio =3D <&gpio TEGRA_GPIO(N, 7) + GPIO_ACTIVE_HIGH>; + }; + }; + + gpio@6000d000 { + charging-enable-hog { + gpio-hog; + gpios =3D ; + output-low; + }; + }; + + pinmux@70000014 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&state_default>; + + state_default: pinmux { + ata { + nvidia,pins =3D "ata"; + nvidia,function =3D "ide"; + }; + + atb { + nvidia,pins =3D "atb", "gma", "gme"; + nvidia,function =3D "sdio4"; + }; + + atc { + nvidia,pins =3D "atc"; + nvidia,function =3D "nand"; + }; + + atd { + nvidia,pins =3D "atd", "ate", "gmb", "spia", + "spib", "spic"; + nvidia,function =3D "gmi"; + }; + + cdev1 { + nvidia,pins =3D "cdev1"; + nvidia,function =3D "plla_out"; + }; + + cdev2 { + nvidia,pins =3D "cdev2"; + nvidia,function =3D "pllp_out4"; + }; + + crtp { + nvidia,pins =3D "crtp"; + nvidia,function =3D "crt"; + }; + + lm1 { + nvidia,pins =3D "lm1"; + nvidia,function =3D "rsvd3"; + }; + + csus { + nvidia,pins =3D "csus"; + nvidia,function =3D "vi_sensor_clk"; + }; + + dap1 { + nvidia,pins =3D "dap1"; + nvidia,function =3D "dap1"; + }; + + dap2 { + nvidia,pins =3D "dap2"; + nvidia,function =3D "dap2"; + }; + + dap3 { + nvidia,pins =3D "dap3"; + nvidia,function =3D "dap3"; + }; + + dap4 { + nvidia,pins =3D "dap4"; + nvidia,function =3D "dap4"; + }; + + dta { + nvidia,pins =3D "dta", "dtb", "dtc", "dtd", "dte"; + nvidia,function =3D "vi"; + }; + + dtf { + nvidia,pins =3D "dtf"; + nvidia,function =3D "i2c3"; + }; + + gmc { + nvidia,pins =3D "gmc"; + nvidia,function =3D "uartd"; + }; + + gmd { + nvidia,pins =3D "gmd"; + nvidia,function =3D "sflash"; + }; + + gpu { + nvidia,pins =3D "gpu"; + nvidia,function =3D "pwm"; + }; + + gpu7 { + nvidia,pins =3D "gpu7"; + nvidia,function =3D "rtck"; + }; + + gpv { + nvidia,pins =3D "gpv", "slxa"; + nvidia,function =3D "pcie"; + }; + + hdint { + nvidia,pins =3D "hdint"; + nvidia,function =3D "hdmi"; + }; + + i2cp { + nvidia,pins =3D "i2cp"; + nvidia,function =3D "i2cp"; + }; + + irrx { + nvidia,pins =3D "irrx", "irtx"; + nvidia,function =3D "uartb"; + }; + + kbca { + nvidia,pins =3D "kbca", "kbcb", "kbcc", "kbcd", + "kbce", "kbcf"; + nvidia,function =3D "kbc"; + }; + + lcsn { + nvidia,pins =3D "lcsn", "ldc", "lm0", "lpw1", + "lsdi", "lvp0"; + nvidia,function =3D "rsvd4"; + }; + + ld0 { + nvidia,pins =3D "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 =3D "displaya"; + }; + + owc { + nvidia,pins =3D "owc", "spdi", "spdo", "uac"; + nvidia,function =3D "rsvd2"; + }; + + pmc { + nvidia,pins =3D "pmc"; + nvidia,function =3D "pwr_on"; + }; + + rm { + nvidia,pins =3D "rm"; + nvidia,function =3D "i2c1"; + }; + + sdb { + nvidia,pins =3D "sdb", "sdc", "sdd", "slxc", "slxk"; + nvidia,function =3D "sdio3"; + }; + + sdio1 { + nvidia,pins =3D "sdio1"; + nvidia,function =3D "sdio1"; + }; + + slxd { + nvidia,pins =3D "slxd"; + nvidia,function =3D "spdif"; + }; + + spid { + nvidia,pins =3D "spid", "spie", "spif"; + nvidia,function =3D "spi1"; + }; + + spig { + nvidia,pins =3D "spig", "spih"; + nvidia,function =3D "spi2_alt"; + }; + + uaa { + nvidia,pins =3D "uaa", "uab", "uda"; + nvidia,function =3D "ulpi"; + }; + + uad { + nvidia,pins =3D "uad"; + nvidia,function =3D "irda"; + }; + + uca { + nvidia,pins =3D "uca", "ucb"; + nvidia,function =3D "uartc"; + }; + + conf-ata { + nvidia,pins =3D "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 =3D ; + nvidia,tristate =3D ; + }; + + conf-ate { + nvidia,pins =3D "ate", "dap2", "dap3", "gmb", "gmd", + "owc", "spia", "spib", "spic", + "spid", "spie", "spig", "slxa"; + nvidia,pull =3D ; + nvidia,tristate =3D ; + }; + + conf-ck32 { + nvidia,pins =3D "ck32", "ddrc", "pmca", "pmcb", + "pmcc", "pmcd", "pmce", "xm2c", "xm2d"; + nvidia,pull =3D ; + }; + + conf-crtp { + nvidia,pins =3D "crtp", "spih"; + nvidia,pull =3D ; + nvidia,tristate =3D ; + }; + + conf-dta { + nvidia,pins =3D "dta", "dtb", "dtc", "dtd"; + nvidia,pull =3D ; + nvidia,tristate =3D ; + }; + + conf-spif { + nvidia,pins =3D "spif"; + nvidia,pull =3D ; + nvidia,tristate =3D ; + }; + + conf-hdint { + nvidia,pins =3D "hdint", "lcsn", "ldc", "lm1", + "lpw1", "lsck", "lsda", "lsdi", "lvp0"; + nvidia,tristate =3D ; + }; + + conf-kbca { + nvidia,pins =3D "kbca", "kbcb", "kbcc", "kbcd", + "kbce", "kbcf", "sdio1", "uaa", "uab", + "uca", "ucb"; + nvidia,pull =3D ; + nvidia,tristate =3D ; + }; + + conf-lc { + nvidia,pins =3D "lc", "ls"; + nvidia,pull =3D ; + }; + + conf-ld0 { + nvidia,pins =3D "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 =3D ; + }; + + conf-ld17-0 { + nvidia,pins =3D "ld17_0", "ld19_18", "ld21_20", + "ld23_22"; + nvidia,pull =3D ; + }; + + drive-sdio1 { + nvidia,pins =3D "drive_sdio1", "drive_ddc", "drive_vi1"; + nvidia,high-speed-mode =3D ; + nvidia,schmitt =3D ; + nvidia,low-power-mode =3D ; + nvidia,pull-down-strength =3D <31>; + nvidia,pull-up-strength =3D <31>; + nvidia,slew-rate-rising =3D ; + nvidia,slew-rate-falling =3D ; + }; + + drive-csus { + nvidia,pins =3D "drive_csus"; + nvidia,high-speed-mode =3D ; + nvidia,schmitt =3D ; + nvidia,low-power-mode =3D ; + nvidia,pull-down-strength =3D <31>; + nvidia,pull-up-strength =3D <31>; + nvidia,slew-rate-rising =3D ; + nvidia,slew-rate-falling =3D ; + }; + }; + + state_i2cmux_ddc: pinmux-i2cmux-ddc { + ddc { + nvidia,pins =3D "ddc"; + nvidia,function =3D "i2c2"; + }; + + pta { + nvidia,pins =3D "pta"; + nvidia,function =3D "rsvd4"; + }; + }; + + state_i2cmux_idle: pinmux-i2cmux-idle { + ddc { + nvidia,pins =3D "ddc"; + nvidia,function =3D "rsvd4"; + }; + + pta { + nvidia,pins =3D "pta"; + nvidia,function =3D "rsvd4"; + }; + }; + + state_i2cmux_pta: pinmux-i2cmux-pta { + ddc { + nvidia,pins =3D "ddc"; + nvidia,function =3D "rsvd4"; + }; + + pta { + nvidia,pins =3D "pta"; + nvidia,function =3D "i2c2"; + }; + }; + }; + + spdif@70002400 { + status =3D "okay"; + + nvidia,fixed-parent-rate; + }; + + i2s@70002800 { + status =3D "okay"; + + nvidia,fixed-parent-rate; + }; + + serial@70006040 { + compatible =3D "nvidia,tegra20-hsuart"; + reset-names =3D "serial"; + /delete-property/ reg-shift; + /* GPS BCM4751 */ + }; + + serial@70006200 { + compatible =3D "nvidia,tegra20-hsuart"; + reset-names =3D "serial"; + /delete-property/ reg-shift; + status =3D "okay"; + + /* Azurewave AW-NH615 BCM4329B1 */ + bluetooth { + compatible =3D "brcm,bcm4329-bt"; + + interrupt-parent =3D <&gpio>; + interrupts =3D ; + interrupt-names =3D "host-wakeup"; + + /* PLLP 216MHz / 16 / 4 */ + max-speed =3D <3375000>; + + clocks =3D <&tegra_pmc TEGRA_PMC_CLK_BLINK>; + clock-names =3D "txco"; + + vbat-supply =3D <&vdd_3v3_sys>; + vddio-supply =3D <&vdd_1v8_sys>; + + device-wakeup-gpios =3D <&gpio TEGRA_GPIO(U, 1) GPIO_ACTIVE_HIGH>; + shutdown-gpios =3D <&gpio TEGRA_GPIO(U, 0) GPIO_ACTIVE_HIGH>; + }; + }; + + serial@70006300 { + /delete-property/ dmas; + /delete-property/ dma-names; + status =3D "okay"; + }; + + pwm@7000a000 { + status =3D "okay"; + }; + + i2c@7000c000 { + status =3D "okay"; + clock-frequency =3D <400000>; + + /* Aichi AMI306 digital compass */ + magnetometer@e { + compatible =3D "asahi-kasei,ak8974"; + reg =3D <0xe>; + + interrupt-parent =3D <&gpio>; + interrupts =3D ; + + avdd-supply =3D <&vdd_3v3_sys>; + dvdd-supply =3D <&vdd_1v8_sys>; + }; + + wm8903: audio-codec@1a { + compatible =3D "wlf,wm8903"; + reg =3D <0x1a>; + + interrupt-parent =3D <&gpio>; + interrupts =3D ; + + gpio-controller; + #gpio-cells =3D <2>; + + micdet-cfg =3D <0x83>; + micdet-delay =3D <100>; + + gpio-cfg =3D < + 0x00000600 /* DMIC_LR, output */ + 0x00000680 /* DMIC_DAT, input */ + 0x00000000 /* Speaker-enable GPIO, output, low */ + 0xffffffff /* don't touch */ + 0xffffffff /* don't touch */ + >; + + AVDD-supply =3D <&vdd_1v8_sys>; + CPVDD-supply =3D <&vdd_1v8_sys>; + DBVDD-supply =3D <&vdd_1v8_sys>; + DCVDD-supply =3D <&vdd_1v8_sys>; + }; + + gyroscope@68 { + compatible =3D "invensense,mpu3050"; + reg =3D <0x68>; + + interrupt-parent =3D <&gpio>; + interrupts =3D ; + + vdd-supply =3D <&vdd_3v3_sys>; + vlogic-supply =3D <&vdd_1v8_sys>; + + i2c-gate { + #address-cells =3D <1>; + #size-cells =3D <0>; + + accelerometer@f { + compatible =3D "kionix,kxtf9"; + reg =3D <0xf>; + + interrupt-parent =3D <&gpio>; + interrupts =3D ; + + vdd-supply =3D <&vdd_1v8_sys>; + vddio-supply =3D <&vdd_1v8_sys>; + }; + }; + }; + }; + + i2c2: i2c@7000c400 { + status =3D "okay"; + clock-frequency =3D <100000>; + }; + + i2c@7000c500 { + status =3D "okay"; + clock-frequency =3D <400000>; + }; + + i2c@7000d000 { + status =3D "okay"; + clock-frequency =3D <400000>; + + pmic: pmic@34 { + compatible =3D "ti,tps6586x"; + reg =3D <0x34>; + interrupts =3D ; + + ti,system-power-controller; + + #gpio-cells =3D <2>; + gpio-controller; + + sys-supply =3D <&vdd_5v0_sys>; + vin-sm0-supply =3D <&sys_reg>; + vin-sm1-supply =3D <&sys_reg>; + vin-sm2-supply =3D <&sys_reg>; + vinldo01-supply =3D <&sm2_reg>; + vinldo23-supply =3D <&sm2_reg>; + vinldo4-supply =3D <&sm2_reg>; + vinldo678-supply =3D <&sm2_reg>; + vinldo9-supply =3D <&sm2_reg>; + + regulators { + sys_reg: sys { + regulator-name =3D "vdd_sys"; + regulator-always-on; + }; + + vdd_core: sm0 { + regulator-name =3D "vdd_sm0,vdd_core"; + regulator-min-microvolt =3D <950000>; + regulator-max-microvolt =3D <1300000>; + regulator-coupled-with =3D <&rtc_vdd &vdd_cpu>; + regulator-coupled-max-spread =3D <170000 550000>; + regulator-always-on; + regulator-boot-on; + + nvidia,tegra-core-regulator; + }; + + vdd_cpu: sm1 { + regulator-name =3D "vdd_sm1,vdd_cpu"; + regulator-min-microvolt =3D <750000>; + regulator-max-microvolt =3D <1125000>; + regulator-coupled-with =3D <&vdd_core &rtc_vdd>; + regulator-coupled-max-spread =3D <550000 550000>; + regulator-always-on; + regulator-boot-on; + + nvidia,tegra-cpu-regulator; + }; + + sm2_reg: sm2 { + regulator-name =3D "vdd_sm2,vin_ldo*"; + regulator-min-microvolt =3D <3700000>; + regulator-max-microvolt =3D <3700000>; + regulator-always-on; + }; + + /* LDO0 is not connected to anything */ + + ldo1 { + regulator-name =3D "vdd_ldo1,avdd_pll*"; + regulator-min-microvolt =3D <1100000>; + regulator-max-microvolt =3D <1100000>; + regulator-always-on; + }; + + rtc_vdd: ldo2 { + regulator-name =3D "vdd_ldo2,vdd_rtc"; + regulator-min-microvolt =3D <950000>; + regulator-max-microvolt =3D <1300000>; + regulator-coupled-with =3D <&vdd_core &vdd_cpu>; + regulator-coupled-max-spread =3D <170000 550000>; + regulator-always-on; + regulator-boot-on; + + nvidia,tegra-rtc-regulator; + }; + + ldo3 { + regulator-name =3D "vdd_ldo3,avdd_usb*"; + regulator-min-microvolt =3D <3300000>; + regulator-max-microvolt =3D <3300000>; + regulator-always-on; + }; + + ldo4 { + regulator-name =3D "vdd_ldo4,avdd_osc,vddio_sys"; + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + regulator-always-on; + }; + + vcore_emmc: ldo5 { + regulator-name =3D "vdd_ldo5,vcore_mmc"; + regulator-min-microvolt =3D <2850000>; + regulator-max-microvolt =3D <2850000>; + regulator-always-on; + }; + + ldo6 { + regulator-name =3D "vdd_ldo6,avdd_vdac"; + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + }; + + hdmi_vdd_reg: ldo7 { + regulator-name =3D "vdd_ldo7,avdd_hdmi,vdd_fuse"; + regulator-min-microvolt =3D <3300000>; + regulator-max-microvolt =3D <3300000>; + }; + + hdmi_pll_reg: ldo8 { + regulator-name =3D "vdd_ldo8,avdd_hdmi_pll"; + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + }; + + ldo9 { + regulator-name =3D "vdd_ldo9,avdd_2v85,vdd_ddr_rx"; + regulator-min-microvolt =3D <2850000>; + regulator-max-microvolt =3D <2850000>; + regulator-always-on; + }; + + ldo_rtc { + regulator-name =3D "vdd_rtc_out,vdd_cell"; + regulator-min-microvolt =3D <3300000>; + regulator-max-microvolt =3D <3300000>; + regulator-always-on; + }; + }; + }; + + nct1008: temperature-sensor@4c { + compatible =3D "onnn,nct1008"; + reg =3D <0x4c>; + vcc-supply =3D <&vdd_3v3_sys>; + + interrupt-parent =3D <&gpio>; + interrupts =3D ; + + #thermal-sensor-cells =3D <1>; + }; + }; + + pmc@7000e400 { + nvidia,invert-interrupt; + nvidia,suspend-mode =3D <1>; + nvidia,cpu-pwr-good-time =3D <2000>; + nvidia,cpu-pwr-off-time =3D <100>; + nvidia,core-pwr-good-time =3D <3845 3845>; + nvidia,core-pwr-off-time =3D <458>; + nvidia,sys-clock-req-active-high; + core-supply =3D <&vdd_core>; + }; + + memory-controller@7000f400 { + nvidia,use-ram-code; + + emc-tables@3 { + reg =3D <0x3>; + + #address-cells =3D <1>; + #size-cells =3D <0>; + + emc-table@25000 { + reg =3D <25000>; + compatible =3D "nvidia,tegra20-emc-table"; + clock-frequency =3D <25000>; + nvidia,emc-registers =3D <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 =3D <50000>; + compatible =3D "nvidia,tegra20-emc-table"; + clock-frequency =3D <50000>; + nvidia,emc-registers =3D <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 =3D <75000>; + compatible =3D "nvidia,tegra20-emc-table"; + clock-frequency =3D <75000>; + nvidia,emc-registers =3D <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 =3D <150000>; + compatible =3D "nvidia,tegra20-emc-table"; + clock-frequency =3D <150000>; + nvidia,emc-registers =3D <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 =3D <300000>; + compatible =3D "nvidia,tegra20-emc-table"; + clock-frequency =3D <300000>; + nvidia,emc-registers =3D <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>; + }; + + lpddr2 { + compatible =3D "elpida,B8132B2PB-6D-F", "jedec,lpddr2-s4"; + revision-id =3D <1 0>; + density =3D <2048>; + io-width =3D <16>; + }; + }; + }; + + /* Peripheral USB via ASUS connector */ + usb@c5000000 { + compatible =3D "nvidia,tegra20-udc"; + status =3D "okay"; + dr_mode =3D "peripheral"; + }; + + usb-phy@c5000000 { + status =3D "okay"; + dr_mode =3D "peripheral"; + nvidia,xcvr-setup-use-fuses; + nvidia,xcvr-lsfslew =3D <2>; + nvidia,xcvr-lsrslew =3D <2>; + vbus-supply =3D <&vdd_5v0_sys>; + }; + + /* Dock's USB port */ + usb@c5008000 { + status =3D "okay"; + }; + + usb-phy@c5008000 { + status =3D "okay"; + nvidia,xcvr-setup-use-fuses; + vbus-supply =3D <&vdd_5v0_sys>; + }; + + sdmmc1: mmc@c8000000 { + status =3D "okay"; + + #address-cells =3D <1>; + #size-cells =3D <0>; + + assigned-clocks =3D <&tegra_car TEGRA20_CLK_SDMMC1>; + assigned-clock-parents =3D <&tegra_car TEGRA20_CLK_PLL_C>; + assigned-clock-rates =3D <40000000>; + + max-frequency =3D <40000000>; + keep-power-in-suspend; + bus-width =3D <4>; + non-removable; + + mmc-pwrseq =3D <&brcm_wifi_pwrseq>; + vmmc-supply =3D <&vdd_3v3_sys>; + vqmmc-supply =3D <&vdd_3v3_sys>; + + /* Azurewave AW-NH615 BCM4329B1 */ + wifi@1 { + compatible =3D "brcm,bcm4329-fmac"; + reg =3D <1>; + + interrupt-parent =3D <&gpio>; + interrupts =3D ; + interrupt-names =3D "host-wake"; + }; + }; + + sdmmc3: mmc@c8000400 { + status =3D "okay"; + bus-width =3D <4>; + cd-gpios =3D <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>; + wp-gpios =3D <&gpio TEGRA_GPIO(H, 1) GPIO_ACTIVE_HIGH>; + power-gpios =3D <&gpio TEGRA_GPIO(I, 6) GPIO_ACTIVE_HIGH>; + vmmc-supply =3D <&vdd_3v3_sys>; + vqmmc-supply =3D <&vdd_3v3_sys>; + }; + + sdmmc4: mmc@c8000600 { + status =3D "okay"; + bus-width =3D <8>; + vmmc-supply =3D <&vcore_emmc>; + vqmmc-supply =3D <&vdd_3v3_sys>; + non-removable; + }; + + mains: ac-adapter-detect { + compatible =3D "gpio-charger"; + charger-type =3D "mains"; + gpios =3D <&gpio TEGRA_GPIO(V, 3) GPIO_ACTIVE_LOW>; + }; + + backlight: backlight { + compatible =3D "pwm-backlight"; + + enable-gpios =3D <&gpio TEGRA_GPIO(D, 4) GPIO_ACTIVE_HIGH>; + power-supply =3D <&vdd_3v3_sys>; + pwms =3D <&pwm 2 4000000>; + + brightness-levels =3D <7 255>; + num-interpolated-steps =3D <248>; + default-brightness-level =3D <20>; + }; + + /* PMIC has a built-in 32KHz oscillator which is used by PMC */ + clk32k_in: clock-32k-in { + compatible =3D "fixed-clock"; + clock-frequency =3D <32768>; + #clock-cells =3D <0>; + }; + + cpus { + cpu0: cpu@0 { + cpu-supply =3D <&vdd_cpu>; + operating-points-v2 =3D <&cpu0_opp_table>; + #cooling-cells =3D <2>; + }; + + cpu1: cpu@1 { + cpu-supply =3D <&vdd_cpu>; + operating-points-v2 =3D <&cpu0_opp_table>; + #cooling-cells =3D <2>; + }; + }; + + display-panel { + compatible =3D "auo,b101ew05", "panel-lvds"; + + /* AUO B101EW05 using custom timings */ + + backlight =3D <&backlight>; + ddc-i2c-bus =3D <&lvds_ddc>; + power-supply =3D <&vdd_pnl_reg>; + + width-mm =3D <218>; + height-mm =3D <135>; + + data-mapping =3D "jeida-18"; + + panel-timing { + clock-frequency =3D <71200000>; + hactive =3D <1280>; + vactive =3D <800>; + hfront-porch =3D <8>; + hback-porch =3D <18>; + hsync-len =3D <184>; + vsync-len =3D <3>; + vfront-porch =3D <4>; + vback-porch =3D <8>; + }; + + port { + panel_input: endpoint { + remote-endpoint =3D <&lvds_encoder_output>; + }; + }; + }; + + gpio-keys { + compatible =3D "gpio-keys"; + + key-power { + label =3D "Power"; + gpios =3D <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>; + linux,code =3D ; + debounce-interval =3D <10>; + wakeup-event-action =3D ; + wakeup-source; + }; + + key-volume-down { + label =3D "Volume Down"; + gpios =3D <&gpio TEGRA_GPIO(Q, 4) GPIO_ACTIVE_LOW>; + linux,code =3D ; + debounce-interval =3D <10>; + wakeup-event-action =3D ; + wakeup-source; + }; + + key-volume-up { + label =3D "Volume Up"; + gpios =3D <&gpio TEGRA_GPIO(Q, 5) GPIO_ACTIVE_LOW>; + linux,code =3D ; + debounce-interval =3D <10>; + wakeup-event-action =3D ; + wakeup-source; + }; + }; + + i2cmux { + compatible =3D "i2c-mux-pinctrl"; + #address-cells =3D <1>; + #size-cells =3D <0>; + + i2c-parent =3D <&i2c2>; + + pinctrl-names =3D "ddc", "pta", "idle"; + pinctrl-0 =3D <&state_i2cmux_ddc>; + pinctrl-1 =3D <&state_i2cmux_pta>; + pinctrl-2 =3D <&state_i2cmux_idle>; + + hdmi_ddc: i2c@0 { + reg =3D <0>; + #address-cells =3D <1>; + #size-cells =3D <0>; + }; + + lvds_ddc: i2c@1 { + reg =3D <1>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + smart-battery@b { + compatible =3D "ti,bq20z75", "sbs,sbs-battery"; + reg =3D <0xb>; + sbs,i2c-retry-count =3D <2>; + sbs,poll-retry-count =3D <10>; + power-supplies =3D <&mains>; + }; + + /* Dynaimage ambient light sensor */ + light-sensor@1c { + compatible =3D "dynaimage,al3000a"; + reg =3D <0x1c>; + + interrupt-parent =3D <&gpio>; + interrupts =3D ; + + vdd-supply =3D <&vdd_1v8_sys>; + }; + }; + }; + + lvds-encoder { + compatible =3D "ti,sn75lvds83", "lvds-encoder"; + + powerdown-gpios =3D <&gpio TEGRA_GPIO(B, 2) GPIO_ACTIVE_LOW>; + power-supply =3D <&vdd_3v3_sys>; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + + lvds_encoder_input: endpoint { + remote-endpoint =3D <&lcd_output>; + }; + }; + + port@1 { + reg =3D <1>; + + lvds_encoder_output: endpoint { + remote-endpoint =3D <&panel_input>; + }; + }; + }; + }; + + opp-table-emc { + /delete-node/ opp-666000000; + /delete-node/ opp-760000000; + }; + + vdd_5v0_sys: regulator-5v0 { + compatible =3D "regulator-fixed"; + regulator-name =3D "vdd_5v0"; + regulator-min-microvolt =3D <5000000>; + regulator-max-microvolt =3D <5000000>; + regulator-always-on; + }; + + vdd_3v3_sys: regulator-3v3 { + compatible =3D "regulator-fixed"; + regulator-name =3D "vdd_3v3_vs"; + regulator-min-microvolt =3D <3300000>; + regulator-max-microvolt =3D <3300000>; + regulator-always-on; + vin-supply =3D <&vdd_5v0_sys>; + }; + + regulator-pcie { + compatible =3D "regulator-fixed"; + regulator-name =3D "pcie_vdd"; + regulator-min-microvolt =3D <1500000>; + regulator-max-microvolt =3D <1500000>; + gpio =3D <&pmic 0 GPIO_ACTIVE_HIGH>; + regulator-always-on; + }; + + vdd_pnl_reg: regulator-panel { + compatible =3D "regulator-fixed"; + regulator-name =3D "vdd_pnl"; + regulator-min-microvolt =3D <2800000>; + regulator-max-microvolt =3D <2800000>; + gpio =3D <&gpio TEGRA_GPIO(C, 6) GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + vdd_1v8_sys: regulator-1v8 { + compatible =3D "regulator-fixed"; + regulator-name =3D "vdd_1v8_vs"; + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + regulator-always-on; + vin-supply =3D <&vdd_5v0_sys>; + }; + + vdd_hdmi_en: regulator-hdmi { + compatible =3D "regulator-fixed"; + regulator-name =3D "vdd_5v0_hdmi_en"; + regulator-min-microvolt =3D <5000000>; + regulator-max-microvolt =3D <5000000>; + regulator-always-on; + vin-supply =3D <&vdd_5v0_sys>; + gpio =3D <&gpio TEGRA_GPIO(V, 5) GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + sound { + compatible =3D "asus,tegra-audio-wm8903-tf101", + "nvidia,tegra-audio-wm8903"; + nvidia,model =3D "Asus EeePad Transformer WM8903"; + + nvidia,audio-routing =3D + "Headphone Jack", "HPOUTR", + "Headphone Jack", "HPOUTL", + "Int Spk", "ROP", + "Int Spk", "RON", + "Int Spk", "LOP", + "Int Spk", "LON", + "IN2L", "Mic Jack", + "DMICDAT", "Int Mic"; + + nvidia,i2s-controller =3D <&tegra_i2s1>; + nvidia,audio-codec =3D <&wm8903>; + + nvidia,spkr-en-gpios =3D <&wm8903 2 GPIO_ACTIVE_HIGH>; + nvidia,hp-det-gpios =3D <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>; + nvidia,mic-det-gpios =3D <&gpio TEGRA_GPIO(X, 1) GPIO_ACTIVE_LOW>; + nvidia,coupled-mic-hp-det; + + clocks =3D <&tegra_car TEGRA20_CLK_PLL_A>, + <&tegra_car TEGRA20_CLK_PLL_A_OUT0>, + <&tegra_car TEGRA20_CLK_CDEV1>; + clock-names =3D "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 =3D <1000>; /* milliseconds */ + polling-delay =3D <5000>; /* milliseconds */ + + thermal-sensors =3D <&nct1008 0>; + + trips { + trip0: skin-alert { + /* start throttling at 60C */ + temperature =3D <60000>; + hysteresis =3D <200>; + type =3D "passive"; + }; + + trip1: skin-crit { + /* shut down at 70C */ + temperature =3D <70000>; + hysteresis =3D <2000>; + type =3D "critical"; + }; + }; + + cooling-maps { + map0 { + trip =3D <&trip0>; + cooling-device =3D <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, + <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; + }; + + cpu-thermal { + polling-delay-passive =3D <1000>; /* milliseconds */ + polling-delay =3D <5000>; /* milliseconds */ + + thermal-sensors =3D <&nct1008 1>; + + trips { + trip2: cpu-alert { + /* throttle at 85C until temperature drops to 84.8C */ + temperature =3D <85000>; + hysteresis =3D <200>; + type =3D "passive"; + }; + + trip3: cpu-crit { + /* shut down at 90C */ + temperature =3D <90000>; + hysteresis =3D <2000>; + type =3D "critical"; + }; + }; + + cooling-maps { + map1 { + trip =3D <&trip2>; + cooling-device =3D <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, + <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; + }; + }; + + brcm_wifi_pwrseq: wifi-pwrseq { + compatible =3D "mmc-pwrseq-simple"; + + clocks =3D <&tegra_pmc TEGRA_PMC_CLK_BLINK>; + clock-names =3D "ext_clock"; + + reset-gpios =3D <&gpio TEGRA_GPIO(K, 6) GPIO_ACTIVE_LOW>; + post-power-on-delay-ms =3D <200>; + power-off-delay-us =3D <200>; + }; +}; --=20 2.48.1