~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arm/boot/dts/ti/davinci/da850-lego-ev3.dts

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 // SPDX-License-Identifier: GPL-2.0-only
  2 /*
  3  * Device tree for LEGO MINDSTORMS EV3
  4  *
  5  * Copyright (C) 2017 David Lechner <david@lechnology.com>
  6  */
  7 
  8 /dts-v1/;
  9 #include <dt-bindings/gpio/gpio.h>
 10 #include <dt-bindings/input/linux-event-codes.h>
 11 #include <dt-bindings/pwm/pwm.h>
 12 
 13 #include "da850.dtsi"
 14 
 15 / {
 16         compatible = "lego,ev3", "ti,da850";
 17         model = "LEGO MINDSTORMS EV3";
 18 
 19         aliases {
 20                 serial1 = &serial1;
 21         };
 22 
 23         memory@c0000000 {
 24                 device_type = "memory";
 25                 reg = <0xc0000000 0x04000000>;
 26         };
 27 
 28         /*
 29          * The buttons on the EV3 are mapped to keyboard keys.
 30          */
 31         gpio_keys {
 32                 compatible = "gpio-keys";
 33                 label = "EV3 Brick Buttons";
 34                 pinctrl-names = "default";
 35                 pinctrl-0 = <&button_bias>;
 36 
 37                 center {
 38                         label = "Center";
 39                         linux,code = <KEY_ENTER>;
 40                         gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
 41                 };
 42 
 43                 left {
 44                         label = "Left";
 45                         linux,code = <KEY_LEFT>;
 46                         gpios = <&gpio 102 GPIO_ACTIVE_HIGH>;
 47                 };
 48 
 49                 back {
 50                         label = "Back";
 51                         linux,code = <KEY_BACKSPACE>;
 52                         gpios = <&gpio 106 GPIO_ACTIVE_HIGH>;
 53                 };
 54 
 55                 right {
 56                         label = "Right";
 57                         linux,code = <KEY_RIGHT>;
 58                         gpios = <&gpio 124 GPIO_ACTIVE_HIGH>;
 59                 };
 60 
 61                 down {
 62                         label = "Down";
 63                         linux,code = <KEY_DOWN>;
 64                         gpios = <&gpio 126 GPIO_ACTIVE_HIGH>;
 65                 };
 66 
 67                 up {
 68                         label = "Up";
 69                         linux,code = <KEY_UP>;
 70                         gpios = <&gpio 127 GPIO_ACTIVE_HIGH>;
 71                 };
 72         };
 73 
 74         /*
 75          * The EV3 has two built-in bi-color LEDs behind the buttons.
 76          */
 77         leds {
 78                 compatible = "gpio-leds";
 79 
 80                 left_green {
 81                         label = "led0:green:brick-status";
 82                         /* GP6[13] */
 83                         gpios = <&gpio 103 GPIO_ACTIVE_HIGH>;
 84                         linux,default-trigger = "default-on";
 85                 };
 86 
 87                 right_red {
 88                         label = "led1:red:brick-status";
 89                         /* GP6[7] */
 90                         gpios = <&gpio 108 GPIO_ACTIVE_HIGH>;
 91                         linux,default-trigger = "default-on";
 92                 };
 93 
 94                 left_red {
 95                         label = "led0:red:brick-status";
 96                         /* GP6[12] */
 97                         gpios = <&gpio 109 GPIO_ACTIVE_HIGH>;
 98                         linux,default-trigger = "default-on";
 99                 };
100 
101                 right_green {
102                         label = "led1:green:brick-status";
103                         /* GP6[14] */
104                         gpios = <&gpio 110 GPIO_ACTIVE_HIGH>;
105                         linux,default-trigger = "default-on";
106                 };
107         };
108 
109         /*
110          * The EV3 is powered down by turning off the main 5V supply.
111          */
112         gpio-poweroff {
113                 compatible = "gpio-poweroff";
114                 gpios = <&gpio 107 GPIO_ACTIVE_LOW>;
115         };
116 
117         sound {
118                 compatible = "pwm-beeper";
119                 pinctrl-names = "default";
120                 pinctrl-0 = <&ehrpwm0b_pins>;
121                 pwms = <&ehrpwm0 1 1000000 0>;
122                 amp-supply = <&amp>;
123         };
124 
125         cvdd: regulator0 {
126                 compatible = "regulator-fixed";
127                 regulator-name = "cvdd";
128                 regulator-min-microvolt = <1200000>;
129                 regulator-max-microvolt = <1200000>;
130                 regulator-always-on;
131                 regulator-boot-on;
132         };
133 
134         /*
135          * This is a 5V current limiting regulator that is shared by USB,
136          * the sensor (input) ports, the motor (output) ports and the A/DC.
137          */
138         vcc5v: regulator1 {
139                 compatible = "regulator-fixed";
140                 regulator-name = "vcc5v";
141                 regulator-min-microvolt = <5000000>;
142                 regulator-max-microvolt = <5000000>;
143                 gpio = <&gpio 101 0>;
144                 over-current-gpios = <&gpio 99 GPIO_ACTIVE_LOW>;
145                 enable-active-high;
146                 regulator-boot-on;
147         };
148 
149         /*
150          * This is a simple voltage divider on VCC5V to provide a 2.5V
151          * reference signal to the ADC.
152          */
153         adc_ref: regulator2 {
154                 compatible = "regulator-fixed";
155                 regulator-name = "adc ref";
156                 regulator-min-microvolt = <2500000>;
157                 regulator-max-microvolt = <2500000>;
158                 regulator-boot-on;
159                 vin-supply = <&vcc5v>;
160         };
161 
162         /*
163          * This is the amplifier for the speaker.
164          */
165         amp: regulator3 {
166                 compatible = "regulator-fixed";
167                 regulator-name = "amp";
168                 gpio = <&gpio 111 GPIO_ACTIVE_HIGH>;
169                 enable-active-high;
170         };
171 
172         /*
173          * The EV3 can use 6-AA batteries or a rechargeable Li-ion battery pack.
174          */
175         battery {
176                 compatible = "lego,ev3-battery";
177                 io-channels = <&adc 4>, <&adc 3>;
178                 io-channel-names = "voltage", "current";
179                 rechargeable-gpios = <&gpio 136 GPIO_ACTIVE_LOW>;
180         };
181 
182         bt_slow_clk: bt-clock {
183                 pinctrl-names = "default";
184                 pinctrl-0 = <&ecap2_pins>, <&bt_clock_bias>;
185                 compatible = "pwm-clock";
186                 #clock-cells = <0>;
187                 clock-frequency = <32768>;
188                 pwms = <&ecap2 0 30518 0>;
189         };
190 
191         /* ARM local RAM */
192         memory@ffff0000 {
193                 compatible = "syscon", "simple-mfd";
194                 reg = <0xffff0000 0x2000>; /* 8k */
195 
196                 /*
197                  * The I2C bootloader looks for this magic value to either
198                  * boot normally or boot into a firmware update mode.
199                  */
200                 reboot-mode {
201                         compatible = "syscon-reboot-mode";
202                         offset = <0x1ffc>;
203                         mode-normal = <0x00000000>;
204                         mode-loader = <0x5555aaaa>;
205                 };
206         };
207 };
208 
209 &ref_clk {
210         clock-frequency = <24000000>;
211 };
212 
213 &cpu {
214         cpu-supply = <&cvdd>;
215 };
216 
217 /* since we have a fixed regulator, we can't run at these points */
218 &opp_100 {
219         status = "disabled";
220 };
221 
222 &opp_200 {
223         status = "disabled";
224 };
225 
226 /*
227  * The SoC is actually the 456MHz version, but because of the fixed regulator
228  * This is the fastest we can go.
229  */
230 &opp_375 {
231         status = "okay";
232 };
233 
234 &pmx_core {
235         status = "okay";
236 
237         ev3_lcd_pins: lcd-pins {
238                 pinctrl-single,bits = <
239                         /* SIMO, CLK */
240                         0x14 0x00100100 0x00f00f00
241                 >;
242         };
243 };
244 
245 &pinconf {
246         status = "okay";
247 
248         /* Buttons have external pulldown resistors */
249         button_bias: button-bias-groups {
250                 disable {
251                         groups = "cp5", "cp24", "cp25", "cp28";
252                         bias-disable;
253                 };
254         };
255 
256         bt_clock_bias: bt-clock-bias-groups {
257                 disable {
258                         groups = "cp2";
259                         bias-disable;
260                 };
261         };
262 
263         bt_pic_bias: bt-pic-bias-groups {
264                 disable {
265                         groups = "cp20";
266                         bias-disable;
267                 };
268         };
269 };
270 
271 /* Input port 1 */
272 &serial1 {
273         status = "okay";
274         pinctrl-names = "default";
275         pinctrl-0 = <&serial1_rxtx_pins>;
276 };
277 
278 &serial2 {
279         pinctrl-names = "default";
280         pinctrl-0 = <&serial2_rxtx_pins>, <&serial2_rtscts_pins>, <&bt_pic_bias>;
281         status = "okay";
282 
283         bluetooth {
284                 compatible = "ti,cc2560";
285                 clocks = <&bt_slow_clk>;
286                 clock-names = "ext_clock";
287                 enable-gpios = <&gpio 73 GPIO_ACTIVE_HIGH>;
288                 max-speed = <2000000>;
289                 nvmem-cells = <&bdaddr>;
290                 nvmem-cell-names = "bd-address";
291         };
292 };
293 
294 &rtc0 {
295         status = "okay";
296 };
297 
298 &i2c0 {
299         status = "okay";
300         clock-frequency = <400000>;
301         pinctrl-names = "default";
302         pinctrl-0 = <&i2c0_pins>;
303 
304         /*
305          * EEPROM contains the first stage bootloader, HW ID and Bluetooth MAC.
306          */
307         eeprom@50 {
308                 compatible = "microchip,24c128", "atmel,24c128";
309                 pagesize = <64>;
310                 read-only;
311                 reg = <0x50>;
312                 #address-cells = <1>;
313                 #size-cells = <1>;
314 
315                 bdaddr: bdaddr@3f06 {
316                         reg = <0x3f06 0x06>;
317                 };
318         };
319 };
320 
321 &wdt {
322         status = "okay";
323 };
324 
325 &mmc0 {
326         status = "okay";
327         max-frequency = <50000000>;
328         bus-width = <4>;
329         cd-gpios = <&gpio 94 GPIO_ACTIVE_LOW>;
330         pinctrl-names = "default";
331         pinctrl-0 = <&mmc0_pins>;
332 };
333 
334 &spi0 {
335         status = "okay";
336         pinctrl-names = "default";
337         pinctrl-0 = <&spi0_pins>, <&spi0_cs0_pin>, <&spi0_cs3_pin>;
338 
339         flash@0 {
340                 compatible = "n25q128a13", "jedec,spi-nor";
341                 reg = <0>;
342                 spi-max-frequency = <50000000>;
343                 ti,spi-wdelay = <8>;
344 
345                 /* Partitions are based on the official firmware from LEGO */
346                 partitions {
347                         compatible = "fixed-partitions";
348                         #address-cells = <1>;
349                         #size-cells = <1>;
350 
351                         partition@0 {
352                                 label = "U-Boot";
353                                 reg = <0 0x40000>;
354                         };
355 
356                         partition@40000 {
357                                 label = "U-Boot Env";
358                                 reg = <0x40000 0x10000>;
359                         };
360 
361                         partition@50000 {
362                                 label = "Kernel";
363                                 reg = <0x50000 0x200000>;
364                         };
365 
366                         partition@250000 {
367                                 label = "Filesystem";
368                                 reg = <0x250000 0xa50000>;
369                         };
370 
371                         partition@cb0000 {
372                                 label = "Storage";
373                                 reg = <0xcb0000 0x2f0000>;
374                         };
375                 };
376         };
377 
378         adc: adc@3 {
379                 compatible = "ti,ads7957";
380                 reg = <3>;
381                 #io-channel-cells = <1>;
382                 spi-max-frequency = <1000000>;
383                 ti,spi-wdelay = <63>;
384                 vref-supply = <&adc_ref>;
385         };
386 };
387 
388 &spi1 {
389         status = "okay";
390         pinctrl-0 = <&ev3_lcd_pins>;
391         pinctrl-names = "default";
392         cs-gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
393 
394         display@0 {
395                 compatible = "lego,ev3-lcd";
396                 reg = <0>;
397                 spi-max-frequency = <10000000>;
398                 a0-gpios = <&gpio 43 GPIO_ACTIVE_HIGH>;
399                 reset-gpios = <&gpio 80 GPIO_ACTIVE_HIGH>;
400         };
401 };
402 
403 &ecap2 {
404         status = "okay";
405 };
406 
407 &ehrpwm0 {
408         status = "okay";
409 };
410 
411 &gpio {
412         status = "okay";
413 
414         /* Don't pull down battery voltage adc io channel */
415         batt_volt_en {
416                 gpio-hog;
417                 gpios = <6 GPIO_ACTIVE_HIGH>;
418                 output-high;
419         };
420 
421         /* Don't impede Bluetooth clock signal */
422         bt_clock_en {
423                 gpio-hog;
424                 gpios = <5 GPIO_ACTIVE_HIGH>;
425                 input;
426         };
427 
428         /*
429          * There is a PIC microcontroller for interfacing with an Apple MFi
430          * chip. This interferes with normal Bluetooth operation, so we need
431          * to make sure it is turned off. Note: The publicly available
432          * schematics from LEGO don't show that these pins are connected to
433          * anything, but they are present in the source code from LEGO.
434          */
435 
436         bt_pic_en {
437                 gpio-hog;
438                 gpios = <51 GPIO_ACTIVE_HIGH>;
439                 output-low;
440         };
441 
442         bt_pic_rst {
443                 gpio-hog;
444                 gpios = <78 GPIO_ACTIVE_HIGH>;
445                 output-high;
446         };
447 
448         bt_pic_cts {
449                 gpio-hog;
450                 gpios = <87 GPIO_ACTIVE_HIGH>;
451                 input;
452         };
453 };
454 
455 &usb_phy {
456         status = "okay";
457 };
458 
459 &usb0 {
460         status = "okay";
461 };
462 
463 &usb1 {
464         status = "okay";
465         vbus-supply = <&vcc5v>;
466 };

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php