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