blob: e1286510fdf863f3c91d6fd71f0fa64b55a66e62 [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
158 /* controlled (enabled/disabled) directly by bcm2048 and wl1251 */
159 vctcxo: vctcxo {
160 compatible = "fixed-clock";
161 #clock-cells = <0>;
162 clock-frequency = <38400000>;
163 };
Pavel Macheka4d4b152013-08-13 15:36:36 +0200164};
165
Pavel Machekd510d122017-08-10 22:49:23 +0200166&isp {
167 vdds_csib-supply = <&vaux2>;
168
169 pinctrl-names = "default";
170 pinctrl-0 = <&camera_pins>;
171
172 ports {
173 port@1 {
174 reg = <1>;
175
176 csi_isp: endpoint {
177 remote-endpoint = <&csi_cam1>;
178 bus-type = <3>; /* CCP2 */
179 clock-lanes = <1>;
180 data-lanes = <0>;
181 lane-polarity = <0 0>;
Pavel Machekd510d122017-08-10 22:49:23 +0200182 /* Select strobe = <1> for back camera, <0> for front camera */
183 strobe = <1>;
Pavel Machekd510d122017-08-10 22:49:23 +0200184 };
185 };
186 };
187};
188
Sebastian Reichelac888a82013-10-23 00:49:30 +0200189&omap3_pmx_core {
190 pinctrl-names = "default";
191
Sebastian Reichel7a89eec2013-10-23 00:49:32 +0200192 uart2_pins: pinmux_uart2_pins {
193 pinctrl-single,pins = <
Sebastian Reichel3d5c6562017-03-21 23:32:15 +0100194 OMAP3_CORE1_IOPAD(0x2174, PIN_INPUT_PULLUP | MUX_MODE0) /* uart2_cts */
195 OMAP3_CORE1_IOPAD(0x2176, PIN_OUTPUT | MUX_MODE0) /* uart2_rts */
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300196 OMAP3_CORE1_IOPAD(0x2178, PIN_OUTPUT | MUX_MODE0) /* uart2_tx */
Sebastian Reichel3d5c6562017-03-21 23:32:15 +0100197 OMAP3_CORE1_IOPAD(0x217a, PIN_INPUT | MUX_MODE0) /* uart2_rx */
Sebastian Reichel7a89eec2013-10-23 00:49:32 +0200198 >;
199 };
200
201 uart3_pins: pinmux_uart3_pins {
202 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300203 OMAP3_CORE1_IOPAD(0x219e, PIN_INPUT | MUX_MODE0) /* uart3_rx */
204 OMAP3_CORE1_IOPAD(0x21a0, PIN_OUTPUT | MUX_MODE0) /* uart3_tx */
Sebastian Reichel7a89eec2013-10-23 00:49:32 +0200205 >;
206 };
207
Tony Lindgren271d4c62014-09-18 09:03:36 -0700208 ethernet_pins: pinmux_ethernet_pins {
209 pinctrl-single,pins = <
210 OMAP3_CORE1_IOPAD(0x20b4, PIN_INPUT_PULLDOWN | MUX_MODE4) /* gpmc_ncs3.gpio_54 */
211 OMAP3_CORE1_IOPAD(0x20fc, PIN_OUTPUT | MUX_MODE4) /* dss_data16.gpio_86 */
212 OMAP3_CORE1_IOPAD(0x219c, PIN_OUTPUT | MUX_MODE4) /* uart3_rts_sd.gpio_164 */
213 >;
214 };
215
Tony Lindgren9a894952014-10-29 17:16:47 -0700216 gpmc_pins: pinmux_gpmc_pins {
217 pinctrl-single,pins = <
218
219 /* address lines */
220 OMAP3_CORE1_IOPAD(0x207a, PIN_OUTPUT | MUX_MODE0) /* gpmc_a1.gpmc_a1 */
221 OMAP3_CORE1_IOPAD(0x207c, PIN_OUTPUT | MUX_MODE0) /* gpmc_a2.gpmc_a2 */
222 OMAP3_CORE1_IOPAD(0x207e, PIN_OUTPUT | MUX_MODE0) /* gpmc_a3.gpmc_a3 */
223
224 /* data lines, gpmc_d0..d7 not muxable according to TRM */
225 OMAP3_CORE1_IOPAD(0x209e, PIN_INPUT | MUX_MODE0) /* gpmc_d8.gpmc_d8 */
226 OMAP3_CORE1_IOPAD(0x20a0, PIN_INPUT | MUX_MODE0) /* gpmc_d9.gpmc_d9 */
227 OMAP3_CORE1_IOPAD(0x20a2, PIN_INPUT | MUX_MODE0) /* gpmc_d10.gpmc_d10 */
228 OMAP3_CORE1_IOPAD(0x20a4, PIN_INPUT | MUX_MODE0) /* gpmc_d11.gpmc_d11 */
229 OMAP3_CORE1_IOPAD(0x20a6, PIN_INPUT | MUX_MODE0) /* gpmc_d12.gpmc_d12 */
230 OMAP3_CORE1_IOPAD(0x20a8, PIN_INPUT | MUX_MODE0) /* gpmc_d13.gpmc_d13 */
231 OMAP3_CORE1_IOPAD(0x20aa, PIN_INPUT | MUX_MODE0) /* gpmc_d14.gpmc_d14 */
232 OMAP3_CORE1_IOPAD(0x20ac, PIN_INPUT | MUX_MODE0) /* gpmc_d15.gpmc_d15 */
233
234 /*
235 * gpmc_ncs0, gpmc_nadv_ale, gpmc_noe, gpmc_nwe, gpmc_wait0 not muxable
236 * according to TRM. OneNAND seems to require PIN_INPUT on clock.
237 */
238 OMAP3_CORE1_IOPAD(0x20b0, PIN_OUTPUT | MUX_MODE0) /* gpmc_ncs1.gpmc_ncs1 */
239 OMAP3_CORE1_IOPAD(0x20be, PIN_INPUT | MUX_MODE0) /* gpmc_clk.gpmc_clk */
240 >;
241 };
242
Sebastian Reichelac888a82013-10-23 00:49:30 +0200243 i2c1_pins: pinmux_i2c1_pins {
244 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300245 OMAP3_CORE1_IOPAD(0x21ba, PIN_INPUT | MUX_MODE0) /* i2c1_scl */
246 OMAP3_CORE1_IOPAD(0x21bc, PIN_INPUT | MUX_MODE0) /* i2c1_sda */
Sebastian Reichelac888a82013-10-23 00:49:30 +0200247 >;
248 };
249
250 i2c2_pins: pinmux_i2c2_pins {
251 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300252 OMAP3_CORE1_IOPAD(0x21be, PIN_INPUT | MUX_MODE0) /* i2c2_scl */
253 OMAP3_CORE1_IOPAD(0x21c0, PIN_INPUT | MUX_MODE0) /* i2c2_sda */
Sebastian Reichelac888a82013-10-23 00:49:30 +0200254 >;
255 };
256
257 i2c3_pins: pinmux_i2c3_pins {
258 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300259 OMAP3_CORE1_IOPAD(0x21c2, PIN_INPUT | MUX_MODE0) /* i2c3_scl */
260 OMAP3_CORE1_IOPAD(0x21c4, PIN_INPUT | MUX_MODE0) /* i2c3_sda */
Sebastian Reichelac888a82013-10-23 00:49:30 +0200261 >;
262 };
Sebastian Reichelf1751cf2013-10-23 00:49:33 +0200263
Tony Lindgrenc1be2032014-05-05 17:27:38 -0700264 debug_leds: pinmux_debug_led_pins {
265 pinctrl-single,pins = <
266 OMAP3_CORE1_IOPAD(0x2198, PIN_OUTPUT | MUX_MODE4) /* mcbsp1_clkx.gpio_162 */
267 >;
268 };
269
Sebastian Reichelc1ad2202014-03-13 22:59:55 +0100270 mcspi4_pins: pinmux_mcspi4_pins {
271 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300272 OMAP3_CORE1_IOPAD(0x218c, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_clk */
273 OMAP3_CORE1_IOPAD(0x2192, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_somi */
274 OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE1) /* mcspi4_simo */
275 OMAP3_CORE1_IOPAD(0x2196, PIN_OUTPUT | MUX_MODE1) /* mcspi4_cs0 */
Sebastian Reichelc1ad2202014-03-13 22:59:55 +0100276 >;
277 };
278
Sebastian Reichelf1751cf2013-10-23 00:49:33 +0200279 mmc1_pins: pinmux_mmc1_pins {
280 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300281 OMAP3_CORE1_IOPAD(0x2144, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_clk */
282 OMAP3_CORE1_IOPAD(0x2146, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_cmd */
283 OMAP3_CORE1_IOPAD(0x2148, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat0 */
284 OMAP3_CORE1_IOPAD(0x214a, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat1 */
285 OMAP3_CORE1_IOPAD(0x214c, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat2 */
286 OMAP3_CORE1_IOPAD(0x214e, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat3 */
Sebastian Reichelf1751cf2013-10-23 00:49:33 +0200287 >;
288 };
Sebastian Reicheld1e6f512013-10-23 00:49:40 +0200289
Tony Lindgrenedd5eb42013-11-25 14:23:45 -0800290 mmc2_pins: pinmux_mmc2_pins {
291 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300292 OMAP3_CORE1_IOPAD(0x2158, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_clk */
293 OMAP3_CORE1_IOPAD(0x215a, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_cmd */
294 OMAP3_CORE1_IOPAD(0x215c, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat0 */
295 OMAP3_CORE1_IOPAD(0x215e, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat1 */
296 OMAP3_CORE1_IOPAD(0x2160, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat2 */
297 OMAP3_CORE1_IOPAD(0x2162, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat3 */
298 OMAP3_CORE1_IOPAD(0x2164, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat4 */
299 OMAP3_CORE1_IOPAD(0x2166, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat5 */
300 OMAP3_CORE1_IOPAD(0x2168, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat6 */
301 OMAP3_CORE1_IOPAD(0x216a, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat7 */
Tony Lindgrenedd5eb42013-11-25 14:23:45 -0800302 >;
303 };
304
Tomi Valkeinen11334202013-12-17 09:33:33 +0200305 acx565akm_pins: pinmux_acx565akm_pins {
Sebastian Reicheld1e6f512013-10-23 00:49:40 +0200306 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300307 OMAP3_CORE1_IOPAD(0x2104, PIN_OUTPUT | MUX_MODE4) /* RX51_LCD_RESET_GPIO */
Sebastian Reicheld1e6f512013-10-23 00:49:40 +0200308 >;
309 };
Tomi Valkeinen11334202013-12-17 09:33:33 +0200310
311 dss_sdi_pins: pinmux_dss_sdi_pins {
312 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300313 OMAP3_CORE1_IOPAD(0x20f0, PIN_OUTPUT | MUX_MODE1) /* dss_data10.sdi_dat1n */
314 OMAP3_CORE1_IOPAD(0x20f2, PIN_OUTPUT | MUX_MODE1) /* dss_data11.sdi_dat1p */
315 OMAP3_CORE1_IOPAD(0x20f4, PIN_OUTPUT | MUX_MODE1) /* dss_data12.sdi_dat2n */
316 OMAP3_CORE1_IOPAD(0x20f6, PIN_OUTPUT | MUX_MODE1) /* dss_data13.sdi_dat2p */
Tomi Valkeinen11334202013-12-17 09:33:33 +0200317
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300318 OMAP3_CORE1_IOPAD(0x2108, PIN_OUTPUT | MUX_MODE1) /* dss_data22.sdi_clkp */
319 OMAP3_CORE1_IOPAD(0x210a, PIN_OUTPUT | MUX_MODE1) /* dss_data23.sdi_clkn */
Tomi Valkeinen11334202013-12-17 09:33:33 +0200320 >;
321 };
Sebastian Reichelc1ad2202014-03-13 22:59:55 +0100322
323 wl1251_pins: pinmux_wl1251 {
324 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300325 OMAP3_CORE1_IOPAD(0x20fe, PIN_OUTPUT | MUX_MODE4) /* gpio 87 => wl1251 enable */
326 OMAP3_CORE1_IOPAD(0x208a, PIN_INPUT | MUX_MODE4) /* gpio 42 => wl1251 irq */
Sebastian Reichelc1ad2202014-03-13 22:59:55 +0100327 >;
328 };
Sebastian Reichel782e25a2014-05-10 18:37:49 +0200329
330 ssi_pins: pinmux_ssi {
331 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300332 OMAP3_CORE1_IOPAD(0x2180, PIN_INPUT_PULLUP | MUX_MODE1) /* ssi1_rdy_tx */
333 OMAP3_CORE1_IOPAD(0x217e, PIN_OUTPUT | MUX_MODE1) /* ssi1_flag_tx */
Tony Lindgrene0e80d42016-05-12 13:29:48 -0700334 OMAP3_CORE1_IOPAD(0x2182, PIN_INPUT | MUX_MODE4) /* ssi1_wake_tx (cawake) */
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300335 OMAP3_CORE1_IOPAD(0x217c, PIN_OUTPUT | MUX_MODE1) /* ssi1_dat_tx */
336 OMAP3_CORE1_IOPAD(0x2184, PIN_INPUT | MUX_MODE1) /* ssi1_dat_rx */
337 OMAP3_CORE1_IOPAD(0x2186, PIN_INPUT | MUX_MODE1) /* ssi1_flag_rx */
338 OMAP3_CORE1_IOPAD(0x2188, PIN_OUTPUT | MUX_MODE1) /* ssi1_rdy_rx */
339 OMAP3_CORE1_IOPAD(0x218a, PIN_OUTPUT | MUX_MODE1) /* ssi1_wake */
Sebastian Reichel782e25a2014-05-10 18:37:49 +0200340 >;
341 };
Sebastian Reichel76ad4ac2014-05-10 18:37:50 +0200342
343 modem_pins: pinmux_modem {
344 pinctrl-single,pins = <
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300345 OMAP3_CORE1_IOPAD(0x20dc, PIN_OUTPUT | MUX_MODE4) /* gpio 70 => cmt_apeslpx */
Tony Lindgrene0e80d42016-05-12 13:29:48 -0700346 OMAP3_CORE1_IOPAD(0x20e0, PIN_INPUT | MUX_MODE4) /* gpio 72 => ape_rst_rq */
Javier Martinez Canillas675e4572015-11-13 01:54:05 -0300347 OMAP3_CORE1_IOPAD(0x20e2, PIN_OUTPUT | MUX_MODE4) /* gpio 73 => cmt_rst_rq */
348 OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE4) /* gpio 74 => cmt_en */
349 OMAP3_CORE1_IOPAD(0x20e6, PIN_OUTPUT | MUX_MODE4) /* gpio 75 => cmt_rst */
350 OMAP3_CORE1_IOPAD(0x218e, PIN_OUTPUT | MUX_MODE4) /* gpio 157 => cmt_bsi */
Sebastian Reichel76ad4ac2014-05-10 18:37:50 +0200351 >;
352 };
Pavel Machekd510d122017-08-10 22:49:23 +0200353
354 camera_pins: pinmux_camera {
355 pinctrl-single,pins = <
356 OMAP3_CORE1_IOPAD(0x210c, PIN_OUTPUT | MUX_MODE7) /* cam_hs */
357 OMAP3_CORE1_IOPAD(0x210e, PIN_OUTPUT | MUX_MODE7) /* cam_vs */
358 OMAP3_CORE1_IOPAD(0x2110, PIN_OUTPUT | MUX_MODE0) /* cam_xclka */
359 OMAP3_CORE1_IOPAD(0x211e, PIN_OUTPUT | MUX_MODE7) /* cam_d4 */
360 OMAP3_CORE1_IOPAD(0x2122, PIN_INPUT | MUX_MODE0) /* cam_d6 */
361 OMAP3_CORE1_IOPAD(0x2124, PIN_INPUT | MUX_MODE0) /* cam_d7 */
362 OMAP3_CORE1_IOPAD(0x2126, PIN_INPUT | MUX_MODE0) /* cam_d8 */
363 OMAP3_CORE1_IOPAD(0x2128, PIN_INPUT | MUX_MODE0) /* cam_d9 */
364 OMAP3_CORE1_IOPAD(0x212a, PIN_OUTPUT | MUX_MODE7) /* cam_d10 */
365 OMAP3_CORE1_IOPAD(0x212e, PIN_OUTPUT | MUX_MODE7) /* cam_xclkb */
366 OMAP3_CORE1_IOPAD(0x2132, PIN_OUTPUT | MUX_MODE0) /* cam_strobe */
367 >;
368 };
Sebastian Reichelac888a82013-10-23 00:49:30 +0200369};
370
Pavel Macheka4d4b152013-08-13 15:36:36 +0200371&i2c1 {
Sebastian Reichelac888a82013-10-23 00:49:30 +0200372 pinctrl-names = "default";
373 pinctrl-0 = <&i2c1_pins>;
374
Pavel Macheka4d4b152013-08-13 15:36:36 +0200375 clock-frequency = <2200000>;
376
377 twl: twl@48 {
378 reg = <0x48>;
379 interrupts = <7>; /* SYS_NIRQ cascaded to intc */
380 interrupt-parent = <&intc>;
381 };
382};
383
384#include "twl4030.dtsi"
Sebastian Reichelac888a82013-10-23 00:49:30 +0200385#include "twl4030_omap3.dtsi"
Pavel Macheka4d4b152013-08-13 15:36:36 +0200386
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200387&vaux1 {
388 regulator-name = "V28";
389 regulator-min-microvolt = <2800000>;
390 regulator-max-microvolt = <2800000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300391 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Pavel Machek14fd7332014-12-07 17:11:47 +0100392 regulator-always-on; /* due to battery cover sensor */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200393};
394
395&vaux2 {
396 regulator-name = "VCSI";
397 regulator-min-microvolt = <1800000>;
398 regulator-max-microvolt = <1800000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300399 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200400};
401
402&vaux3 {
403 regulator-name = "VMMC2_30";
404 regulator-min-microvolt = <2800000>;
405 regulator-max-microvolt = <3000000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300406 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200407};
408
409&vaux4 {
410 regulator-name = "VCAM_ANA_28";
411 regulator-min-microvolt = <2800000>;
412 regulator-max-microvolt = <2800000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300413 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200414};
415
416&vmmc1 {
417 regulator-name = "VMMC1";
418 regulator-min-microvolt = <1850000>;
419 regulator-max-microvolt = <3150000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300420 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200421};
422
423&vmmc2 {
424 regulator-name = "V28_A";
425 regulator-min-microvolt = <2800000>;
426 regulator-max-microvolt = <3000000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300427 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200428 regulator-always-on; /* due VIO leak to AIC34 VDDs */
429};
430
431&vpll1 {
432 regulator-name = "VPLL";
433 regulator-min-microvolt = <1800000>;
434 regulator-max-microvolt = <1800000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300435 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200436 regulator-always-on;
437};
438
439&vpll2 {
440 regulator-name = "VSDI_CSI";
441 regulator-min-microvolt = <1800000>;
442 regulator-max-microvolt = <1800000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300443 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200444 regulator-always-on;
445};
446
447&vsim {
448 regulator-name = "VMMC2_IO_18";
449 regulator-min-microvolt = <1800000>;
450 regulator-max-microvolt = <1800000>;
Ivaylo Dimitrov06981782016-04-17 17:29:23 +0300451 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200452};
453
454&vio {
455 regulator-name = "VIO";
456 regulator-min-microvolt = <1800000>;
457 regulator-max-microvolt = <1800000>;
Sebastian Reichel9cdbbad2013-10-23 00:49:38 +0200458};
459
460&vintana1 {
461 regulator-name = "VINTANA1";
462 /* fixed to 1500000 */
463 regulator-always-on;
464};
465
466&vintana2 {
467 regulator-name = "VINTANA2";
468 regulator-min-microvolt = <2750000>;
469 regulator-max-microvolt = <2750000>;
470 regulator-always-on;
471};
472
473&vintdig {
474 regulator-name = "VINTDIG";
475 /* fixed to 1500000 */
476 regulator-always-on;
477};
478
Sebastian Reichel06ba7a62013-10-23 00:49:35 +0200479&twl {
480 twl_audio: audio {
481 compatible = "ti,twl4030-audio";
482 ti,enable-vibra = <1>;
483 };
Tony Lindgren91888832014-06-16 01:10:22 -0700484
485 twl_power: power {
Tony Lindgrendaebabd2014-08-19 08:24:05 -0700486 compatible = "ti,twl4030-power-n900", "ti,twl4030-power-idle-osc-off";
Tony Lindgren91888832014-06-16 01:10:22 -0700487 ti,use_poweroff;
488 };
Sebastian Reichel06ba7a62013-10-23 00:49:35 +0200489};
490
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100491&twl_keypad {
Sebastian Reichel3fdb7712014-05-06 15:14:28 +0200492 linux,keymap = < MATRIX_KEY(0x00, 0x00, KEY_Q)
493 MATRIX_KEY(0x00, 0x01, KEY_O)
494 MATRIX_KEY(0x00, 0x02, KEY_P)
495 MATRIX_KEY(0x00, 0x03, KEY_COMMA)
496 MATRIX_KEY(0x00, 0x04, KEY_BACKSPACE)
497 MATRIX_KEY(0x00, 0x06, KEY_A)
498 MATRIX_KEY(0x00, 0x07, KEY_S)
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100499
Sebastian Reichel3fdb7712014-05-06 15:14:28 +0200500 MATRIX_KEY(0x01, 0x00, KEY_W)
501 MATRIX_KEY(0x01, 0x01, KEY_D)
502 MATRIX_KEY(0x01, 0x02, KEY_F)
503 MATRIX_KEY(0x01, 0x03, KEY_G)
504 MATRIX_KEY(0x01, 0x04, KEY_H)
505 MATRIX_KEY(0x01, 0x05, KEY_J)
506 MATRIX_KEY(0x01, 0x06, KEY_K)
507 MATRIX_KEY(0x01, 0x07, KEY_L)
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100508
Sebastian Reichel3fdb7712014-05-06 15:14:28 +0200509 MATRIX_KEY(0x02, 0x00, KEY_E)
510 MATRIX_KEY(0x02, 0x01, KEY_DOT)
511 MATRIX_KEY(0x02, 0x02, KEY_UP)
512 MATRIX_KEY(0x02, 0x03, KEY_ENTER)
513 MATRIX_KEY(0x02, 0x05, KEY_Z)
514 MATRIX_KEY(0x02, 0x06, KEY_X)
515 MATRIX_KEY(0x02, 0x07, KEY_C)
516 MATRIX_KEY(0x02, 0x08, KEY_F9)
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100517
Sebastian Reichel3fdb7712014-05-06 15:14:28 +0200518 MATRIX_KEY(0x03, 0x00, KEY_R)
519 MATRIX_KEY(0x03, 0x01, KEY_V)
520 MATRIX_KEY(0x03, 0x02, KEY_B)
521 MATRIX_KEY(0x03, 0x03, KEY_N)
522 MATRIX_KEY(0x03, 0x04, KEY_M)
523 MATRIX_KEY(0x03, 0x05, KEY_SPACE)
524 MATRIX_KEY(0x03, 0x06, KEY_SPACE)
525 MATRIX_KEY(0x03, 0x07, KEY_LEFT)
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100526
Sebastian Reichel3fdb7712014-05-06 15:14:28 +0200527 MATRIX_KEY(0x04, 0x00, KEY_T)
528 MATRIX_KEY(0x04, 0x01, KEY_DOWN)
529 MATRIX_KEY(0x04, 0x02, KEY_RIGHT)
530 MATRIX_KEY(0x04, 0x04, KEY_LEFTCTRL)
531 MATRIX_KEY(0x04, 0x05, KEY_RIGHTALT)
532 MATRIX_KEY(0x04, 0x06, KEY_LEFTSHIFT)
533 MATRIX_KEY(0x04, 0x08, KEY_F10)
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100534
Sebastian Reichel3fdb7712014-05-06 15:14:28 +0200535 MATRIX_KEY(0x05, 0x00, KEY_Y)
536 MATRIX_KEY(0x05, 0x08, KEY_F11)
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100537
Sebastian Reichel3fdb7712014-05-06 15:14:28 +0200538 MATRIX_KEY(0x06, 0x00, KEY_U)
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100539
Sebastian Reichel3fdb7712014-05-06 15:14:28 +0200540 MATRIX_KEY(0x07, 0x00, KEY_I)
541 MATRIX_KEY(0x07, 0x01, KEY_F7)
542 MATRIX_KEY(0x07, 0x02, KEY_F8)
Sebastian Reichel85c215f2014-01-11 22:16:59 +0100543 >;
544};
545
Pavel Macheka4d4b152013-08-13 15:36:36 +0200546&twl_gpio {
547 ti,pullups = <0x0>;
548 ti,pulldowns = <0x03ff3f>; /* BIT(0..5) | BIT(8..17) */
549};
550
551&i2c2 {
Sebastian Reichelac888a82013-10-23 00:49:30 +0200552 pinctrl-names = "default";
553 pinctrl-0 = <&i2c2_pins>;
554
Sebastian Reichel48fc9862013-10-23 00:49:31 +0200555 clock-frequency = <100000>;
Sebastian Reichelb2b9b252013-10-23 00:49:36 +0200556
Sebastian Reichel14e3e292013-10-23 00:49:41 +0200557 tlv320aic3x: tlv320aic3x@18 {
558 compatible = "ti,tlv320aic3x";
559 reg = <0x18>;
Andrew F. Davis7be4b5d2017-11-29 11:13:59 -0600560 reset-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>; /* 60 */
Sebastian Reichel14e3e292013-10-23 00:49:41 +0200561 ai3x-gpio-func = <
562 0 /* AIC3X_GPIO1_FUNC_DISABLED */
563 5 /* AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT */
564 >;
565
566 AVDD-supply = <&vmmc2>;
567 DRVDD-supply = <&vmmc2>;
568 IOVDD-supply = <&vio>;
569 DVDD-supply = <&vio>;
Pavel Machek1819e302015-03-01 21:07:08 +0200570
571 ai3x-micbias-vg = <1>;
Sebastian Reichel14e3e292013-10-23 00:49:41 +0200572 };
573
574 tlv320aic3x_aux: tlv320aic3x@19 {
575 compatible = "ti,tlv320aic3x";
576 reg = <0x19>;
Andrew F. Davis7be4b5d2017-11-29 11:13:59 -0600577 reset-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>; /* 60 */
Sebastian Reichel14e3e292013-10-23 00:49:41 +0200578
579 AVDD-supply = <&vmmc2>;
580 DRVDD-supply = <&vmmc2>;
581 IOVDD-supply = <&vio>;
582 DVDD-supply = <&vio>;
Pavel Machek1819e302015-03-01 21:07:08 +0200583
584 ai3x-micbias-vg = <2>;
Sebastian Reichel14e3e292013-10-23 00:49:41 +0200585 };
586
Sebastian Reichel12f2f872014-01-11 22:17:00 +0100587 tsl2563: tsl2563@29 {
588 compatible = "amstaos,tsl2563";
589 reg = <0x29>;
590
591 amstaos,cover-comp-gain = <16>;
592 };
593
Pali Rohár14628e42015-12-26 00:40:12 +0100594 adp1653: led-controller@30 {
595 compatible = "adi,adp1653";
596 reg = <0x30>;
597 enable-gpios = <&gpio3 24 GPIO_ACTIVE_HIGH>; /* 88 */
598
599 flash {
600 flash-timeout-us = <500000>;
601 flash-max-microamp = <320000>;
602 led-max-microamp = <50000>;
603 };
604 indicator {
605 led-max-microamp = <17500>;
606 };
607 };
608
Sebastian Reichela0bf1f32013-10-23 00:49:42 +0200609 lp5523: lp5523@32 {
610 compatible = "national,lp5523";
611 reg = <0x32>;
612 clock-mode = /bits/ 8 <0>; /* LP55XX_CLOCK_AUTO */
613 enable-gpio = <&gpio2 9 GPIO_ACTIVE_HIGH>; /* 41 */
614
615 chan0 {
616 chan-name = "lp5523:kb1";
617 led-cur = /bits/ 8 <50>;
618 max-cur = /bits/ 8 <100>;
619 };
620
621 chan1 {
622 chan-name = "lp5523:kb2";
623 led-cur = /bits/ 8 <50>;
624 max-cur = /bits/ 8 <100>;
625 };
626
627 chan2 {
628 chan-name = "lp5523:kb3";
629 led-cur = /bits/ 8 <50>;
630 max-cur = /bits/ 8 <100>;
631 };
632
633 chan3 {
634 chan-name = "lp5523:kb4";
635 led-cur = /bits/ 8 <50>;
636 max-cur = /bits/ 8 <100>;
637 };
638
639 chan4 {
640 chan-name = "lp5523:b";
641 led-cur = /bits/ 8 <50>;
642 max-cur = /bits/ 8 <100>;
643 };
644
645 chan5 {
646 chan-name = "lp5523:g";
647 led-cur = /bits/ 8 <50>;
648 max-cur = /bits/ 8 <100>;
649 };
650
651 chan6 {
652 chan-name = "lp5523:r";
653 led-cur = /bits/ 8 <50>;
654 max-cur = /bits/ 8 <100>;
655 };
656
657 chan7 {
658 chan-name = "lp5523:kb5";
659 led-cur = /bits/ 8 <50>;
660 max-cur = /bits/ 8 <100>;
661 };
662
663 chan8 {
664 chan-name = "lp5523:kb6";
665 led-cur = /bits/ 8 <50>;
666 max-cur = /bits/ 8 <100>;
667 };
668 };
669
Sebastian Reichelb2b9b252013-10-23 00:49:36 +0200670 bq27200: bq27200@55 {
671 compatible = "ti,bq27200";
672 reg = <0x55>;
Sebastian Reichel3c6b4f42018-02-22 21:06:33 +0100673 power-supplies = <&bq24150a>;
Sebastian Reichelb2b9b252013-10-23 00:49:36 +0200674 };
Sebastian Reichel9e2367c2014-01-11 22:17:01 +0100675
Pavel Machekf585a152016-10-11 10:12:43 +0200676 /* Stereo headphone amplifier */
Sebastian Reichel9e2367c2014-01-11 22:17:01 +0100677 tpa6130a2: tpa6130a2@60 {
678 compatible = "ti,tpa6130a2";
679 reg = <0x60>;
680
681 Vdd-supply = <&vmmc2>;
682
683 power-gpio = <&gpio4 2 GPIO_ACTIVE_HIGH>; /* 98 */
684 };
Sebastian Reichel334a09c2014-01-11 22:17:03 +0100685
Sebastian Reichel406c07e2014-11-15 02:47:30 +0100686 si4713: si4713@63 {
687 compatible = "silabs,si4713";
688 reg = <0x63>;
689
690 interrupts-extended = <&gpio2 21 IRQ_TYPE_EDGE_FALLING>; /* 53 */
691 reset-gpios = <&gpio6 3 GPIO_ACTIVE_HIGH>; /* 163 */
692 vio-supply = <&vio>;
693 vdd-supply = <&vaux1>;
694 };
695
Sebastian Reichel334a09c2014-01-11 22:17:03 +0100696 bq24150a: bq24150a@6b {
697 compatible = "ti,bq24150a";
698 reg = <0x6b>;
699
700 ti,current-limit = <100>;
701 ti,weak-battery-voltage = <3400>;
702 ti,battery-regulation-voltage = <4200>;
703 ti,charge-current = <650>;
704 ti,termination-current = <100>;
705 ti,resistor-sense = <68>;
706
Pali Rohárb9507622016-02-21 12:28:23 +0100707 ti,usb-charger-detection = <&isp1707>;
Sebastian Reichel334a09c2014-01-11 22:17:03 +0100708 };
Pavel Macheka4d4b152013-08-13 15:36:36 +0200709};
710
711&i2c3 {
Sebastian Reichelac888a82013-10-23 00:49:30 +0200712 pinctrl-names = "default";
713 pinctrl-0 = <&i2c3_pins>;
714
Sebastian Reichel48fc9862013-10-23 00:49:31 +0200715 clock-frequency = <400000>;
Sebastian Reichel1ac4e6f2015-03-27 15:39:46 +0100716
717 lis302dl: lis3lv02d@1d {
718 compatible = "st,lis3lv02d";
719 reg = <0x1d>;
720
721 Vdd-supply = <&vaux1>;
722 Vdd_IO-supply = <&vio>;
723
724 interrupt-parent = <&gpio6>;
725 interrupts = <21 20>; /* 181 and 180 */
726
727 /* click flags */
728 st,click-single-x;
729 st,click-single-y;
730 st,click-single-z;
731
732 /* Limits are 0.5g * value */
733 st,click-threshold-x = <8>;
734 st,click-threshold-y = <8>;
735 st,click-threshold-z = <10>;
736
737 /* Click must be longer than time limit */
738 st,click-time-limit = <9>;
739
740 /* Kind of debounce filter */
741 st,click-latency = <50>;
742
743 /* Interrupt line 2 for click detection */
744 st,irq2-click;
745
746 st,wakeup-x-hi;
747 st,wakeup-y-hi;
748 st,wakeup-threshold = <(800/18)>; /* millig-value / 18 to get HW values */
749
750 st,wakeup2-z-hi;
751 st,wakeup2-threshold = <(900/18)>; /* millig-value / 18 to get HW values */
752
753 st,hipass1-disable;
754 st,hipass2-disable;
755
756 st,axis-x = <1>; /* LIS3_DEV_X */
757 st,axis-y = <(-2)>; /* LIS3_INV_DEV_Y */
758 st,axis-z = <(-3)>; /* LIS3_INV_DEV_Z */
759
760 st,min-limit-x = <(-32)>;
761 st,min-limit-y = <3>;
762 st,min-limit-z = <3>;
763
764 st,max-limit-x = <(-3)>;
765 st,max-limit-y = <32>;
766 st,max-limit-z = <32>;
767 };
Pavel Machekd510d122017-08-10 22:49:23 +0200768
769 cam1: camera@3e {
770 compatible = "toshiba,et8ek8";
771 reg = <0x3e>;
772
773 vana-supply = <&vaux4>;
774
775 clocks = <&isp 0>;
776 clock-names = "extclk";
777 clock-frequency = <9600000>;
778
779 reset-gpio = <&gpio4 6 GPIO_ACTIVE_HIGH>; /* 102 */
780
Pavel Machek4884c502017-11-12 06:25:29 -0500781 lens-focus = <&ad5820>;
782
Pavel Machekd510d122017-08-10 22:49:23 +0200783 port {
784 csi_cam1: endpoint {
785 bus-type = <3>; /* CCP2 */
786 strobe = <1>;
787 clock-inv = <0>;
788 crc = <1>;
789
790 remote-endpoint = <&csi_isp>;
791 };
792 };
793 };
794
795 /* D/A converter for auto-focus */
Rob Herring8dccafa2017-10-13 12:54:51 -0500796 ad5820: dac@c {
Pavel Machekd510d122017-08-10 22:49:23 +0200797 compatible = "adi,ad5820";
798 reg = <0x0c>;
799
800 VANA-supply = <&vaux4>;
801
802 #io-channel-cells = <0>;
803 };
Pavel Macheka4d4b152013-08-13 15:36:36 +0200804};
805
806&mmc1 {
Sebastian Reichelf1751cf2013-10-23 00:49:33 +0200807 pinctrl-names = "default";
808 pinctrl-0 = <&mmc1_pins>;
809 vmmc-supply = <&vmmc1>;
810 bus-width = <4>;
Pavel Machekd510d122017-08-10 22:49:23 +0200811 /* For debugging, it is often good idea to remove this GPIO.
812 It means you can remove back cover (to reboot by removing
813 battery) and still use the MMC card. */
Arthur Demchenkovac9c9082019-01-21 06:21:09 +0300814 cd-gpios = <&gpio6 0 GPIO_ACTIVE_LOW>; /* 160 */
Pavel Macheka4d4b152013-08-13 15:36:36 +0200815};
816
Tony Lindgrenedd5eb42013-11-25 14:23:45 -0800817/* most boards use vaux3, only some old versions use vmmc2 instead */
Pavel Macheka4d4b152013-08-13 15:36:36 +0200818&mmc2 {
Tony Lindgrenedd5eb42013-11-25 14:23:45 -0800819 pinctrl-names = "default";
820 pinctrl-0 = <&mmc2_pins>;
821 vmmc-supply = <&vaux3>;
Kishon Vijay Abraham I45ea75e2017-06-09 17:38:18 +0530822 vqmmc-supply = <&vsim>;
Tony Lindgrenedd5eb42013-11-25 14:23:45 -0800823 bus-width = <8>;
824 non-removable;
Pali Rohár4cf48f12016-12-14 22:29:44 +0100825 no-sdio;
826 no-sd;
Pavel Macheka4d4b152013-08-13 15:36:36 +0200827};
828
829&mmc3 {
830 status = "disabled";
831};
832
Sebastian Reichel8699d2d2013-10-23 00:49:39 +0200833&gpmc {
Tony Lindgren271d4c62014-09-18 09:03:36 -0700834 ranges = <0 0 0x01000000 0x01000000>, /* 16 MB for OneNAND */
835 <1 0 0x02000000 0x01000000>; /* 16 MB for smc91c96 */
Tony Lindgren9a894952014-10-29 17:16:47 -0700836 pinctrl-names = "default";
837 pinctrl-0 = <&gpmc_pins>;
Sebastian Reichel8699d2d2013-10-23 00:49:39 +0200838
Tony Lindgrene2c5eb72014-10-29 17:16:47 -0700839 /* sys_ndmareq1 could be used by the driver, not as gpio65 though */
Sebastian Reichel8699d2d2013-10-23 00:49:39 +0200840 onenand@0,0 {
841 #address-cells = <1>;
842 #size-cells = <1>;
Ladislav Michl396744b2018-01-12 14:12:56 +0100843 compatible = "ti,omap2-onenand";
Tony Lindgrene2c5eb72014-10-29 17:16:47 -0700844 reg = <0 0 0x20000>; /* CS0, offset 0, IO size 128K */
Sebastian Reichel8699d2d2013-10-23 00:49:39 +0200845
846 gpmc,sync-read;
847 gpmc,sync-write;
848 gpmc,burst-length = <16>;
849 gpmc,burst-read;
850 gpmc,burst-wrap;
851 gpmc,burst-write;
852 gpmc,device-width = <2>; /* GPMC_DEVWIDTH_16BIT */
853 gpmc,mux-add-data = <2>; /* GPMC_MUX_AD */
854 gpmc,cs-on-ns = <0>;
855 gpmc,cs-rd-off-ns = <87>;
856 gpmc,cs-wr-off-ns = <87>;
857 gpmc,adv-on-ns = <0>;
858 gpmc,adv-rd-off-ns = <10>;
859 gpmc,adv-wr-off-ns = <10>;
860 gpmc,oe-on-ns = <15>;
861 gpmc,oe-off-ns = <87>;
862 gpmc,we-on-ns = <0>;
863 gpmc,we-off-ns = <87>;
864 gpmc,rd-cycle-ns = <112>;
865 gpmc,wr-cycle-ns = <112>;
866 gpmc,access-ns = <81>;
867 gpmc,page-burst-access-ns = <15>;
868 gpmc,bus-turnaround-ns = <0>;
869 gpmc,cycle2cycle-delay-ns = <0>;
870 gpmc,wait-monitoring-ns = <0>;
871 gpmc,clk-activation-ns = <5>;
872 gpmc,wr-data-mux-bus-ns = <30>;
873 gpmc,wr-access-ns = <81>;
874 gpmc,sync-clk-ps = <15000>;
875
876 /*
877 * MTD partition table corresponding to Nokia's
878 * Maemo 5 (Fremantle) release.
879 */
880 partition@0 {
881 label = "bootloader";
882 reg = <0x00000000 0x00020000>;
883 read-only;
884 };
885 partition@1 {
886 label = "config";
887 reg = <0x00020000 0x00060000>;
888 };
889 partition@2 {
890 label = "log";
891 reg = <0x00080000 0x00040000>;
892 };
893 partition@3 {
894 label = "kernel";
895 reg = <0x000c0000 0x00200000>;
896 };
897 partition@4 {
898 label = "initfs";
899 reg = <0x002c0000 0x00200000>;
900 };
901 partition@5 {
902 label = "rootfs";
903 reg = <0x004c0000 0x0fb40000>;
904 };
905 };
Tony Lindgren271d4c62014-09-18 09:03:36 -0700906
Tony Lindgren7ac72742015-01-06 08:49:57 -0800907 /* Ethernet is on some early development boards and qemu */
Tony Lindgren271d4c62014-09-18 09:03:36 -0700908 ethernet@gpmc {
909 compatible = "smsc,lan91c94";
910 interrupt-parent = <&gpio2>;
911 interrupts = <22 IRQ_TYPE_LEVEL_HIGH>; /* gpio54 */
Pali Rohárcb9071d2015-02-19 17:49:50 +0100912 reg = <1 0 0xf>; /* 16 byte IO range */
Tony Lindgren271d4c62014-09-18 09:03:36 -0700913 bank-width = <2>;
914 pinctrl-names = "default";
915 pinctrl-0 = <&ethernet_pins>;
Tony Lindgren7d2911c2014-10-30 09:59:27 -0700916 power-gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>; /* gpio86 */
917 reset-gpios = <&gpio6 4 GPIO_ACTIVE_HIGH>; /* gpio164 */
Tony Lindgren271d4c62014-09-18 09:03:36 -0700918 gpmc,device-width = <2>;
919 gpmc,sync-clk-ps = <0>;
920 gpmc,cs-on-ns = <0>;
921 gpmc,cs-rd-off-ns = <48>;
922 gpmc,cs-wr-off-ns = <24>;
923 gpmc,adv-on-ns = <0>;
924 gpmc,adv-rd-off-ns = <0>;
925 gpmc,adv-wr-off-ns = <0>;
926 gpmc,we-on-ns = <12>;
927 gpmc,we-off-ns = <18>;
928 gpmc,oe-on-ns = <12>;
929 gpmc,oe-off-ns = <48>;
930 gpmc,page-burst-access-ns = <0>;
931 gpmc,access-ns = <42>;
932 gpmc,rd-cycle-ns = <180>;
933 gpmc,wr-cycle-ns = <180>;
934 gpmc,bus-turnaround-ns = <0>;
935 gpmc,cycle2cycle-delay-ns = <0>;
936 gpmc,wait-monitoring-ns = <0>;
937 gpmc,clk-activation-ns = <0>;
938 gpmc,wr-access-ns = <0>;
939 gpmc,wr-data-mux-bus-ns = <12>;
940 };
Sebastian Reichel8699d2d2013-10-23 00:49:39 +0200941};
942
Pavel Macheka4d4b152013-08-13 15:36:36 +0200943&mcspi1 {
944 /*
945 * For some reason, touchscreen is necessary for screen to work at
946 * all on real hw. It works well without it on emulator.
947 *
948 * Also... order in the device tree actually matters here.
949 */
950 tsc2005@0 {
Sebastian Reichel50525892014-05-29 00:03:59 -0700951 compatible = "ti,tsc2005";
Pavel Macheka4d4b152013-08-13 15:36:36 +0200952 spi-max-frequency = <6000000>;
953 reg = <0>;
Sebastian Reichel50525892014-05-29 00:03:59 -0700954
955 vio-supply = <&vio>;
956
957 reset-gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>; /* 104 */
958 interrupts-extended = <&gpio4 4 IRQ_TYPE_EDGE_RISING>; /* 100 */
959
960 touchscreen-fuzz-x = <4>;
961 touchscreen-fuzz-y = <7>;
962 touchscreen-fuzz-pressure = <2>;
Pavel Machek8770d082015-05-29 21:32:11 +0200963 touchscreen-size-x = <4096>;
964 touchscreen-size-y = <4096>;
Sebastian Reichel50525892014-05-29 00:03:59 -0700965 touchscreen-max-pressure = <2048>;
966
967 ti,x-plate-ohms = <280>;
968 ti,esd-recovery-timeout-ms = <8000>;
Pavel Macheka4d4b152013-08-13 15:36:36 +0200969 };
Tomi Valkeinen11334202013-12-17 09:33:33 +0200970
Ivaylo Dimitrovcbe92b02018-01-12 15:47:18 -0800971 lcd: acx565akm@2 {
Tomi Valkeinen11334202013-12-17 09:33:33 +0200972 compatible = "sony,acx565akm";
Pavel Macheka4d4b152013-08-13 15:36:36 +0200973 spi-max-frequency = <6000000>;
974 reg = <2>;
Sebastian Reicheld1e6f512013-10-23 00:49:40 +0200975
976 pinctrl-names = "default";
Tomi Valkeinen11334202013-12-17 09:33:33 +0200977 pinctrl-0 = <&acx565akm_pins>;
978
979 label = "lcd";
980 reset-gpios = <&gpio3 26 GPIO_ACTIVE_HIGH>; /* 90 */
981
982 port {
983 lcd_in: endpoint {
984 remote-endpoint = <&sdi_out>;
985 };
986 };
Pavel Macheka4d4b152013-08-13 15:36:36 +0200987 };
988};
989
Sebastian Reichelc1ad2202014-03-13 22:59:55 +0100990&mcspi4 {
991 pinctrl-names = "default";
992 pinctrl-0 = <&mcspi4_pins>;
993
994 wl1251@0 {
995 pinctrl-names = "default";
996 pinctrl-0 = <&wl1251_pins>;
997
998 vio-supply = <&vio>;
999
1000 compatible = "ti,wl1251";
1001 reg = <0>;
1002 spi-max-frequency = <48000000>;
1003
1004 spi-cpol;
1005 spi-cpha;
1006
1007 ti,power-gpio = <&gpio3 23 GPIO_ACTIVE_HIGH>; /* 87 */
1008
1009 interrupt-parent = <&gpio2>;
1010 interrupts = <10 IRQ_TYPE_NONE>; /* gpio line 42 */
Sebastian Reichel3d5c6562017-03-21 23:32:15 +01001011
1012 clocks = <&vctcxo>;
Sebastian Reichelc1ad2202014-03-13 22:59:55 +01001013 };
1014};
1015
Tony Lindgren308607e2019-10-23 11:39:42 -07001016/* RNG not directly accessible on n900, see omap3-rom-rng instead */
1017&rng_target {
1018 status = "disabled";
1019};
1020
Pavel Macheka4d4b152013-08-13 15:36:36 +02001021&usb_otg_hs {
1022 interface-type = <0>;
1023 usb-phy = <&usb2_phy>;
Roger Quadrosd2afcf02013-10-07 16:28:13 +03001024 phys = <&usb2_phy>;
1025 phy-names = "usb2-phy";
Pavel Macheka4d4b152013-08-13 15:36:36 +02001026 mode = <2>;
1027 power = <50>;
1028};
Sebastian Reichel7a89eec2013-10-23 00:49:32 +02001029
1030&uart1 {
1031 status = "disabled";
1032};
1033
1034&uart2 {
1035 pinctrl-names = "default";
1036 pinctrl-0 = <&uart2_pins>;
Sebastian Reichel3d5c6562017-03-21 23:32:15 +01001037
1038 bcm2048: bluetooth {
1039 compatible = "brcm,bcm2048-nokia", "nokia,h4p-bluetooth";
1040 reset-gpios = <&gpio3 27 GPIO_ACTIVE_LOW>; /* 91 */
1041 host-wakeup-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>; /* 101 */
1042 bluetooth-wakeup-gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>; /* 37 */
1043 clocks = <&vctcxo>;
1044 clock-names = "sysclk";
1045 };
Sebastian Reichel7a89eec2013-10-23 00:49:32 +02001046};
1047
1048&uart3 {
Tony Lindgren31f08202014-05-05 17:27:39 -07001049 interrupts-extended = <&intc 74 &omap3_pmx_core OMAP3_UART3_RX>;
Sebastian Reichel7a89eec2013-10-23 00:49:32 +02001050 pinctrl-names = "default";
1051 pinctrl-0 = <&uart3_pins>;
1052};
Tomi Valkeinen11334202013-12-17 09:33:33 +02001053
1054&dss {
1055 status = "ok";
1056
1057 pinctrl-names = "default";
1058 pinctrl-0 = <&dss_sdi_pins>;
1059
1060 vdds_sdi-supply = <&vaux1>;
1061
1062 ports {
1063 #address-cells = <1>;
1064 #size-cells = <0>;
1065
1066 port@1 {
1067 reg = <1>;
1068
1069 sdi_out: endpoint {
1070 remote-endpoint = <&lcd_in>;
1071 datapairs = <2>;
1072 };
1073 };
1074 };
1075};
1076
1077&venc {
1078 status = "ok";
1079
1080 vdda-supply = <&vdac>;
1081
1082 port {
1083 venc_out: endpoint {
1084 remote-endpoint = <&tv_connector_in>;
1085 ti,channels = <1>;
1086 };
1087 };
1088};
Sebastian Reichelf7d0f2a2014-04-28 16:07:27 +02001089
1090&mcbsp2 {
1091 status = "ok";
1092};
Sebastian Reichel782e25a2014-05-10 18:37:49 +02001093
1094&ssi_port1 {
1095 pinctrl-names = "default";
1096 pinctrl-0 = <&ssi_pins>;
1097
1098 ti,ssi-cawake-gpio = <&gpio5 23 GPIO_ACTIVE_HIGH>; /* 151 */
Sebastian Reichel76ad4ac2014-05-10 18:37:50 +02001099
1100 modem: hsi-client {
1101 compatible = "nokia,n900-modem";
1102
1103 pinctrl-names = "default";
1104 pinctrl-0 = <&modem_pins>;
1105
1106 hsi-channel-ids = <0>, <1>, <2>, <3>;
1107 hsi-channel-names = "mcsaab-control",
1108 "speech-control",
1109 "speech-data",
1110 "mcsaab-data";
1111 hsi-speed-kbps = <55000>;
1112 hsi-mode = "frame";
1113 hsi-flow = "synchronized";
1114 hsi-arb-mode = "round-robin";
1115
1116 interrupts-extended = <&gpio3 8 IRQ_TYPE_EDGE_FALLING>; /* 72 */
1117
1118 gpios = <&gpio3 6 GPIO_ACTIVE_HIGH>, /* 70 */
1119 <&gpio3 9 GPIO_ACTIVE_HIGH>, /* 73 */
1120 <&gpio3 10 GPIO_ACTIVE_HIGH>, /* 74 */
1121 <&gpio3 11 GPIO_ACTIVE_HIGH>, /* 75 */
1122 <&gpio5 29 GPIO_ACTIVE_HIGH>; /* 157 */
1123 gpio-names = "cmt_apeslpx",
1124 "cmt_rst_rq",
1125 "cmt_en",
1126 "cmt_rst",
1127 "cmt_bsi";
1128 };
Sebastian Reichel782e25a2014-05-10 18:37:49 +02001129};
1130
1131&ssi_port2 {
1132 status = "disabled";
Sebastian Reichel76ad4ac2014-05-10 18:37:50 +02001133};