#include "tegra20.dtsi"
/ {
- model = "NVIDIA Tegra20 Ventana evaluation board";
+ model = "Thinkpad Tablet paz00";
compatible = "nvidia,ventana", "nvidia,tegra20";
aliases {
chosen {
stdout-path = "serial0:115200n8";
+ bootargs = "mem=1024M@0M usbcore.old_scheme_first=1";
};
memory@0 {
status = "okay";
nvidia,panel = <&panel>;
+
};
};
nvidia,pins = "dap1";
nvidia,function = "dap1";
};
- dap2 {
+ dap2 { /* touch */
nvidia,pins = "dap2";
nvidia,function = "dap2";
+ nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+ nvidia,tristate = <TEGRA_PIN_ENABLE>;
};
dap3 {
nvidia,pins = "dap3";
};
kbca {
nvidia,pins = "kbca", "kbcb", "kbcc", "kbcd",
- "kbce", "kbcf";
+ "kbcf";
nvidia,function = "kbc";
};
+ kbce { /* touch */
+ nvidia,pins = "kbce";
+ nvidia,function = "kbc";
+ nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+ nvidia,tristate = <TEGRA_PIN_ENABLE>;
+ };
lcsn {
nvidia,pins = "lcsn", "ldc", "lm0", "lpw1",
"lsdi", "lvp0";
nvidia,pins = "slxd";
nvidia,function = "spdif";
};
- spid {
- nvidia,pins = "spid", "spie", "spif";
+ spid { /* touch */
+ nvidia,pins = "spid", "spif";
nvidia,function = "spi1";
+ nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+ nvidia,tristate = <TEGRA_PIN_DISABLE>;
+ };
+ spie { /* touch */
+ nvidia,pins = "spie";
+ nvidia,function = "spi1";
+ nvidia,pull = <TEGRA_PIN_PULL_UP>;
+ nvidia,tristate = <TEGRA_PIN_DISABLE>;
};
spig {
nvidia,pins = "spig", "spih";
conf_ata {
nvidia,pins = "ata", "atb", "atc", "atd",
"cdev1", "cdev2", "dap1", "dap2",
- "dap4", "ddc", "dtf", "gma", "gmc",
+ "dap4", "dtf", "gma", "gmc",
"gme", "gpu", "gpu7", "i2cp", "irrx",
"irtx", "pta", "rm", "sdc", "sdd",
"slxc", "slxd", "slxk", "spdi", "spdo",
status = "okay";
};
- i2c@7000c000 {
+ i2c@7000c000 { /* i2c0 -- kernel name, TRM is i2c1 */
status = "okay";
clock-frequency = <400000>;
gpio-cfg = <0xffffffff 0xffffffff 0 0xffffffff 0xffffffff>;
};
- /* ALS and proximity sensor */
- isl29018@44 {
- compatible = "isil,isl29018";
- reg = <0x44>;
- interrupt-parent = <&gpio>;
- interrupts = <TEGRA_GPIO(Z, 2) IRQ_TYPE_LEVEL_HIGH>;
- };
};
- i2c@7000c400 {
+ i2c@7000c400 { /* i2c1 */
status = "okay";
- clock-frequency = <100000>;
+ clock-frequency = <100000>; /* (invalid) panel edid: i2cdump -y 5 0x50 */
};
i2cmux {
#address-cells = <1>;
#size-cells = <0>;
- i2c-parent = <&{/i2c@7000c400}>;
+ i2c-parent = <&{/i2c@7000c400}>; /* 7000c400 = i2c1, 7000c500 = i2c2 */
pinctrl-names = "ddc", "pta", "idle";
pinctrl-0 = <&state_i2cmux_ddc>;
};
};
- i2c@7000c500 {
+ i2c@7000c500 { /* i2c2 */
status = "okay";
- clock-frequency = <400000>;
+ clock-frequency = <400000>; /* 400000 */
};
- i2c@7000d000 {
+ i2c@7000d000 { /* DVC according to Tegra2 TRM */
status = "okay";
clock-frequency = <400000>;
regulator-always-on;
};
- sm0 {
+ core_vdd_reg: sm0 {
regulator-name = "vdd_sm0,vdd_core";
regulator-min-microvolt = <1200000>;
- regulator-max-microvolt = <1200000>;
+ regulator-max-microvolt = <1300000>;
+ regulator-coupled-with = <&rtc_vdd_reg>;
+ regulator-coupled-max-spread = <150000>;
regulator-always-on;
};
- sm1 {
+ cpu_vdd_reg: sm1 {
regulator-name = "vdd_sm1,vdd_cpu";
- regulator-min-microvolt = <1000000>;
- regulator-max-microvolt = <1000000>;
+ regulator-min-microvolt = <750000>;
+ regulator-max-microvolt = <1125000>;
regulator-always-on;
};
regulator-always-on;
};
- ldo2 {
+ rtc_vdd_reg: ldo2 {
regulator-name = "vdd_ldo2,vdd_rtc";
regulator-min-microvolt = <1200000>;
- regulator-max-microvolt = <1200000>;
+ regulator-max-microvolt = <1300000>;
+ regulator-coupled-with = <&core_vdd_reg>;
+ regulator-coupled-max-spread = <150000>;
+ regulator-always-on;
};
ldo3 {
temperature-sensor@4c {
compatible = "onnn,nct1008";
reg = <0x4c>;
+ interrupt-parent = <&gpio>;
+ interrupts = <TEGRA_GPIO(N, 6) IRQ_TYPE_LEVEL_LOW>; // FIXME Documentation/devicetree/bindings/hwmon/lm90.txt
};
+
+ compass@c { // CONFIG_AK8975
+ compatible = "asahi-kasei,ak8975";
+ reg = <0x0c>;
+ interrupt-parent = <&gpio>;
+ interrupts = <TEGRA_GPIO(N, 5) IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ accel@f { // CONFIG_KXCJK1013 -- does mention kxtf9 but doesn't work
+ compatible = "kxtf9";
+ reg = <0x0f>;
+ };
+
};
pmc@7000e400 {
sdhci@c8000000 {
status = "okay";
- power-gpios = <&gpio TEGRA_GPIO(K, 6) GPIO_ACTIVE_HIGH>;
- bus-width = <4>;
+ bus-width = <8>;
keep-power-in-suspend;
};
status = "okay";
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>;
+ power-gpios = <&gpio TEGRA_GPIO(T, 3) GPIO_ACTIVE_HIGH>;
bus-width = <4>;
};
sdhci@c8000600 {
status = "okay";
+ power-gpios = <&gpio TEGRA_GPIO(I, 6) GPIO_ACTIVE_HIGH>;
bus-width = <8>;
non-removable;
};
gpio-keys {
compatible = "gpio-keys";
+ /*
+ keys on device are: rotate, www, back, back, homepage
+ two back keys are connected to same pin
+
+ relevant source from 2.6 kernel is:
+
+#define GPIO_KEY(_id, _gpio, _isactivelow, _iswake) \
+static struct gpio_keys_button ventana_keys[] = {
+ [0] = GPIO_KEY(KEY_WWW, PQ0, 1, 0),
+ [1] = GPIO_KEY(KEY_HOMEPAGE, PQ1, 1, 0),
+ [2] = GPIO_KEY(KEY_BACK, PQ2, 1, 0),
+ [3] = GPIO_KEY(KEY_AUTO_ROTATION, PQ3, 1, 0),
+ [4] = GPIO_KEY(KEY_VOLUMEDOWN, PQ4, 1, 0),
+ [5] = GPIO_KEY(KEY_VOLUMEUP, PQ5, 1, 0),
+ [6] = GPIO_KEY(KEY_POWER, PC7, 0, 1),
+ [7] = GPIO_KEY(KEY_POWER, PI3, 0, 0),
+};
+
+ */
+ www {
+ label = "www";
+ gpios = <&gpio TEGRA_GPIO(Q, 0) GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_WWW>;
+ };
+
+ homepage {
+ label = "homepage";
+ gpios = <&gpio TEGRA_GPIO(Q, 1) GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_HOMEPAGE>;
+ };
+
+ back {
+ label = "back";
+ gpios = <&gpio TEGRA_GPIO(Q, 2) GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_BACK>;
+ };
+
+ rotation {
+ label = "rotation";
+ gpios = <&gpio TEGRA_GPIO(Q, 3) GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_ROTATE_DISPLAY>;
+ };
+
+ volumedown {
+ label = "volumedown";
+ gpios = <&gpio TEGRA_GPIO(Q, 4) GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_VOLUMEDOWN>;
+ };
+
+ volumeup {
+ label = "volumeup";
+ gpios = <&gpio TEGRA_GPIO(Q, 5) GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_VOLUMEUP>;
+ };
+
power {
label = "Power";
- gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>;
+ gpios = <&gpio TEGRA_GPIO(C, 7) GPIO_ACTIVE_HIGH>;
linux,code = <KEY_POWER>;
wakeup-source;
};
+
+ power2 {
+ label = "Power2";
+ gpios = <&gpio TEGRA_GPIO(I, 3) GPIO_ACTIVE_HIGH>; /* this is power button on device */
+ linux,code = <KEY_POWER2>;
+ };
+
+ /* Charl5es 0508 start
+ * wakeup source
+ *
+ * PC7 EXIT_LP0
+ * PV2 AP_ONKEY
+ * PV3 AP_ACOK
+ * PI3 POWEROFF_AP
+ */
+
+ psensor { /* IQS128 on separate board with 3 wires */
+ label = "proximity";
+ gpios = <&gpio TEGRA_GPIO(C, 1) GPIO_ACTIVE_HIGH>;
+ linux,code = <KEY_DASHBOARD>; /* include/uapi/linux/input-event-codes.h */
+ };
};
panel: panel {
- compatible = "chunghwa,claa101wa01a", "simple-panel";
+ compatible = "lg,lp101wx1", "simple-panel";
power-supply = <&vdd_pnl_reg>;
enable-gpios = <&gpio TEGRA_GPIO(B, 2) GPIO_ACTIVE_HIGH>;
backlight = <&backlight>;
ddc-i2c-bus = <&lvds_ddc>;
+
+ x-display-timings {
+ timing@0 {
+ /* XXX tegra_dc_mode ventana_panel_modes -- works for u-boot */
+ clock-frequency = <72072000>;
+ hactive = <1280>;
+ vactive = <800>;
+ hback-porch = <72>;
+ hfront-porch = <48>;
+ hsync-len = <32>;
+ vback-porch = <22>;
+ vfront-porch = <3>;
+ vsync-len = <7>;
+ hsync-active = <1>;
+ };
+ };
};
regulators {
nvidia,audio-codec = <&wm8903>;
nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>;
- nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_HIGH>;
+ nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_HIGH>; /* ok */
+/*
nvidia,int-mic-en-gpios = <&gpio TEGRA_GPIO(X, 0)
GPIO_ACTIVE_HIGH>;
- nvidia,ext-mic-en-gpios = <&gpio TEGRA_GPIO(X, 1)
+*/
+ nvidia,ext-mic-en-gpios = <&gpio TEGRA_GPIO(W, 3) /* fixed */
GPIO_ACTIVE_HIGH>;
clocks = <&tegra_car TEGRA20_CLK_PLL_A>,
<&tegra_car TEGRA20_CLK_CDEV1>;
clock-names = "pll_a", "pll_a_out0", "mclk";
};
+
+ cpus {
+ cpu0: cpu@0 {
+ cpu-supply = <&cpu_vdd_reg>;
+ core-supply = <&core_vdd_reg>;
+ rtc-supply = <&rtc_vdd_reg>;
+ };
+ };
};