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