blob: c3c6d7d04a76c2416983b97c1f8f8c788ed3fcc0 [file] [log] [blame]
Thomas Gleixner3a63cbb2019-05-19 15:51:33 +02001// SPDX-License-Identifier: GPL-2.0-or-later
Pavel Macheka4d4b152013-08-13 15:36:36 +02002/*
3 * Copyright (C) 2013 Pavel Machek <pavel@ucw.cz>
Aaro Koskinenc3580bc2014-02-09 14:12:36 +02004 * Copyright (C) 2013-2014 Aaro Koskinen <aaro.koskinen@iki.fi>
Pavel Macheka4d4b152013-08-13 15:36:36 +02005 */
6
7/dts-v1/;
8
Pali Rohár69540a72015-02-26 14:49:58 +01009#include "omap34xx.dtsi"
Sebastian Reichel3fdb7712014-05-06 15:14:28 +020010#include <dt-bindings/input/input.h>
Pavel Macheka4d4b152013-08-13 15:36:36 +020011
Pali Rohár69540a72015-02-26 14:49:58 +010012/*
13 * Default secure signed bootloader (Nokia X-Loader) does not enable L3 firewall
14 * for omap AES HW crypto support. When linux kernel try to access memory of AES
15 * blocks then kernel receive "Unhandled fault: external abort on non-linefetch"
16 * and crash. Until somebody fix omap-aes.c and omap_hwmod_3xxx_data.c code (no
17 * crash anymore) omap AES support will be disabled for all Nokia N900 devices.
18 * There is "unofficial" version of bootloader which enables AES in L3 firewall
19 * but it is not widely used and to prevent kernel crash rather AES is disabled.
20 * There is also no runtime detection code if AES is disabled in L3 firewall...
21 */
22&aes {
23 status = "disabled";
24};
25
Pavel Macheka4d4b152013-08-13 15:36:36 +020026/ {
27 model = "Nokia N900";
Aaro Koskinenc3580bc2014-02-09 14:12:36 +020028 compatible = "nokia,omap3-n900", "ti,omap3430", "ti,omap3";
Pavel Macheka4d4b152013-08-13 15:36:36 +020029
Ivaylo Dimitrov1861cda2015-02-08 17:48:56 +020030 aliases {
31 i2c0;
32 i2c1 = &i2c1;
33 i2c2 = &i2c2;
34 i2c3 = &i2c3;
Ivaylo Dimitrovcbe92b02018-01-12 15:47:18 -080035 display0 = &lcd;
36 display1 = &tv;
Ivaylo Dimitrov1861cda2015-02-08 17:48:56 +020037 };
38
Pavel Macheka4d4b152013-08-13 15:36:36 +020039 cpus {
40 cpu@0 {
41 cpu0-supply = <&vcc>;
42 };
43 };
44
Tony Lindgrenc1be2032014-05-05 17:27:38 -070045 leds {
46 compatible = "gpio-leds";
47 heartbeat {
48 label = "debug::sleep";
Pavel Machekf585a152016-10-11 10:12:43 +020049 gpios = <&gpio6 2 GPIO_ACTIVE_HIGH>; /* 162 */
Tony Lindgrenc1be2032014-05-05 17:27:38 -070050 linux,default-trigger = "default-on";
51 pinctrl-names = "default";
52 pinctrl-0 = <&debug_leds>;
53 };
54 };
55
Javier Martinez Canillas81777ff2016-08-31 12:35:27 +020056 memory@80000000 {
Pavel Macheka4d4b152013-08-13 15:36:36 +020057 device_type = "memory";
58 reg = <0x80000000 0x10000000>; /* 256 MB */
59 };
60
Sebastian Reichel3931c8392013-10-23 00:49:34 +020061 gpio_keys {
62 compatible = "gpio-keys";
63
64 camera_lens_cover {
65 label = "Camera Lens Cover";
66 gpios = <&gpio4 14 GPIO_ACTIVE_LOW>; /* 110 */
Pali Rohár97d7f2f2016-02-21 12:06:48 +010067 linux,input-type = <EV_SW>;
68 linux,code = <SW_CAMERA_LENS_COVER>;
Ivaylo Dimitrov05cf1e02016-02-22 16:42:59 +020069 linux,can-disable;
Sebastian Reichel3931c8392013-10-23 00:49:34 +020070 };
71
72 camera_focus {
73 label = "Camera Focus";
74 gpios = <&gpio3 4 GPIO_ACTIVE_LOW>; /* 68 */
Pali Rohár97d7f2f2016-02-21 12:06:48 +010075 linux,code = <KEY_CAMERA_FOCUS>;
Ivaylo Dimitrov05cf1e02016-02-22 16:42:59 +020076 linux,can-disable;
Sebastian Reichel3931c8392013-10-23 00:49:34 +020077 };
78
79 camera_capture {
80 label = "Camera Capture";
81 gpios = <&gpio3 5 GPIO_ACTIVE_LOW>; /* 69 */
Pali Rohár97d7f2f2016-02-21 12:06:48 +010082 linux,code = <KEY_CAMERA>;
Ivaylo Dimitrov05cf1e02016-02-22 16:42:59 +020083 linux,can-disable;
Sebastian Reichel3931c8392013-10-23 00:49:34 +020084 };
85
86 lock_button {
87 label = "Lock Button";
88 gpios = <&gpio4 17 GPIO_ACTIVE_LOW>; /* 113 */
Pali Rohár97d7f2f2016-02-21 12:06:48 +010089 linux,code = <KEY_SCREENLOCK>;
Ivaylo Dimitrov05cf1e02016-02-22 16:42:59 +020090 linux,can-disable;
Sebastian Reichel3931c8392013-10-23 00:49:34 +020091 };
92
93 keypad_slide {
94 label = "Keypad Slide";
95 gpios = <&gpio3 7 GPIO_ACTIVE_LOW>; /* 71 */
Pali Rohár97d7f2f2016-02-21 12:06:48 +010096 linux,input-type = <EV_SW>;
97 linux,code = <SW_KEYPAD_SLIDE>;
Ivaylo Dimitrov05cf1e02016-02-22 16:42:59 +020098 linux,can-disable;
Sebastian Reichel3931c8392013-10-23 00:49:34 +020099 };
100
101 proximity_sensor {
102 label = "Proximity Sensor";
103 gpios = <&gpio3 25 GPIO_ACTIVE_HIGH>; /* 89 */
Pali Rohár97d7f2f2016-02-21 12:06:48 +0100104 linux,input-type = <EV_SW>;
105 linux,code = <SW_FRONT_PROXIMITY>;
Ivaylo Dimitrov05cf1e02016-02-22 16:42:59 +0200106 linux,can-disable;
Sebastian Reichel3931c8392013-10-23 00:49:34 +0200107 };
108 };
109
Pali Rohárb9507622016-02-21 12:28:23 +0100110 isp1707: isp1707 {
111 compatible = "nxp,isp1707";
Sebastian Reichele17337a2014-01-11 22:17:02 +0100112 nxp,enable-gpio = <&gpio3 3 GPIO_ACTIVE_HIGH>;
113 usb-phy = <&usb2_phy>;
114 };
Tomi Valkeinen11334202013-12-17 09:33:33 +0200115
116 tv: connector {
Tomi Valkeinen32797b32014-09-02 10:17:20 +0300117 compatible = "composite-video-connector";
Tomi Valkeinen11334202013-12-17 09:33:33 +0200118 label = "tv";
119
120 port {
121 tv_connector_in: endpoint {
122 remote-endpoint = <&venc_out>;
123 };
124 };
125 };
Sebastian Reichelf7d0f2a2014-04-28 16:07:27 +0200126
127 sound: n900-audio {
128 compatible = "nokia,n900-audio";
129
130 nokia,cpu-dai = <&mcbsp2>;
131 nokia,audio-codec = <&tlv320aic3x>, <&tlv320aic3x_aux>;
132 nokia,headphone-amplifier = <&tpa6130a2>;
133
134 tvout-selection-gpios = <&gpio2 8 GPIO_ACTIVE_HIGH>; /* 40 */
135 jack-detection-gpios = <&gpio6 17 GPIO_ACTIVE_HIGH>; /* 177 */
136 eci-switch-gpios = <&gpio6 22 GPIO_ACTIVE_HIGH>; /* 182 */
137 speaker-amplifier-gpios = <&twl_gpio 7 GPIO_ACTIVE_HIGH>;
138 };
Sebastian Reichel28398c62014-11-15 03:08:24 +0100139
140 battery: n900-battery {
141 compatible = "nokia,n900-battery";
142 io-channels = <&twl_madc 0>, <&twl_madc 4>, <&twl_madc 12>;
143 io-channel-names = "temp", "bsi", "vbat";
144 };
Ivaylo Dimitrove7c86822016-05-16 22:34:14 +0300145
Javier Martinez Canillascc9a4bd2016-06-27 15:20:45 -0400146 pwm9: dmtimer-pwm {
Ivaylo Dimitrove7c86822016-05-16 22:34:14 +0300147 compatible = "ti,omap-dmtimer-pwm";
148 #pwm-cells = <3>;
149 ti,timers = <&timer9>;
150 ti,clock-source = <0x00>; /* timer_sys_ck */
151 };
152
153 ir: n900-ir {
154 compatible = "nokia,n900-ir";
155 pwms = <&pwm9 0 26316 0>; /* 38000 Hz */
156 };
Sebastian Reichel3d5c6562017-03-21 23:32:15 +0100157
Tony Lindgren0c0ef9e2019-09-14 14:02:55 -0700158 rom_rng: rng {
159 compatible = "nokia,n900-rom-rng";
160 clocks = <&rng_ick>;
161 clock-names = "ick";
162 };
163
Sebastian Reichel3d5c6562017-03-21 23:32:15 +0100164 /* controlled (enabled/disabled) directly by bcm2048 and wl1251 */
165 vctcxo: vctcxo {
166 compatible = "fixed-clock";
167 #clock-cells = <0>;
168 clock-frequency = <38400000>;
169 };
Pavel Macheka4d4b152013-08-13 15:36:36 +0200170};
171
Pavel Machekd510d122017-08-10 22:49:23 +0200172&isp {
173 vdds_csib-supply = <&vaux2>;
174
175 pinctrl-names = "default";
176 pinctrl-0 = <&camera_pins>;
177
178 ports {
179 port@1 {
180 reg = <1>;
181
182 csi_isp: endpoint {
183 remote-endpoint = <&csi_cam1>;
184 bus-type = <3>; /* CCP2 */
185 clock-lanes = <1>;
186 data-lanes = <0>;
187 lane-polarity = <0 0>;
Pavel Machekd510d122017-08-10 22:49:23 +0200188 /* Select strobe = <1> for back camera, <0> for front camera */
189 strobe = <1>;
Pavel Machekd510d122017-08-10 22:49:23 +0200190 };
191 };
192 };
193};
194
Sebastian Reichelac888a82013-10-23 00:49:30 +0200195&omap3_pmx_core {
196 pinctrl-names = "default";
197
Sebastian Reichel7a89eec2013-10-23 00:49:32 +0200198 uart2_pins: pinmux_uart2_pins {
199 pinctrl-single,pins = <
Sebastian Reichel3d5c6562017-03-21 23:32:15 +0100200 OMAP3_CORE1_IOPAD(0x2174, PIN_INPUT_PULLUP | MUX_MODE0) /* uart2_cts */
201 OMAP3_CORE1_IOPAD(0x2176, PIN_OUTPUT | MUX_MODE0) /* uart2_rts */
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300202 OMAP3_CORE1_IOPAD(0x2178, PIN_OUTPUT | MUX_MODE0) /* uart2_tx */
Sebastian Reichel3d5c6562017-03-21 23:32:15 +0100203 OMAP3_CORE1_IOPAD(0x217a, PIN_INPUT | MUX_MODE0) /* uart2_rx */
Sebastian Reichel7a89eec2013-10-23 00:49:32 +0200204 >;
205 };
206
207 uart3_pins: pinmux_uart3_pins {
208 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300209 OMAP3_CORE1_IOPAD(0x219e, PIN_INPUT | MUX_MODE0) /* uart3_rx */
210 OMAP3_CORE1_IOPAD(0x21a0, PIN_OUTPUT | MUX_MODE0) /* uart3_tx */
Sebastian Reichel7a89eec2013-10-23 00:49:32 +0200211 >;
212 };
213
Tony Lindgren271d4c62014-09-18 09:03:36 -0700214 ethernet_pins: pinmux_ethernet_pins {
215 pinctrl-single,pins = <
216 OMAP3_CORE1_IOPAD(0x20b4, PIN_INPUT_PULLDOWN | MUX_MODE4) /* gpmc_ncs3.gpio_54 */
217 OMAP3_CORE1_IOPAD(0x20fc, PIN_OUTPUT | MUX_MODE4) /* dss_data16.gpio_86 */
218 OMAP3_CORE1_IOPAD(0x219c, PIN_OUTPUT | MUX_MODE4) /* uart3_rts_sd.gpio_164 */
219 >;
220 };
221
Tony Lindgren9a894952014-10-29 17:16:47 -0700222 gpmc_pins: pinmux_gpmc_pins {
223 pinctrl-single,pins = <
224
225 /* address lines */
226 OMAP3_CORE1_IOPAD(0x207a, PIN_OUTPUT | MUX_MODE0) /* gpmc_a1.gpmc_a1 */
227 OMAP3_CORE1_IOPAD(0x207c, PIN_OUTPUT | MUX_MODE0) /* gpmc_a2.gpmc_a2 */
228 OMAP3_CORE1_IOPAD(0x207e, PIN_OUTPUT | MUX_MODE0) /* gpmc_a3.gpmc_a3 */
229
230 /* data lines, gpmc_d0..d7 not muxable according to TRM */
231 OMAP3_CORE1_IOPAD(0x209e, PIN_INPUT | MUX_MODE0) /* gpmc_d8.gpmc_d8 */
232 OMAP3_CORE1_IOPAD(0x20a0, PIN_INPUT | MUX_MODE0) /* gpmc_d9.gpmc_d9 */
233 OMAP3_CORE1_IOPAD(0x20a2, PIN_INPUT | MUX_MODE0) /* gpmc_d10.gpmc_d10 */
234 OMAP3_CORE1_IOPAD(0x20a4, PIN_INPUT | MUX_MODE0) /* gpmc_d11.gpmc_d11 */
235 OMAP3_CORE1_IOPAD(0x20a6, PIN_INPUT | MUX_MODE0) /* gpmc_d12.gpmc_d12 */
236 OMAP3_CORE1_IOPAD(0x20a8, PIN_INPUT | MUX_MODE0) /* gpmc_d13.gpmc_d13 */
237 OMAP3_CORE1_IOPAD(0x20aa, PIN_INPUT | MUX_MODE0) /* gpmc_d14.gpmc_d14 */
238 OMAP3_CORE1_IOPAD(0x20ac, PIN_INPUT | MUX_MODE0) /* gpmc_d15.gpmc_d15 */
239
240 /*
241 * gpmc_ncs0, gpmc_nadv_ale, gpmc_noe, gpmc_nwe, gpmc_wait0 not muxable
242 * according to TRM. OneNAND seems to require PIN_INPUT on clock.
243 */
244 OMAP3_CORE1_IOPAD(0x20b0, PIN_OUTPUT | MUX_MODE0) /* gpmc_ncs1.gpmc_ncs1 */
245 OMAP3_CORE1_IOPAD(0x20be, PIN_INPUT | MUX_MODE0) /* gpmc_clk.gpmc_clk */
246 >;
247 };
248
Sebastian Reichelac888a82013-10-23 00:49:30 +0200249 i2c1_pins: pinmux_i2c1_pins {
250 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300251 OMAP3_CORE1_IOPAD(0x21ba, PIN_INPUT | MUX_MODE0) /* i2c1_scl */
252 OMAP3_CORE1_IOPAD(0x21bc, PIN_INPUT | MUX_MODE0) /* i2c1_sda */
Sebastian Reichelac888a82013-10-23 00:49:30 +0200253 >;
254 };
255
256 i2c2_pins: pinmux_i2c2_pins {
257 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300258 OMAP3_CORE1_IOPAD(0x21be, PIN_INPUT | MUX_MODE0) /* i2c2_scl */
259 OMAP3_CORE1_IOPAD(0x21c0, PIN_INPUT | MUX_MODE0) /* i2c2_sda */
Sebastian Reichelac888a82013-10-23 00:49:30 +0200260 >;
261 };
262
263 i2c3_pins: pinmux_i2c3_pins {
264 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300265 OMAP3_CORE1_IOPAD(0x21c2, PIN_INPUT | MUX_MODE0) /* i2c3_scl */
266 OMAP3_CORE1_IOPAD(0x21c4, PIN_INPUT | MUX_MODE0) /* i2c3_sda */
Sebastian Reichelac888a82013-10-23 00:49:30 +0200267 >;
268 };
Sebastian Reichelf1751cf2013-10-23 00:49:33 +0200269
Tony Lindgrenc1be2032014-05-05 17:27:38 -0700270 debug_leds: pinmux_debug_led_pins {
271 pinctrl-single,pins = <
272 OMAP3_CORE1_IOPAD(0x2198, PIN_OUTPUT | MUX_MODE4) /* mcbsp1_clkx.gpio_162 */
273 >;
274 };
275
Sebastian Reichelc1ad2202014-03-13 22:59:55 +0100276 mcspi4_pins: pinmux_mcspi4_pins {
277 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300278 OMAP3_CORE1_IOPAD(0x218c, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_clk */
279 OMAP3_CORE1_IOPAD(0x2192, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_somi */
280 OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE1) /* mcspi4_simo */
281 OMAP3_CORE1_IOPAD(0x2196, PIN_OUTPUT | MUX_MODE1) /* mcspi4_cs0 */
Sebastian Reichelc1ad2202014-03-13 22:59:55 +0100282 >;
283 };
284
Sebastian Reichelf1751cf2013-10-23 00:49:33 +0200285 mmc1_pins: pinmux_mmc1_pins {
286 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300287 OMAP3_CORE1_IOPAD(0x2144, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_clk */
288 OMAP3_CORE1_IOPAD(0x2146, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_cmd */
289 OMAP3_CORE1_IOPAD(0x2148, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat0 */
290 OMAP3_CORE1_IOPAD(0x214a, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat1 */
291 OMAP3_CORE1_IOPAD(0x214c, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat2 */
292 OMAP3_CORE1_IOPAD(0x214e, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat3 */
Sebastian Reichelf1751cf2013-10-23 00:49:33 +0200293 >;
294 };
Sebastian Reicheld1e6f512013-10-23 00:49:40 +0200295
Tony Lindgrenedd5eb42013-11-25 14:23:45 -0800296 mmc2_pins: pinmux_mmc2_pins {
297 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300298 OMAP3_CORE1_IOPAD(0x2158, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_clk */
299 OMAP3_CORE1_IOPAD(0x215a, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_cmd */
300 OMAP3_CORE1_IOPAD(0x215c, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat0 */
301 OMAP3_CORE1_IOPAD(0x215e, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat1 */
302 OMAP3_CORE1_IOPAD(0x2160, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat2 */
303 OMAP3_CORE1_IOPAD(0x2162, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat3 */
304 OMAP3_CORE1_IOPAD(0x2164, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat4 */
305 OMAP3_CORE1_IOPAD(0x2166, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat5 */
306 OMAP3_CORE1_IOPAD(0x2168, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat6 */
307 OMAP3_CORE1_IOPAD(0x216a, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat7 */
Tony Lindgrenedd5eb42013-11-25 14:23:45 -0800308 >;
309 };
310
Tomi Valkeinen11334202013-12-17 09:33:33 +0200311 acx565akm_pins: pinmux_acx565akm_pins {
Sebastian Reicheld1e6f512013-10-23 00:49:40 +0200312 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300313 OMAP3_CORE1_IOPAD(0x2104, PIN_OUTPUT | MUX_MODE4) /* RX51_LCD_RESET_GPIO */
Sebastian Reicheld1e6f512013-10-23 00:49:40 +0200314 >;
315 };
Tomi Valkeinen11334202013-12-17 09:33:33 +0200316
317 dss_sdi_pins: pinmux_dss_sdi_pins {
318 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300319 OMAP3_CORE1_IOPAD(0x20f0, PIN_OUTPUT | MUX_MODE1) /* dss_data10.sdi_dat1n */
320 OMAP3_CORE1_IOPAD(0x20f2, PIN_OUTPUT | MUX_MODE1) /* dss_data11.sdi_dat1p */
321 OMAP3_CORE1_IOPAD(0x20f4, PIN_OUTPUT | MUX_MODE1) /* dss_data12.sdi_dat2n */
322 OMAP3_CORE1_IOPAD(0x20f6, PIN_OUTPUT | MUX_MODE1) /* dss_data13.sdi_dat2p */
Tomi Valkeinen11334202013-12-17 09:33:33 +0200323
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300324 OMAP3_CORE1_IOPAD(0x2108, PIN_OUTPUT | MUX_MODE1) /* dss_data22.sdi_clkp */
325 OMAP3_CORE1_IOPAD(0x210a, PIN_OUTPUT | MUX_MODE1) /* dss_data23.sdi_clkn */
Tomi Valkeinen11334202013-12-17 09:33:33 +0200326 >;
327 };
Sebastian Reichelc1ad2202014-03-13 22:59:55 +0100328
329 wl1251_pins: pinmux_wl1251 {
330 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300331 OMAP3_CORE1_IOPAD(0x20fe, PIN_OUTPUT | MUX_MODE4) /* gpio 87 => wl1251 enable */
332 OMAP3_CORE1_IOPAD(0x208a, PIN_INPUT | MUX_MODE4) /* gpio 42 => wl1251 irq */
Sebastian Reichelc1ad2202014-03-13 22:59:55 +0100333 >;
334 };
Sebastian Reichel782e25a2014-05-10 18:37:49 +0200335
336 ssi_pins: pinmux_ssi {
337 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300338 OMAP3_CORE1_IOPAD(0x2180, PIN_INPUT_PULLUP | MUX_MODE1) /* ssi1_rdy_tx */
339 OMAP3_CORE1_IOPAD(0x217e, PIN_OUTPUT | MUX_MODE1) /* ssi1_flag_tx */
Tony Lindgrene0e80d42016-05-12 13:29:48 -0700340 OMAP3_CORE1_IOPAD(0x2182, PIN_INPUT | MUX_MODE4) /* ssi1_wake_tx (cawake) */
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300341 OMAP3_CORE1_IOPAD(0x217c, PIN_OUTPUT | MUX_MODE1) /* ssi1_dat_tx */
342 OMAP3_CORE1_IOPAD(0x2184, PIN_INPUT | MUX_MODE1) /* ssi1_dat_rx */
343 OMAP3_CORE1_IOPAD(0x2186, PIN_INPUT | MUX_MODE1) /* ssi1_flag_rx */
344 OMAP3_CORE1_IOPAD(0x2188, PIN_OUTPUT | MUX_MODE1) /* ssi1_rdy_rx */
345 OMAP3_CORE1_IOPAD(0x218a, PIN_OUTPUT | MUX_MODE1) /* ssi1_wake */
Sebastian Reichel782e25a2014-05-10 18:37:49 +0200346 >;
347 };
Sebastian Reichel76ad4ac2014-05-10 18:37:50 +0200348
349 modem_pins: pinmux_modem {
350 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300351 OMAP3_CORE1_IOPAD(0x20dc, PIN_OUTPUT | MUX_MODE4) /* gpio 70 => cmt_apeslpx */
Tony Lindgrene0e80d42016-05-12 13:29:48 -0700352 OMAP3_CORE1_IOPAD(0x20e0, PIN_INPUT | MUX_MODE4) /* gpio 72 => ape_rst_rq */
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300353 OMAP3_CORE1_IOPAD(0x20e2, PIN_OUTPUT | MUX_MODE4) /* gpio 73 => cmt_rst_rq */
354 OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE4) /* gpio 74 => cmt_en */
355 OMAP3_CORE1_IOPAD(0x20e6, PIN_OUTPUT | MUX_MODE4) /* gpio 75 => cmt_rst */
356 OMAP3_CORE1_IOPAD(0x218e, PIN_OUTPUT | MUX_MODE4) /* gpio 157 => cmt_bsi */
Sebastian Reichel76ad4ac2014-05-10 18:37:50 +0200357 >;
358 };
Pavel Machekd510d122017-08-10 22:49:23 +0200359
360 camera_pins: pinmux_camera {
361 pinctrl-single,pins = <
362 OMAP3_CORE1_IOPAD(0x210c, PIN_OUTPUT | MUX_MODE7) /* cam_hs */
363 OMAP3_CORE1_IOPAD(0x210e, PIN_OUTPUT | MUX_MODE7) /* cam_vs */
364 OMAP3_CORE1_IOPAD(0x2110, PIN_OUTPUT | MUX_MODE0) /* cam_xclka */
365 OMAP3_CORE1_IOPAD(0x211e, PIN_OUTPUT | MUX_MODE7) /* cam_d4 */
366 OMAP3_CORE1_IOPAD(0x2122, PIN_INPUT | MUX_MODE0) /* cam_d6 */
367 OMAP3_CORE1_IOPAD(0x2124, PIN_INPUT | MUX_MODE0) /* cam_d7 */
368 OMAP3_CORE1_IOPAD(0x2126, PIN_INPUT | MUX_MODE0) /* cam_d8 */
369 OMAP3_CORE1_IOPAD(0x2128, PIN_INPUT | MUX_MODE0) /* cam_d9 */
370 OMAP3_CORE1_IOPAD(0x212a, PIN_OUTPUT | MUX_MODE7) /* cam_d10 */
371 OMAP3_CORE1_IOPAD(0x212e, PIN_OUTPUT | MUX_MODE7) /* cam_xclkb */
372 OMAP3_CORE1_IOPAD(0x2132, PIN_OUTPUT | MUX_MODE0) /* cam_strobe */
373 >;
374 };
Sebastian Reichelac888a82013-10-23 00:49:30 +0200375};
376
Pavel Macheka4d4b152013-08-13 15:36:36 +0200377&i2c1 {
Sebastian Reichelac888a82013-10-23 00:49:30 +0200378 pinctrl-names = "default";
379 pinctrl-0 = <&i2c1_pins>;
380
Pavel Macheka4d4b152013-08-13 15:36:36 +0200381 clock-frequency = <2200000>;
382
383 twl: twl@48 {
384 reg = <0x48>;
385 interrupts = <7>; /* SYS_NIRQ cascaded to intc */
386 interrupt-parent = <&intc>;
387 };
388};
389
390#include "twl4030.dtsi"
Sebastian Reichelac888a82013-10-23 00:49:30 +0200391#include "twl4030_omap3.dtsi"
Pavel Macheka4d4b152013-08-13 15:36:36 +0200392
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200393&vaux1 {
394 regulator-name = "V28";
395 regulator-min-microvolt = <2800000>;
396 regulator-max-microvolt = <2800000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300397 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Pavel Machek14fd7332014-12-07 17:11:47 +0100398 regulator-always-on; /* due to battery cover sensor */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200399};
400
401&vaux2 {
402 regulator-name = "VCSI";
403 regulator-min-microvolt = <1800000>;
404 regulator-max-microvolt = <1800000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300405 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200406};
407
408&vaux3 {
409 regulator-name = "VMMC2_30";
410 regulator-min-microvolt = <2800000>;
411 regulator-max-microvolt = <3000000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300412 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200413};
414
415&vaux4 {
416 regulator-name = "VCAM_ANA_28";
417 regulator-min-microvolt = <2800000>;
418 regulator-max-microvolt = <2800000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300419 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200420};
421
422&vmmc1 {
423 regulator-name = "VMMC1";
424 regulator-min-microvolt = <1850000>;
425 regulator-max-microvolt = <3150000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300426 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200427};
428
429&vmmc2 {
430 regulator-name = "V28_A";
431 regulator-min-microvolt = <2800000>;
432 regulator-max-microvolt = <3000000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300433 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200434 regulator-always-on; /* due VIO leak to AIC34 VDDs */
435};
436
437&vpll1 {
438 regulator-name = "VPLL";
439 regulator-min-microvolt = <1800000>;
440 regulator-max-microvolt = <1800000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300441 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200442 regulator-always-on;
443};
444
445&vpll2 {
446 regulator-name = "VSDI_CSI";
447 regulator-min-microvolt = <1800000>;
448 regulator-max-microvolt = <1800000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300449 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200450 regulator-always-on;
451};
452
453&vsim {
454 regulator-name = "VMMC2_IO_18";
455 regulator-min-microvolt = <1800000>;
456 regulator-max-microvolt = <1800000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300457 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200458};
459
460&vio {
461 regulator-name = "VIO";
462 regulator-min-microvolt = <1800000>;
463 regulator-max-microvolt = <1800000>;
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200464};
465
466&vintana1 {
467 regulator-name = "VINTANA1";
468 /* fixed to 1500000 */
469 regulator-always-on;
470};
471
472&vintana2 {
473 regulator-name = "VINTANA2";
474 regulator-min-microvolt = <2750000>;
475 regulator-max-microvolt = <2750000>;
476 regulator-always-on;
477};
478
479&vintdig {
480 regulator-name = "VINTDIG";
481 /* fixed to 1500000 */
482 regulator-always-on;
483};
484
Tony Lindgrenbfab07e2019-12-16 14:41:53 -0800485/* First two dma channels are reserved on secure omap3 */
486&sdma {
487 dma-channel-mask = <0xfffffffc>;
488};
489
Sebastian Reichel06ba7a62013-10-23 00:49:35 +0200490&twl {
491 twl_audio: audio {
492 compatible = "ti,twl4030-audio";
493 ti,enable-vibra = <1>;
494 };
Tony Lindgren91888832014-06-16 01:10:22 -0700495
496 twl_power: power {
Tony Lindgrendaebabd2014-08-19 08:24:05 -0700497 compatible = "ti,twl4030-power-n900", "ti,twl4030-power-idle-osc-off";
Tony Lindgren91888832014-06-16 01:10:22 -0700498 ti,use_poweroff;
499 };
Sebastian Reichel06ba7a62013-10-23 00:49:35 +0200500};
501
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100502&twl_keypad {
Sebastian Reichel3fdb7712014-05-06 15:14:28 +0200503 linux,keymap = < MATRIX_KEY(0x00, 0x00, KEY_Q)
504 MATRIX_KEY(0x00, 0x01, KEY_O)
505 MATRIX_KEY(0x00, 0x02, KEY_P)
506 MATRIX_KEY(0x00, 0x03, KEY_COMMA)
507 MATRIX_KEY(0x00, 0x04, KEY_BACKSPACE)
508 MATRIX_KEY(0x00, 0x06, KEY_A)
509 MATRIX_KEY(0x00, 0x07, KEY_S)
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100510
Sebastian Reichel3fdb7712014-05-06 15:14:28 +0200511 MATRIX_KEY(0x01, 0x00, KEY_W)
512 MATRIX_KEY(0x01, 0x01, KEY_D)
513 MATRIX_KEY(0x01, 0x02, KEY_F)
514 MATRIX_KEY(0x01, 0x03, KEY_G)
515 MATRIX_KEY(0x01, 0x04, KEY_H)
516 MATRIX_KEY(0x01, 0x05, KEY_J)
517 MATRIX_KEY(0x01, 0x06, KEY_K)
518 MATRIX_KEY(0x01, 0x07, KEY_L)
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100519
Sebastian Reichel3fdb7712014-05-06 15:14:28 +0200520 MATRIX_KEY(0x02, 0x00, KEY_E)
521 MATRIX_KEY(0x02, 0x01, KEY_DOT)
522 MATRIX_KEY(0x02, 0x02, KEY_UP)
523 MATRIX_KEY(0x02, 0x03, KEY_ENTER)
524 MATRIX_KEY(0x02, 0x05, KEY_Z)
525 MATRIX_KEY(0x02, 0x06, KEY_X)
526 MATRIX_KEY(0x02, 0x07, KEY_C)
527 MATRIX_KEY(0x02, 0x08, KEY_F9)
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100528
Sebastian Reichel3fdb7712014-05-06 15:14:28 +0200529 MATRIX_KEY(0x03, 0x00, KEY_R)
530 MATRIX_KEY(0x03, 0x01, KEY_V)
531 MATRIX_KEY(0x03, 0x02, KEY_B)
532 MATRIX_KEY(0x03, 0x03, KEY_N)
533 MATRIX_KEY(0x03, 0x04, KEY_M)
534 MATRIX_KEY(0x03, 0x05, KEY_SPACE)
535 MATRIX_KEY(0x03, 0x06, KEY_SPACE)
536 MATRIX_KEY(0x03, 0x07, KEY_LEFT)
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100537
Sebastian Reichel3fdb7712014-05-06 15:14:28 +0200538 MATRIX_KEY(0x04, 0x00, KEY_T)
539 MATRIX_KEY(0x04, 0x01, KEY_DOWN)
540 MATRIX_KEY(0x04, 0x02, KEY_RIGHT)
541 MATRIX_KEY(0x04, 0x04, KEY_LEFTCTRL)
542 MATRIX_KEY(0x04, 0x05, KEY_RIGHTALT)
543 MATRIX_KEY(0x04, 0x06, KEY_LEFTSHIFT)
544 MATRIX_KEY(0x04, 0x08, KEY_F10)
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100545
Sebastian Reichel3fdb7712014-05-06 15:14:28 +0200546 MATRIX_KEY(0x05, 0x00, KEY_Y)
547 MATRIX_KEY(0x05, 0x08, KEY_F11)
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100548
Sebastian Reichel3fdb7712014-05-06 15:14:28 +0200549 MATRIX_KEY(0x06, 0x00, KEY_U)
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100550
Sebastian Reichel3fdb7712014-05-06 15:14:28 +0200551 MATRIX_KEY(0x07, 0x00, KEY_I)
552 MATRIX_KEY(0x07, 0x01, KEY_F7)
553 MATRIX_KEY(0x07, 0x02, KEY_F8)
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100554 >;
555};
556
Pavel Macheka4d4b152013-08-13 15:36:36 +0200557&twl_gpio {
558 ti,pullups = <0x0>;
559 ti,pulldowns = <0x03ff3f>; /* BIT(0..5) | BIT(8..17) */
560};
561
562&i2c2 {
Sebastian Reichelac888a82013-10-23 00:49:30 +0200563 pinctrl-names = "default";
564 pinctrl-0 = <&i2c2_pins>;
565
Sebastian Reichel48fc9862013-10-23 00:49:31 +0200566 clock-frequency = <100000>;
Sebastian Reichelb2b9b252013-10-23 00:49:36 +0200567
Sebastian Reichel14e3e292013-10-23 00:49:41 +0200568 tlv320aic3x: tlv320aic3x@18 {
569 compatible = "ti,tlv320aic3x";
570 reg = <0x18>;
Andrew F. Davis7be4b5d2017-11-29 11:13:59 -0600571 reset-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>; /* 60 */
Sebastian Reichel14e3e292013-10-23 00:49:41 +0200572 ai3x-gpio-func = <
573 0 /* AIC3X_GPIO1_FUNC_DISABLED */
574 5 /* AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT */
575 >;
576
577 AVDD-supply = <&vmmc2>;
578 DRVDD-supply = <&vmmc2>;
579 IOVDD-supply = <&vio>;
580 DVDD-supply = <&vio>;
Pavel Machek1819e302015-03-01 21:07:08 +0200581
582 ai3x-micbias-vg = <1>;
Sebastian Reichel14e3e292013-10-23 00:49:41 +0200583 };
584
585 tlv320aic3x_aux: tlv320aic3x@19 {
586 compatible = "ti,tlv320aic3x";
587 reg = <0x19>;
Andrew F. Davis7be4b5d2017-11-29 11:13:59 -0600588 reset-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>; /* 60 */
Sebastian Reichel14e3e292013-10-23 00:49:41 +0200589
590 AVDD-supply = <&vmmc2>;
591 DRVDD-supply = <&vmmc2>;
592 IOVDD-supply = <&vio>;
593 DVDD-supply = <&vio>;
Pavel Machek1819e302015-03-01 21:07:08 +0200594
595 ai3x-micbias-vg = <2>;
Sebastian Reichel14e3e292013-10-23 00:49:41 +0200596 };
597
Sebastian Reichel12f2f872014-01-11 22:17:00 +0100598 tsl2563: tsl2563@29 {
599 compatible = "amstaos,tsl2563";
600 reg = <0x29>;
601
602 amstaos,cover-comp-gain = <16>;
603 };
604
Pali Rohár14628e42015-12-26 00:40:12 +0100605 adp1653: led-controller@30 {
606 compatible = "adi,adp1653";
607 reg = <0x30>;
608 enable-gpios = <&gpio3 24 GPIO_ACTIVE_HIGH>; /* 88 */
609
610 flash {
611 flash-timeout-us = <500000>;
612 flash-max-microamp = <320000>;
613 led-max-microamp = <50000>;
614 };
615 indicator {
616 led-max-microamp = <17500>;
617 };
618 };
619
Sebastian Reichela0bf1f32013-10-23 00:49:42 +0200620 lp5523: lp5523@32 {
621 compatible = "national,lp5523";
622 reg = <0x32>;
623 clock-mode = /bits/ 8 <0>; /* LP55XX_CLOCK_AUTO */
624 enable-gpio = <&gpio2 9 GPIO_ACTIVE_HIGH>; /* 41 */
625
626 chan0 {
627 chan-name = "lp5523:kb1";
628 led-cur = /bits/ 8 <50>;
629 max-cur = /bits/ 8 <100>;
630 };
631
632 chan1 {
633 chan-name = "lp5523:kb2";
634 led-cur = /bits/ 8 <50>;
635 max-cur = /bits/ 8 <100>;
636 };
637
638 chan2 {
639 chan-name = "lp5523:kb3";
640 led-cur = /bits/ 8 <50>;
641 max-cur = /bits/ 8 <100>;
642 };
643
644 chan3 {
645 chan-name = "lp5523:kb4";
646 led-cur = /bits/ 8 <50>;
647 max-cur = /bits/ 8 <100>;
648 };
649
650 chan4 {
651 chan-name = "lp5523:b";
652 led-cur = /bits/ 8 <50>;
653 max-cur = /bits/ 8 <100>;
654 };
655
656 chan5 {
657 chan-name = "lp5523:g";
658 led-cur = /bits/ 8 <50>;
659 max-cur = /bits/ 8 <100>;
660 };
661
662 chan6 {
663 chan-name = "lp5523:r";
664 led-cur = /bits/ 8 <50>;
665 max-cur = /bits/ 8 <100>;
666 };
667
668 chan7 {
669 chan-name = "lp5523:kb5";
670 led-cur = /bits/ 8 <50>;
671 max-cur = /bits/ 8 <100>;
672 };
673
674 chan8 {
675 chan-name = "lp5523:kb6";
676 led-cur = /bits/ 8 <50>;
677 max-cur = /bits/ 8 <100>;
678 };
679 };
680
Sebastian Reichelb2b9b252013-10-23 00:49:36 +0200681 bq27200: bq27200@55 {
682 compatible = "ti,bq27200";
683 reg = <0x55>;
Sebastian Reichel3c6b4f42018-02-22 21:06:33 +0100684 power-supplies = <&bq24150a>;
Sebastian Reichelb2b9b252013-10-23 00:49:36 +0200685 };
Sebastian Reichel9e2367c2014-01-11 22:17:01 +0100686
Pavel Machekf585a152016-10-11 10:12:43 +0200687 /* Stereo headphone amplifier */
Sebastian Reichel9e2367c2014-01-11 22:17:01 +0100688 tpa6130a2: tpa6130a2@60 {
689 compatible = "ti,tpa6130a2";
690 reg = <0x60>;
691
692 Vdd-supply = <&vmmc2>;
693
694 power-gpio = <&gpio4 2 GPIO_ACTIVE_HIGH>; /* 98 */
695 };
Sebastian Reichel334a09c2014-01-11 22:17:03 +0100696
Sebastian Reichel406c07e2014-11-15 02:47:30 +0100697 si4713: si4713@63 {
698 compatible = "silabs,si4713";
699 reg = <0x63>;
700
701 interrupts-extended = <&gpio2 21 IRQ_TYPE_EDGE_FALLING>; /* 53 */
702 reset-gpios = <&gpio6 3 GPIO_ACTIVE_HIGH>; /* 163 */
703 vio-supply = <&vio>;
704 vdd-supply = <&vaux1>;
705 };
706
Sebastian Reichel334a09c2014-01-11 22:17:03 +0100707 bq24150a: bq24150a@6b {
708 compatible = "ti,bq24150a";
709 reg = <0x6b>;
710
711 ti,current-limit = <100>;
712 ti,weak-battery-voltage = <3400>;
713 ti,battery-regulation-voltage = <4200>;
714 ti,charge-current = <650>;
715 ti,termination-current = <100>;
716 ti,resistor-sense = <68>;
717
Pali Rohárb9507622016-02-21 12:28:23 +0100718 ti,usb-charger-detection = <&isp1707>;
Sebastian Reichel334a09c2014-01-11 22:17:03 +0100719 };
Pavel Macheka4d4b152013-08-13 15:36:36 +0200720};
721
722&i2c3 {
Sebastian Reichelac888a82013-10-23 00:49:30 +0200723 pinctrl-names = "default";
724 pinctrl-0 = <&i2c3_pins>;
725
Sebastian Reichel48fc9862013-10-23 00:49:31 +0200726 clock-frequency = <400000>;
Sebastian Reichel1ac4e6f2015-03-27 15:39:46 +0100727
728 lis302dl: lis3lv02d@1d {
729 compatible = "st,lis3lv02d";
730 reg = <0x1d>;
731
732 Vdd-supply = <&vaux1>;
733 Vdd_IO-supply = <&vio>;
734
735 interrupt-parent = <&gpio6>;
736 interrupts = <21 20>; /* 181 and 180 */
737
738 /* click flags */
739 st,click-single-x;
740 st,click-single-y;
741 st,click-single-z;
742
743 /* Limits are 0.5g * value */
744 st,click-threshold-x = <8>;
745 st,click-threshold-y = <8>;
746 st,click-threshold-z = <10>;
747
748 /* Click must be longer than time limit */
749 st,click-time-limit = <9>;
750
751 /* Kind of debounce filter */
752 st,click-latency = <50>;
753
754 /* Interrupt line 2 for click detection */
755 st,irq2-click;
756
757 st,wakeup-x-hi;
758 st,wakeup-y-hi;
759 st,wakeup-threshold = <(800/18)>; /* millig-value / 18 to get HW values */
760
761 st,wakeup2-z-hi;
762 st,wakeup2-threshold = <(900/18)>; /* millig-value / 18 to get HW values */
763
764 st,hipass1-disable;
765 st,hipass2-disable;
766
767 st,axis-x = <1>; /* LIS3_DEV_X */
768 st,axis-y = <(-2)>; /* LIS3_INV_DEV_Y */
769 st,axis-z = <(-3)>; /* LIS3_INV_DEV_Z */
770
771 st,min-limit-x = <(-32)>;
772 st,min-limit-y = <3>;
773 st,min-limit-z = <3>;
774
775 st,max-limit-x = <(-3)>;
776 st,max-limit-y = <32>;
777 st,max-limit-z = <32>;
778 };
Pavel Machekd510d122017-08-10 22:49:23 +0200779
780 cam1: camera@3e {
781 compatible = "toshiba,et8ek8";
782 reg = <0x3e>;
783
784 vana-supply = <&vaux4>;
785
786 clocks = <&isp 0>;
787 clock-names = "extclk";
788 clock-frequency = <9600000>;
789
790 reset-gpio = <&gpio4 6 GPIO_ACTIVE_HIGH>; /* 102 */
791
Pavel Machek4884c502017-11-12 06:25:29 -0500792 lens-focus = <&ad5820>;
793
Pavel Machekd510d122017-08-10 22:49:23 +0200794 port {
795 csi_cam1: endpoint {
796 bus-type = <3>; /* CCP2 */
797 strobe = <1>;
798 clock-inv = <0>;
799 crc = <1>;
800
801 remote-endpoint = <&csi_isp>;
802 };
803 };
804 };
805
806 /* D/A converter for auto-focus */
Rob Herring8dccafa2017-10-13 12:54:51 -0500807 ad5820: dac@c {
Pavel Machekd510d122017-08-10 22:49:23 +0200808 compatible = "adi,ad5820";
809 reg = <0x0c>;
810
811 VANA-supply = <&vaux4>;
812
813 #io-channel-cells = <0>;
814 };
Pavel Macheka4d4b152013-08-13 15:36:36 +0200815};
816
817&mmc1 {
Sebastian Reichelf1751cf2013-10-23 00:49:33 +0200818 pinctrl-names = "default";
819 pinctrl-0 = <&mmc1_pins>;
820 vmmc-supply = <&vmmc1>;
821 bus-width = <4>;
Pavel Machekd510d122017-08-10 22:49:23 +0200822 /* For debugging, it is often good idea to remove this GPIO.
823 It means you can remove back cover (to reboot by removing
824 battery) and still use the MMC card. */
Arthur Demchenkovac9c9082019-01-21 06:21:09 +0300825 cd-gpios = <&gpio6 0 GPIO_ACTIVE_LOW>; /* 160 */
Pavel Macheka4d4b152013-08-13 15:36:36 +0200826};
827
Tony Lindgrenedd5eb42013-11-25 14:23:45 -0800828/* most boards use vaux3, only some old versions use vmmc2 instead */
Pavel Macheka4d4b152013-08-13 15:36:36 +0200829&mmc2 {
Tony Lindgrenedd5eb42013-11-25 14:23:45 -0800830 pinctrl-names = "default";
831 pinctrl-0 = <&mmc2_pins>;
832 vmmc-supply = <&vaux3>;
Kishon Vijay Abraham I45ea75e2017-06-09 17:38:18 +0530833 vqmmc-supply = <&vsim>;
Tony Lindgrenedd5eb42013-11-25 14:23:45 -0800834 bus-width = <8>;
835 non-removable;
Pali Rohár4cf48f12016-12-14 22:29:44 +0100836 no-sdio;
837 no-sd;
Pavel Macheka4d4b152013-08-13 15:36:36 +0200838};
839
840&mmc3 {
841 status = "disabled";
842};
843
Sebastian Reichel8699d2d2013-10-23 00:49:39 +0200844&gpmc {
Tony Lindgren271d4c62014-09-18 09:03:36 -0700845 ranges = <0 0 0x01000000 0x01000000>, /* 16 MB for OneNAND */
846 <1 0 0x02000000 0x01000000>; /* 16 MB for smc91c96 */
Tony Lindgren9a894952014-10-29 17:16:47 -0700847 pinctrl-names = "default";
848 pinctrl-0 = <&gpmc_pins>;
Sebastian Reichel8699d2d2013-10-23 00:49:39 +0200849
Tony Lindgrene2c5eb72014-10-29 17:16:47 -0700850 /* sys_ndmareq1 could be used by the driver, not as gpio65 though */
Sebastian Reichel8699d2d2013-10-23 00:49:39 +0200851 onenand@0,0 {
852 #address-cells = <1>;
853 #size-cells = <1>;
Ladislav Michl396744b2018-01-12 14:12:56 +0100854 compatible = "ti,omap2-onenand";
Tony Lindgrene2c5eb72014-10-29 17:16:47 -0700855 reg = <0 0 0x20000>; /* CS0, offset 0, IO size 128K */
Sebastian Reichel8699d2d2013-10-23 00:49:39 +0200856
857 gpmc,sync-read;
858 gpmc,sync-write;
859 gpmc,burst-length = <16>;
860 gpmc,burst-read;
861 gpmc,burst-wrap;
862 gpmc,burst-write;
863 gpmc,device-width = <2>; /* GPMC_DEVWIDTH_16BIT */
864 gpmc,mux-add-data = <2>; /* GPMC_MUX_AD */
865 gpmc,cs-on-ns = <0>;
866 gpmc,cs-rd-off-ns = <87>;
867 gpmc,cs-wr-off-ns = <87>;
868 gpmc,adv-on-ns = <0>;
869 gpmc,adv-rd-off-ns = <10>;
870 gpmc,adv-wr-off-ns = <10>;
871 gpmc,oe-on-ns = <15>;
872 gpmc,oe-off-ns = <87>;
873 gpmc,we-on-ns = <0>;
874 gpmc,we-off-ns = <87>;
875 gpmc,rd-cycle-ns = <112>;
876 gpmc,wr-cycle-ns = <112>;
877 gpmc,access-ns = <81>;
878 gpmc,page-burst-access-ns = <15>;
879 gpmc,bus-turnaround-ns = <0>;
880 gpmc,cycle2cycle-delay-ns = <0>;
881 gpmc,wait-monitoring-ns = <0>;
882 gpmc,clk-activation-ns = <5>;
883 gpmc,wr-data-mux-bus-ns = <30>;
884 gpmc,wr-access-ns = <81>;
885 gpmc,sync-clk-ps = <15000>;
886
887 /*
888 * MTD partition table corresponding to Nokia's
889 * Maemo 5 (Fremantle) release.
890 */
891 partition@0 {
892 label = "bootloader";
893 reg = <0x00000000 0x00020000>;
894 read-only;
895 };
896 partition@1 {
897 label = "config";
898 reg = <0x00020000 0x00060000>;
899 };
900 partition@2 {
901 label = "log";
902 reg = <0x00080000 0x00040000>;
903 };
904 partition@3 {
905 label = "kernel";
906 reg = <0x000c0000 0x00200000>;
907 };
908 partition@4 {
909 label = "initfs";
910 reg = <0x002c0000 0x00200000>;
911 };
912 partition@5 {
913 label = "rootfs";
914 reg = <0x004c0000 0x0fb40000>;
915 };
916 };
Tony Lindgren271d4c62014-09-18 09:03:36 -0700917
Tony Lindgren7ac72742015-01-06 08:49:57 -0800918 /* Ethernet is on some early development boards and qemu */
Tony Lindgren271d4c62014-09-18 09:03:36 -0700919 ethernet@gpmc {
920 compatible = "smsc,lan91c94";
921 interrupt-parent = <&gpio2>;
922 interrupts = <22 IRQ_TYPE_LEVEL_HIGH>; /* gpio54 */
Pali Rohárcb9071d2015-02-19 17:49:50 +0100923 reg = <1 0 0xf>; /* 16 byte IO range */
Tony Lindgren271d4c62014-09-18 09:03:36 -0700924 bank-width = <2>;
925 pinctrl-names = "default";
926 pinctrl-0 = <&ethernet_pins>;
Tony Lindgren7d2911c2014-10-30 09:59:27 -0700927 power-gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>; /* gpio86 */
928 reset-gpios = <&gpio6 4 GPIO_ACTIVE_HIGH>; /* gpio164 */
Tony Lindgren271d4c62014-09-18 09:03:36 -0700929 gpmc,device-width = <2>;
930 gpmc,sync-clk-ps = <0>;
931 gpmc,cs-on-ns = <0>;
932 gpmc,cs-rd-off-ns = <48>;
933 gpmc,cs-wr-off-ns = <24>;
934 gpmc,adv-on-ns = <0>;
935 gpmc,adv-rd-off-ns = <0>;
936 gpmc,adv-wr-off-ns = <0>;
937 gpmc,we-on-ns = <12>;
938 gpmc,we-off-ns = <18>;
939 gpmc,oe-on-ns = <12>;
940 gpmc,oe-off-ns = <48>;
941 gpmc,page-burst-access-ns = <0>;
942 gpmc,access-ns = <42>;
943 gpmc,rd-cycle-ns = <180>;
944 gpmc,wr-cycle-ns = <180>;
945 gpmc,bus-turnaround-ns = <0>;
946 gpmc,cycle2cycle-delay-ns = <0>;
947 gpmc,wait-monitoring-ns = <0>;
948 gpmc,clk-activation-ns = <0>;
949 gpmc,wr-access-ns = <0>;
950 gpmc,wr-data-mux-bus-ns = <12>;
951 };
Sebastian Reichel8699d2d2013-10-23 00:49:39 +0200952};
953
Pavel Macheka4d4b152013-08-13 15:36:36 +0200954&mcspi1 {
955 /*
956 * For some reason, touchscreen is necessary for screen to work at
957 * all on real hw. It works well without it on emulator.
958 *
959 * Also... order in the device tree actually matters here.
960 */
961 tsc2005@0 {
Sebastian Reichel50525892014-05-29 00:03:59 -0700962 compatible = "ti,tsc2005";
Pavel Macheka4d4b152013-08-13 15:36:36 +0200963 spi-max-frequency = <6000000>;
964 reg = <0>;
Sebastian Reichel50525892014-05-29 00:03:59 -0700965
966 vio-supply = <&vio>;
967
968 reset-gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>; /* 104 */
969 interrupts-extended = <&gpio4 4 IRQ_TYPE_EDGE_RISING>; /* 100 */
970
971 touchscreen-fuzz-x = <4>;
972 touchscreen-fuzz-y = <7>;
973 touchscreen-fuzz-pressure = <2>;
Pavel Machek8770d082015-05-29 21:32:11 +0200974 touchscreen-size-x = <4096>;
975 touchscreen-size-y = <4096>;
Sebastian Reichel50525892014-05-29 00:03:59 -0700976 touchscreen-max-pressure = <2048>;
977
978 ti,x-plate-ohms = <280>;
979 ti,esd-recovery-timeout-ms = <8000>;
Pavel Macheka4d4b152013-08-13 15:36:36 +0200980 };
Tomi Valkeinen11334202013-12-17 09:33:33 +0200981
Ivaylo Dimitrovcbe92b02018-01-12 15:47:18 -0800982 lcd: acx565akm@2 {
Tomi Valkeinen11334202013-12-17 09:33:33 +0200983 compatible = "sony,acx565akm";
Pavel Macheka4d4b152013-08-13 15:36:36 +0200984 spi-max-frequency = <6000000>;
985 reg = <2>;
Sebastian Reicheld1e6f512013-10-23 00:49:40 +0200986
987 pinctrl-names = "default";
Tomi Valkeinen11334202013-12-17 09:33:33 +0200988 pinctrl-0 = <&acx565akm_pins>;
989
990 label = "lcd";
991 reset-gpios = <&gpio3 26 GPIO_ACTIVE_HIGH>; /* 90 */
992
993 port {
994 lcd_in: endpoint {
995 remote-endpoint = <&sdi_out>;
996 };
997 };
Pavel Macheka4d4b152013-08-13 15:36:36 +0200998 };
999};
1000
Sebastian Reichelc1ad2202014-03-13 22:59:55 +01001001&mcspi4 {
1002 pinctrl-names = "default";
1003 pinctrl-0 = <&mcspi4_pins>;
1004
1005 wl1251@0 {
1006 pinctrl-names = "default";
1007 pinctrl-0 = <&wl1251_pins>;
1008
1009 vio-supply = <&vio>;
1010
1011 compatible = "ti,wl1251";
1012 reg = <0>;
1013 spi-max-frequency = <48000000>;
1014
1015 spi-cpol;
1016 spi-cpha;
1017
1018 ti,power-gpio = <&gpio3 23 GPIO_ACTIVE_HIGH>; /* 87 */
1019
1020 interrupt-parent = <&gpio2>;
1021 interrupts = <10 IRQ_TYPE_NONE>; /* gpio line 42 */
Sebastian Reichel3d5c6562017-03-21 23:32:15 +01001022
1023 clocks = <&vctcxo>;
Sebastian Reichelc1ad2202014-03-13 22:59:55 +01001024 };
1025};
1026
Tony Lindgren308607e2019-10-23 11:39:42 -07001027/* RNG not directly accessible on n900, see omap3-rom-rng instead */
1028&rng_target {
1029 status = "disabled";
1030};
1031
Pavel Macheka4d4b152013-08-13 15:36:36 +02001032&usb_otg_hs {
1033 interface-type = <0>;
1034 usb-phy = <&usb2_phy>;
Roger Quadrosd2afcf02013-10-07 16:28:13 +03001035 phys = <&usb2_phy>;
1036 phy-names = "usb2-phy";
Pavel Macheka4d4b152013-08-13 15:36:36 +02001037 mode = <2>;
1038 power = <50>;
1039};
Sebastian Reichel7a89eec2013-10-23 00:49:32 +02001040
1041&uart1 {
1042 status = "disabled";
1043};
1044
1045&uart2 {
1046 pinctrl-names = "default";
1047 pinctrl-0 = <&uart2_pins>;
Sebastian Reichel3d5c6562017-03-21 23:32:15 +01001048
1049 bcm2048: bluetooth {
1050 compatible = "brcm,bcm2048-nokia", "nokia,h4p-bluetooth";
1051 reset-gpios = <&gpio3 27 GPIO_ACTIVE_LOW>; /* 91 */
1052 host-wakeup-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>; /* 101 */
1053 bluetooth-wakeup-gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>; /* 37 */
1054 clocks = <&vctcxo>;
1055 clock-names = "sysclk";
1056 };
Sebastian Reichel7a89eec2013-10-23 00:49:32 +02001057};
1058
1059&uart3 {
Tony Lindgren31f08202014-05-05 17:27:39 -07001060 interrupts-extended = <&intc 74 &omap3_pmx_core OMAP3_UART3_RX>;
Sebastian Reichel7a89eec2013-10-23 00:49:32 +02001061 pinctrl-names = "default";
1062 pinctrl-0 = <&uart3_pins>;
1063};
Tomi Valkeinen11334202013-12-17 09:33:33 +02001064
1065&dss {
1066 status = "ok";
1067
1068 pinctrl-names = "default";
1069 pinctrl-0 = <&dss_sdi_pins>;
1070
1071 vdds_sdi-supply = <&vaux1>;
1072
1073 ports {
1074 #address-cells = <1>;
1075 #size-cells = <0>;
1076
1077 port@1 {
1078 reg = <1>;
1079
1080 sdi_out: endpoint {
1081 remote-endpoint = <&lcd_in>;
1082 datapairs = <2>;
1083 };
1084 };
1085 };
1086};
1087
1088&venc {
1089 status = "ok";
1090
1091 vdda-supply = <&vdac>;
1092
1093 port {
1094 venc_out: endpoint {
1095 remote-endpoint = <&tv_connector_in>;
1096 ti,channels = <1>;
1097 };
1098 };
1099};
Sebastian Reichelf7d0f2a2014-04-28 16:07:27 +02001100
1101&mcbsp2 {
1102 status = "ok";
1103};
Sebastian Reichel782e25a2014-05-10 18:37:49 +02001104
1105&ssi_port1 {
1106 pinctrl-names = "default";
1107 pinctrl-0 = <&ssi_pins>;
1108
1109 ti,ssi-cawake-gpio = <&gpio5 23 GPIO_ACTIVE_HIGH>; /* 151 */
Sebastian Reichel76ad4ac2014-05-10 18:37:50 +02001110
1111 modem: hsi-client {
1112 compatible = "nokia,n900-modem";
1113
1114 pinctrl-names = "default";
1115 pinctrl-0 = <&modem_pins>;
1116
1117 hsi-channel-ids = <0>, <1>, <2>, <3>;
1118 hsi-channel-names = "mcsaab-control",
1119 "speech-control",
1120 "speech-data",
1121 "mcsaab-data";
1122 hsi-speed-kbps = <55000>;
1123 hsi-mode = "frame";
1124 hsi-flow = "synchronized";
1125 hsi-arb-mode = "round-robin";
1126
1127 interrupts-extended = <&gpio3 8 IRQ_TYPE_EDGE_FALLING>; /* 72 */
1128
1129 gpios = <&gpio3 6 GPIO_ACTIVE_HIGH>, /* 70 */
1130 <&gpio3 9 GPIO_ACTIVE_HIGH>, /* 73 */
1131 <&gpio3 10 GPIO_ACTIVE_HIGH>, /* 74 */
1132 <&gpio3 11 GPIO_ACTIVE_HIGH>, /* 75 */
1133 <&gpio5 29 GPIO_ACTIVE_HIGH>; /* 157 */
1134 gpio-names = "cmt_apeslpx",
1135 "cmt_rst_rq",
1136 "cmt_en",
1137 "cmt_rst",
1138 "cmt_bsi";
1139 };
Sebastian Reichel782e25a2014-05-10 18:37:49 +02001140};
1141
1142&ssi_port2 {
1143 status = "disabled";
Sebastian Reichel76ad4ac2014-05-10 18:37:50 +02001144};