added proxymity sensor IQS128 as input device
[linux] / arch / arm / boot / dts / tegra20-ventana.dts
index f44551e..c367dc7 100644 (file)
@@ -5,7 +5,7 @@
 #include "tegra20.dtsi"
 
 / {
-       model = "NVIDIA Tegra20 Ventana evaluation board";
+       model = "Thinkpad Tablet paz00";
        compatible = "nvidia,ventana", "nvidia,tegra20";
 
        aliases {
@@ -16,6 +16,7 @@
 
        chosen {
                stdout-path = "serial0:115200n8";
+               bootargs = "mem=1024M@0M usbcore.old_scheme_first=1";
        };
 
        memory@0 {
@@ -28,6 +29,7 @@
                                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>;
+               };
+       };
 };