• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 */
7
8/dts-v1/;
9
10#include "omap3-n950-n9.dtsi"
11#include <dt-bindings/input/input.h>
12
13/ {
14	model = "Nokia N950";
15	compatible = "nokia,omap3-n950", "ti,omap36xx", "ti,omap3";
16
17	keys {
18		compatible = "gpio-keys";
19
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	};
30};
31
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	};
38};
39
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	};
49};
50
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	};
62
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	};
69};
70
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		nokia,nvm-size = <(16 * 64)>;
80		flash-leds = <&as3645a_flash &as3645a_indicator>;
81		port {
82			smia_1_1: endpoint {
83				link-frequencies = /bits/ 64 <210000000 333600000 398400000>;
84				clock-lanes = <0>;
85				data-lanes = <1 2>;
86				remote-endpoint = <&csi2a_ep>;
87			};
88		};
89	};
90};
91
92&isp {
93	vdd-csiphy1-supply = <&vaux2>;
94	vdd-csiphy2-supply = <&vaux2>;
95	ports {
96		port@2 {
97			reg = <2>;
98			csi2a_ep: endpoint {
99				remote-endpoint = <&smia_1_1>;
100				clock-lanes = <2>;
101				data-lanes = <3 1>;
102				crc = <1>;
103				lane-polarities = <1 1 1>;
104			};
105		};
106	};
107};
108
109&mcspi4 {
110	status = "okay";
111	pinctrl-names = "default";
112	pinctrl-0 = <&spi4_pins>;
113
114	wlcore: wlcore@0 {
115		compatible = "ti,wl1271";
116		pinctrl-names = "default";
117		pinctrl-0 = <&wlan_pins>;
118		reg = <0>;
119		spi-max-frequency = <48000000>;
120		clock-xtal;
121		ref-clock-frequency = <38400000>;
122		interrupts-extended = <&gpio2 10 IRQ_TYPE_LEVEL_HIGH>; /* gpio 42 */
123		vwlan-supply = <&vwlan_fixed>;
124	};
125};
126
127&modem {
128	compatible = "nokia,n950-modem";
129};
130
131&twl {
132	twl_audio: audio {
133		compatible = "ti,twl4030-audio";
134		ti,enable-vibra = <1>;
135	};
136};
137
138&twl_keypad {
139	linux,keymap = < MATRIX_KEY(0x00, 0x00, KEY_BACKSLASH)
140			 MATRIX_KEY(0x01, 0x00, KEY_LEFTSHIFT)
141			 MATRIX_KEY(0x02, 0x00, KEY_COMPOSE)
142			 MATRIX_KEY(0x03, 0x00, KEY_LEFTMETA)
143			 MATRIX_KEY(0x04, 0x00, KEY_RIGHTCTRL)
144			 MATRIX_KEY(0x05, 0x00, KEY_BACKSPACE)
145			 MATRIX_KEY(0x06, 0x00, KEY_VOLUMEDOWN)
146			 MATRIX_KEY(0x07, 0x00, KEY_VOLUMEUP)
147
148			 MATRIX_KEY(0x03, 0x01, KEY_Z)
149			 MATRIX_KEY(0x04, 0x01, KEY_A)
150			 MATRIX_KEY(0x05, 0x01, KEY_Q)
151			 MATRIX_KEY(0x06, 0x01, KEY_W)
152			 MATRIX_KEY(0x07, 0x01, KEY_E)
153
154			 MATRIX_KEY(0x03, 0x02, KEY_X)
155			 MATRIX_KEY(0x04, 0x02, KEY_S)
156			 MATRIX_KEY(0x05, 0x02, KEY_D)
157			 MATRIX_KEY(0x06, 0x02, KEY_C)
158			 MATRIX_KEY(0x07, 0x02, KEY_V)
159
160			 MATRIX_KEY(0x03, 0x03, KEY_O)
161			 MATRIX_KEY(0x04, 0x03, KEY_I)
162			 MATRIX_KEY(0x05, 0x03, KEY_U)
163			 MATRIX_KEY(0x06, 0x03, KEY_L)
164			 MATRIX_KEY(0x07, 0x03, KEY_APOSTROPHE)
165
166			 MATRIX_KEY(0x03, 0x04, KEY_Y)
167			 MATRIX_KEY(0x04, 0x04, KEY_K)
168			 MATRIX_KEY(0x05, 0x04, KEY_J)
169			 MATRIX_KEY(0x06, 0x04, KEY_H)
170			 MATRIX_KEY(0x07, 0x04, KEY_G)
171
172			 MATRIX_KEY(0x03, 0x05, KEY_B)
173			 MATRIX_KEY(0x04, 0x05, KEY_COMMA)
174			 MATRIX_KEY(0x05, 0x05, KEY_M)
175			 MATRIX_KEY(0x06, 0x05, KEY_N)
176			 MATRIX_KEY(0x07, 0x05, KEY_DOT)
177
178			 MATRIX_KEY(0x00, 0x06, KEY_SPACE)
179			 MATRIX_KEY(0x03, 0x06, KEY_T)
180			 MATRIX_KEY(0x04, 0x06, KEY_UP)
181			 MATRIX_KEY(0x05, 0x06, KEY_LEFT)
182			 MATRIX_KEY(0x06, 0x06, KEY_RIGHT)
183			 MATRIX_KEY(0x07, 0x06, KEY_DOWN)
184
185			 MATRIX_KEY(0x03, 0x07, KEY_P)
186			 MATRIX_KEY(0x04, 0x07, KEY_ENTER)
187			 MATRIX_KEY(0x05, 0x07, KEY_SLASH)
188			 MATRIX_KEY(0x06, 0x07, KEY_F)
189			 MATRIX_KEY(0x07, 0x07, KEY_R)
190			 >;
191};
192
193&lis302 {
194	st,axis-x = <(-2)>; /* LIS3_INV_DEV_Y */
195	st,axis-y = <(-1)>; /* LIS3_INV_DEV_X */
196	st,axis-z = <(-3)>; /* LIS3_INV_DEV_Z */
197
198	st,min-limit-x = <(-32)>;
199	st,min-limit-y = <3>;
200	st,min-limit-z = <3>;
201
202	st,max-limit-x = <(-3)>;
203	st,max-limit-y = <32>;
204	st,max-limit-z = <32>;
205};
206
207&dss {
208	status = "ok";
209
210	vdda_video-supply = <&vdac>;
211};
212
213&dsi {
214	status = "ok";
215
216	pinctrl-names = "default";
217	pinctrl-0 = <&dsi_pins>;
218
219	vdd-supply = <&vpll2>;
220
221	port {
222		dsi_out_ep: endpoint {
223			remote-endpoint = <&lcd0_in>;
224			lanes = <2 3 0 1 4 5>;
225		};
226	};
227
228	lcd0: display {
229		compatible = "nokia,himalaya", "panel-dsi-cm";
230		label = "lcd0";
231
232		pinctrl-names = "default";
233		pinctrl-0 = <&display_pins>;
234
235		vpnl-supply = <&vmmc2>;
236		vddi-supply = <&vio>;
237
238		reset-gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;	/* 87 */
239		te-gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>;	/* 62 */
240
241		width-mm = <49>; /* 48.960 mm */
242		height-mm = <88>; /* 88.128 mm */
243
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 */
250
251			hback-porch = <2>;
252			hactive = <480>;
253			hfront-porch = <0>;
254			hsync-len = <2>;
255
256			vback-porch = <1>;
257			vactive = <864>;
258			vfront-porch = <0>;
259			vsync-len = <1>;
260
261			hsync-active = <0>;
262			vsync-active = <0>;
263			de-active = <1>;
264			pixelclk-active = <1>;
265		};
266
267		port {
268			lcd0_in: endpoint {
269				remote-endpoint = <&dsi_out_ep>;
270			};
271		};
272	};
273};
274