WIP FPC-III support
[linux/fpc-iii.git] / arch / arm / boot / dts / omap3-n950.dts
blobb2f480022ff6e24edd3937e76e87c48882b7bf20
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * omap3-n950.dts - Device Tree file for Nokia N950
4  *
5  * Written by: Aaro Koskinen <aaro.koskinen@iki.fi>
6  */
8 /dts-v1/;
10 #include "omap3-n950-n9.dtsi"
11 #include <dt-bindings/input/input.h>
13 / {
14         model = "Nokia N950";
15         compatible = "nokia,omap3-n950", "ti,omap3630", "ti,omap36xx", "ti,omap3";
17         keys {
18                 compatible = "gpio-keys";
20                 keypad_slide {
21                         label = "Keypad Slide";
22                         gpios = <&gpio4 13 GPIO_ACTIVE_LOW>; /* 109 */
23                         linux,input-type = <EV_SW>;
24                         linux,code = <SW_KEYPAD_SLIDE>;
25                         wakeup-source;
26                         pinctrl-names = "default";
27                         pinctrl-0 = <&keypad_slide_pins>;
28                 };
29         };
32 &omap3_pmx_core {
33         keypad_slide_pins: pinmux_debug_led_pins {
34                 pinctrl-single,pins = <
35                         OMAP3_CORE1_IOPAD(0x212a, PIN_INPUT | MUX_MODE4)       /* cam_d10.gpio_109 */
36                 >;
37         };
40 &omap3_pmx_core {
41         spi4_pins: pinmux_spi4_pins {
42                 pinctrl-single,pins = <
43                         OMAP3_CORE1_IOPAD(0x218c, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_clk */
44                         OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE1) /* mcspi4_simo */
45                         OMAP3_CORE1_IOPAD(0x2192, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_somi */
46                         OMAP3_CORE1_IOPAD(0x2196, PIN_OUTPUT | MUX_MODE1) /* mcspi4_cs0 */
47                 >;
48         };
51 &omap3_pmx_core {
52         dsi_pins: pinmux_dsi_pins {
53                 pinctrl-single,pins = <
54                         OMAP3_CORE1_IOPAD(0x20dc, PIN_OUTPUT | MUX_MODE1) /* dsi_dx0 - data0+ */
55                         OMAP3_CORE1_IOPAD(0x20de, PIN_OUTPUT | MUX_MODE1) /* dsi_dy0 - data0- */
56                         OMAP3_CORE1_IOPAD(0x20e0, PIN_OUTPUT | MUX_MODE1) /* dsi_dx1 - clk+   */
57                         OMAP3_CORE1_IOPAD(0x20e2, PIN_OUTPUT | MUX_MODE1) /* dsi_dy1 - clk-   */
58                         OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE1) /* dsi_dx2 - data1+ */
59                         OMAP3_CORE1_IOPAD(0x20e6, PIN_OUTPUT | MUX_MODE1) /* dsi_dy2 - data1- */
60                 >;
61         };
63         display_pins: pinmux_display_pins {
64                 pinctrl-single,pins = <
65                         OMAP3_CORE1_IOPAD(0x20ca, PIN_INPUT | MUX_MODE4) /* gpio 62 - display te */
66                         OMAP3_CORE1_IOPAD(0x20fe, PIN_OUTPUT | MUX_MODE4) /* gpio 87 - display reset */
67                 >;
68         };
71 &i2c2 {
72         smia_1: camera@10 {
73                 compatible = "nokia,smia";
74                 reg = <0x10>;
75                 /* No reset gpio */
76                 vana-supply = <&vaux3>;
77                 clocks = <&isp 0>;
78                 clock-frequency = <9600000>;
79                 flash-leds = <&as3645a_flash &as3645a_indicator>;
80                 port {
81                         smia_1_1: endpoint {
82                                 link-frequencies = /bits/ 64 <210000000 333600000 398400000>;
83                                 clock-lanes = <0>;
84                                 data-lanes = <1 2>;
85                                 remote-endpoint = <&csi2a_ep>;
86                         };
87                 };
88         };
91 &isp {
92         vdd-csiphy1-supply = <&vaux2>;
93         vdd-csiphy2-supply = <&vaux2>;
94         ports {
95                 port@2 {
96                         reg = <2>;
97                         csi2a_ep: endpoint {
98                                 remote-endpoint = <&smia_1_1>;
99                                 clock-lanes = <2>;
100                                 data-lanes = <3 1>;
101                                 crc = <1>;
102                                 lane-polarities = <1 1 1>;
103                         };
104                 };
105         };
108 &mcspi4 {
109         status = "okay";
110         pinctrl-names = "default";
111         pinctrl-0 = <&spi4_pins>;
113         wlcore: wlcore@0 {
114                 compatible = "ti,wl1271";
115                 pinctrl-names = "default";
116                 pinctrl-0 = <&wlan_pins>;
117                 reg = <0>;
118                 spi-max-frequency = <48000000>;
119                 clock-xtal;
120                 ref-clock-frequency = <38400000>;
121                 interrupts-extended = <&gpio2 10 IRQ_TYPE_LEVEL_HIGH>; /* gpio 42 */
122                 vwlan-supply = <&vwlan_fixed>;
123         };
126 &modem {
127         compatible = "nokia,n950-modem";
130 &twl {
131         twl_audio: audio {
132                 compatible = "ti,twl4030-audio";
133                 ti,enable-vibra = <1>;
134         };
137 &twl_keypad {
138         linux,keymap = < MATRIX_KEY(0x00, 0x00, KEY_BACKSLASH)
139                          MATRIX_KEY(0x01, 0x00, KEY_LEFTSHIFT)
140                          MATRIX_KEY(0x02, 0x00, KEY_COMPOSE)
141                          MATRIX_KEY(0x03, 0x00, KEY_LEFTMETA)
142                          MATRIX_KEY(0x04, 0x00, KEY_RIGHTCTRL)
143                          MATRIX_KEY(0x05, 0x00, KEY_BACKSPACE)
144                          MATRIX_KEY(0x06, 0x00, KEY_VOLUMEDOWN)
145                          MATRIX_KEY(0x07, 0x00, KEY_VOLUMEUP)
147                          MATRIX_KEY(0x03, 0x01, KEY_Z)
148                          MATRIX_KEY(0x04, 0x01, KEY_A)
149                          MATRIX_KEY(0x05, 0x01, KEY_Q)
150                          MATRIX_KEY(0x06, 0x01, KEY_W)
151                          MATRIX_KEY(0x07, 0x01, KEY_E)
153                          MATRIX_KEY(0x03, 0x02, KEY_X)
154                          MATRIX_KEY(0x04, 0x02, KEY_S)
155                          MATRIX_KEY(0x05, 0x02, KEY_D)
156                          MATRIX_KEY(0x06, 0x02, KEY_C)
157                          MATRIX_KEY(0x07, 0x02, KEY_V)
159                          MATRIX_KEY(0x03, 0x03, KEY_O)
160                          MATRIX_KEY(0x04, 0x03, KEY_I)
161                          MATRIX_KEY(0x05, 0x03, KEY_U)
162                          MATRIX_KEY(0x06, 0x03, KEY_L)
163                          MATRIX_KEY(0x07, 0x03, KEY_APOSTROPHE)
165                          MATRIX_KEY(0x03, 0x04, KEY_Y)
166                          MATRIX_KEY(0x04, 0x04, KEY_K)
167                          MATRIX_KEY(0x05, 0x04, KEY_J)
168                          MATRIX_KEY(0x06, 0x04, KEY_H)
169                          MATRIX_KEY(0x07, 0x04, KEY_G)
171                          MATRIX_KEY(0x03, 0x05, KEY_B)
172                          MATRIX_KEY(0x04, 0x05, KEY_COMMA)
173                          MATRIX_KEY(0x05, 0x05, KEY_M)
174                          MATRIX_KEY(0x06, 0x05, KEY_N)
175                          MATRIX_KEY(0x07, 0x05, KEY_DOT)
177                          MATRIX_KEY(0x00, 0x06, KEY_SPACE)
178                          MATRIX_KEY(0x03, 0x06, KEY_T)
179                          MATRIX_KEY(0x04, 0x06, KEY_UP)
180                          MATRIX_KEY(0x05, 0x06, KEY_LEFT)
181                          MATRIX_KEY(0x06, 0x06, KEY_RIGHT)
182                          MATRIX_KEY(0x07, 0x06, KEY_DOWN)
184                          MATRIX_KEY(0x03, 0x07, KEY_P)
185                          MATRIX_KEY(0x04, 0x07, KEY_ENTER)
186                          MATRIX_KEY(0x05, 0x07, KEY_SLASH)
187                          MATRIX_KEY(0x06, 0x07, KEY_F)
188                          MATRIX_KEY(0x07, 0x07, KEY_R)
189                          >;
192 &lis302 {
193         st,axis-x = <(-2)>; /* LIS3_INV_DEV_Y */
194         st,axis-y = <(-1)>; /* LIS3_INV_DEV_X */
195         st,axis-z = <(-3)>; /* LIS3_INV_DEV_Z */
197         st,min-limit-x = <(-32)>;
198         st,min-limit-y = <3>;
199         st,min-limit-z = <3>;
201         st,max-limit-x = <(-3)>;
202         st,max-limit-y = <32>;
203         st,max-limit-z = <32>;
206 &dss {
207         status = "okay";
209         vdda_video-supply = <&vdac>;
212 &dsi {
213         status = "okay";
215         pinctrl-names = "default";
216         pinctrl-0 = <&dsi_pins>;
218         vdd-supply = <&vpll2>;
220         port {
221                 dsi_out_ep: endpoint {
222                         remote-endpoint = <&lcd0_in>;
223                         lanes = <2 3 0 1 4 5>;
224                 };
225         };
227         lcd0: panel@0 {
228                 compatible = "nokia,himalaya", "panel-dsi-cm";
229                 reg = <0>;
230                 label = "lcd0";
232                 pinctrl-names = "default";
233                 pinctrl-0 = <&display_pins>;
235                 vpnl-supply = <&vmmc2>;
236                 vddi-supply = <&vio>;
238                 reset-gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;     /* 87 */
239                 te-gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>;        /* 62 */
241                 width-mm = <49>; /* 48.960 mm */
242                 height-mm = <88>; /* 88.128 mm */
244                 /* TODO:
245                  * - panel is upside-down
246                  * - top + bottom 5px are not visible
247                  */
248                 panel-timing {
249                         clock-frequency = <0>;          /* Calculated by dsi */
251                         hback-porch = <2>;
252                         hactive = <480>;
253                         hfront-porch = <0>;
254                         hsync-len = <2>;
256                         vback-porch = <1>;
257                         vactive = <864>;
258                         vfront-porch = <0>;
259                         vsync-len = <1>;
261                         hsync-active = <0>;
262                         vsync-active = <0>;
263                         de-active = <1>;
264                         pixelclk-active = <1>;
265                 };
267                 port {
268                         lcd0_in: endpoint {
269                                 remote-endpoint = <&dsi_out_ep>;
270                         };
271                 };
272         };