1 /*
2 * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8 /dts-v1/;
10 #include "dra74x.dtsi"
11 #include <dt-bindings/gpio/gpio.h>
12 #include <dt-bindings/interrupt-controller/irq.h>
14 / {
15 model = "TI AM5728 BeagleBoard-X15";
16 compatible = "ti,am572x-beagle-x15", "ti,am5728", "ti,dra742", "ti,dra74", "ti,dra7";
18 aliases {
19 rtc0 = &mcp_rtc;
20 rtc1 = &rtc;
21 rtc2 = &tps659038_rtc;
22 display0 = &hdmi0;
23 sound0 = &primary_sound;
24 sound1 = &hdmi;
25 };
27 memory {
28 device_type = "memory";
29 reg = <0x80000000 0x80000000>;
30 };
32 reserved-memory {
33 #address-cells = <1>;
34 #size-cells = <1>;
35 ranges;
37 ipu2_cma_pool: ipu2_cma@95800000 {
38 compatible = "shared-dma-pool";
39 reg = <0x95800000 0x3800000>;
40 reusable;
41 status = "okay";
42 };
44 dsp1_cma_pool: dsp1_cma@99000000 {
45 compatible = "shared-dma-pool";
46 reg = <0x99000000 0x4000000>;
47 reusable;
48 status = "okay";
49 };
51 ipu1_cma_pool: ipu1_cma@9d000000 {
52 compatible = "shared-dma-pool";
53 reg = <0x9d000000 0x2000000>;
54 reusable;
55 status = "okay";
56 };
58 dsp2_cma_pool: dsp2_cma@9f000000 {
59 compatible = "shared-dma-pool";
60 reg = <0x9f000000 0x800000>;
61 reusable;
62 status = "okay";
63 };
64 };
66 vdd_3v3: fixedregulator-vdd_3v3 {
67 compatible = "regulator-fixed";
68 regulator-name = "vdd_3v3";
69 vin-supply = <®en1>;
70 regulator-min-microvolt = <3300000>;
71 regulator-max-microvolt = <3300000>;
72 };
74 aic_dvdd: fixedregulator-aic_dvdd {
75 compatible = "regulator-fixed";
76 regulator-name = "aic_dvdd_fixed";
77 vin-supply = <&vdd_3v3>;
78 regulator-min-microvolt = <1800000>;
79 regulator-max-microvolt = <1800000>;
80 };
82 vtt_fixed: fixedregulator-vtt {
83 /* TPS51200 */
84 compatible = "regulator-fixed";
85 regulator-name = "vtt_fixed";
86 vin-supply = <&smps3_reg>;
87 regulator-min-microvolt = <3300000>;
88 regulator-max-microvolt = <3300000>;
89 regulator-always-on;
90 regulator-boot-on;
91 enable-active-high;
92 gpio = <&gpio7 11 GPIO_ACTIVE_HIGH>;
93 };
95 hdmi0: connector@1 {
96 compatible = "hdmi-connector";
97 label = "hdmi";
99 type = "a";
101 port {
102 hdmi_connector_in: endpoint {
103 remote-endpoint = <&tpd12s015_out>;
104 };
105 };
106 };
108 tpd12s015: encoder@1 {
109 compatible = "ti,tpd12s015";
111 gpios = <&gpio7 10 GPIO_ACTIVE_HIGH>, /* gpio7_10, CT CP HPD */
112 <&gpio6 28 GPIO_ACTIVE_HIGH>, /* gpio6_28, LS OE */
113 <&gpio7 12 GPIO_ACTIVE_HIGH>; /* gpio7_12/sp1_cs2, HPD */
115 ports {
116 #address-cells = <1>;
117 #size-cells = <0>;
119 port@0 {
120 reg = <0>;
122 tpd12s015_in: endpoint@0 {
123 remote-endpoint = <&hdmi_out>;
124 };
125 };
127 port@1 {
128 reg = <1>;
130 tpd12s015_out: endpoint@0 {
131 remote-endpoint = <&hdmi_connector_in>;
132 };
133 };
134 };
135 };
137 leds {
138 compatible = "gpio-leds";
140 led@0 {
141 label = "beagle-x15:usr0";
142 gpios = <&gpio7 9 GPIO_ACTIVE_HIGH>;
143 linux,default-trigger = "heartbeat";
144 default-state = "off";
145 };
147 led@1 {
148 label = "beagle-x15:usr1";
149 gpios = <&gpio7 8 GPIO_ACTIVE_HIGH>;
150 linux,default-trigger = "cpu0";
151 default-state = "off";
152 };
154 led@2 {
155 label = "beagle-x15:usr2";
156 gpios = <&gpio7 14 GPIO_ACTIVE_HIGH>;
157 linux,default-trigger = "mmc0";
158 default-state = "off";
159 };
161 led@3 {
162 label = "beagle-x15:usr3";
163 gpios = <&gpio7 15 GPIO_ACTIVE_HIGH>;
164 linux,default-trigger = "ide-disk";
165 default-state = "off";
166 };
167 };
169 gpio_fan: gpio_fan {
170 /* Based on 5v 500mA AFB02505HHB */
171 compatible = "gpio-fan";
172 gpios = <&tps659038_gpio 2 GPIO_ACTIVE_HIGH>;
173 gpio-fan,speed-map = <0 0
174 13000 1>;
175 #cooling-cells = <2>;
176 };
178 primary_sound: primary_sound {
179 compatible = "ti,da830-evm-audio";
180 ti,model = "BeagleBoard-X15";
181 ti,audio-codec = <&tlv320aic3104>;
182 ti,mcasp-controller = <&mcasp3>;
183 clocks = <&clkout2_clk>;
184 clock-names = "mclk";
185 ti,audio-routing =
186 "Line Out", "LLOUT",
187 "Line Out", "RLOUT",
188 "MIC2L", "Line In",
189 "MIC2R", "Line In";
190 };
191 };
193 &dra7_pmx_core {
194 mmc1_pins_default: mmc1_pins_default {
195 pinctrl-single,pins = <
196 0x36c (PIN_INPUT | MUX_MODE14) /* mmc1sdcd.gpio219 */
197 0x354 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_clk.clk */
198 0x358 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_cmd.cmd */
199 0x35c (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat0.dat0 */
200 0x360 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat1.dat1 */
201 0x364 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat2.dat2 */
202 0x368 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat3.dat3 */
203 >;
204 };
206 mmc1_pins_hs: mmc1_pins_hs {
207 pinctrl-single,pins = <
208 0x354 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) /* mmc1_clk.clk */
209 0x358 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) /* mmc1_cmd.cmd */
210 0x35c (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) /* mmc1_dat0.dat0 */
211 0x360 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) /* mmc1_dat1.dat1 */
212 0x364 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) /* mmc1_dat2.dat2 */
213 0x368 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0) /* mmc1_dat3.dat3 */
214 >;
215 };
217 mmc2_pins_default: mmc2_pins_default {
218 pinctrl-single,pins = <
219 0x9c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a23.mmc2_clk */
220 0xb0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
221 0xa0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
222 0xa4 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
223 0xa8 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
224 0xac (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
225 0x8c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
226 0x90 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
227 0x94 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
228 0x98 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
229 >;
230 };
232 mmc2_pins_hs: mmc2_pins_hs {
233 pinctrl-single,pins = <
234 0x9c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a23.mmc2_clk */
235 0xb0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
236 0xa0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
237 0xa4 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
238 0xa8 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
239 0xac (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
240 0x8c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
241 0x90 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
242 0x94 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
243 0x98 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
244 >;
245 };
246 };
248 &i2c1 {
249 status = "okay";
250 clock-frequency = <400000>;
252 tps659038: tps659038@58 {
253 compatible = "ti,tps659038";
254 reg = <0x58>;
255 interrupts-extended = <&gpio1 0 IRQ_TYPE_LEVEL_HIGH
256 &dra7_pmx_core 0x418>;
258 #interrupt-cells = <2>;
259 interrupt-controller;
261 ti,system-power-controller;
263 tps659038_pmic {
264 compatible = "ti,tps659038-pmic";
266 regulators {
267 smps12_reg: smps12 {
268 /* VDD_MPU */
269 regulator-name = "smps12";
270 regulator-min-microvolt = < 850000>;
271 regulator-max-microvolt = <1250000>;
272 regulator-always-on;
273 regulator-boot-on;
274 };
276 smps3_reg: smps3 {
277 /* VDD_DDR */
278 regulator-name = "smps3";
279 regulator-min-microvolt = <1350000>;
280 regulator-max-microvolt = <1350000>;
281 regulator-always-on;
282 regulator-boot-on;
283 };
285 smps45_reg: smps45 {
286 /* VDD_DSPEVE, VDD_IVA, VDD_GPU */
287 regulator-name = "smps45";
288 regulator-min-microvolt = < 850000>;
289 regulator-max-microvolt = <1150000>;
290 regulator-always-on;
291 regulator-boot-on;
292 };
294 smps6_reg: smps6 {
295 /* VDD_CORE */
296 regulator-name = "smps6";
297 regulator-min-microvolt = <850000>;
298 regulator-max-microvolt = <1030000>;
299 regulator-always-on;
300 regulator-boot-on;
301 };
303 /* SMPS7 unused */
305 smps8_reg: smps8 {
306 /* VDD_1V8 */
307 regulator-name = "smps8";
308 regulator-min-microvolt = <1800000>;
309 regulator-max-microvolt = <1800000>;
310 regulator-always-on;
311 regulator-boot-on;
312 };
314 /* SMPS9 unused */
316 ldo1_reg: ldo1 {
317 /* VDD_SD */
318 regulator-name = "ldo1";
319 regulator-min-microvolt = <1800000>;
320 regulator-max-microvolt = <3300000>;
321 regulator-boot-on;
322 };
324 ldo2_reg: ldo2 {
325 /* VDD_SHV5 */
326 regulator-name = "ldo2";
327 regulator-min-microvolt = <3300000>;
328 regulator-max-microvolt = <3300000>;
329 regulator-always-on;
330 regulator-boot-on;
331 };
333 ldo3_reg: ldo3 {
334 /* VDDA_1V8_PHY */
335 regulator-name = "ldo3";
336 regulator-min-microvolt = <1800000>;
337 regulator-max-microvolt = <1800000>;
338 regulator-always-on;
339 regulator-boot-on;
340 };
342 ldo9_reg: ldo9 {
343 /* VDD_RTC */
344 regulator-name = "ldo9";
345 regulator-min-microvolt = <1050000>;
346 regulator-max-microvolt = <1050000>;
347 regulator-always-on;
348 regulator-boot-on;
349 };
351 ldoln_reg: ldoln {
352 /* VDDA_1V8_PLL */
353 regulator-name = "ldoln";
354 regulator-min-microvolt = <1800000>;
355 regulator-max-microvolt = <1800000>;
356 regulator-always-on;
357 regulator-boot-on;
358 };
360 ldousb_reg: ldousb {
361 /* VDDA_3V_USB: VDDA_USBHS33 */
362 regulator-name = "ldousb";
363 regulator-min-microvolt = <3300000>;
364 regulator-max-microvolt = <3300000>;
365 regulator-boot-on;
366 };
368 regen1: regen1 {
369 /* VDD_3V3_ON */
370 regulator-name = "regen1";
371 regulator-boot-on;
372 regulator-always-on;
373 };
375 regen2: regen2 {
376 /* Needed for PMIC internal resource */
377 regulator-name = "regen2";
378 regulator-boot-on;
379 regulator-always-on;
380 };
381 };
382 };
384 tps659038_rtc: tps659038_rtc {
385 compatible = "ti,palmas-rtc";
386 interrupt-parent = <&tps659038>;
387 interrupts = <8 IRQ_TYPE_NONE>;
388 wakeup-source;
389 };
391 tps659038_pwr_button: tps659038_pwr_button {
392 compatible = "ti,palmas-pwrbutton";
393 interrupt-parent = <&tps659038>;
394 interrupts = <1 IRQ_TYPE_NONE>;
395 wakeup-source;
396 ti,palmas-long-press-seconds = <13>;
397 };
399 tps659038_gpio: tps659038_gpio {
400 compatible = "ti,palmas-gpio";
401 gpio-controller;
402 #gpio-cells = <2>;
403 };
405 extcon_usb2: tps659038_usb {
406 compatible = "ti,palmas-usb-vid";
407 ti,enable-vbus-detection;
408 ti,enable-gpio-id-detection;
409 id-gpios = <&gpio7 24 GPIO_ACTIVE_HIGH>;
410 };
412 };
414 tmp102: tmp102@48 {
415 compatible = "ti,tmp102";
416 reg = <0x48>;
417 interrupt-parent = <&gpio7>;
418 interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
419 #thermal-sensor-cells = <1>;
420 };
422 tlv320aic3104: tlv320aic3104@18 {
423 compatible = "ti,tlv320aic3104";
424 reg = <0x18>;
425 status = "okay";
426 adc-settle-ms = <40>;
428 AVDD-supply = <&vdd_3v3>;
429 IOVDD-supply = <&vdd_3v3>;
430 DRVDD-supply = <&vdd_3v3>;
431 DVDD-supply = <&aic_dvdd>;
432 };
433 };
435 &i2c3 {
436 status = "okay";
437 clock-frequency = <400000>;
439 mcp_rtc: rtc@6f {
440 compatible = "microchip,mcp7941x";
441 reg = <0x6f>;
442 vcc-supply = <&vdd_3v3>;
444 /* Rev A1 */
445 interrupts-extended = <&gic GIC_SPI 2 IRQ_TYPE_EDGE_RISING
446 &dra7_pmx_core 0x424>;
447 wakeup-source;
448 };
449 };
451 &gpio7 {
452 ti,no-reset-on-init;
453 ti,no-idle-on-init;
454 };
456 &uart3 {
457 status = "okay";
458 interrupts-extended = <&gic GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH
459 &dra7_pmx_core 0x3f8>;
460 };
462 &voltdm_mpu {
463 vdd-supply = <&smps12_reg>;
464 };
466 &voltdm_dspeve {
467 vdd-supply = <&smps45_reg>;
468 };
470 &voltdm_gpu {
471 vdd-supply = <&smps45_reg>;
472 };
474 &voltdm_ivahd {
475 vdd-supply = <&smps45_reg>;
476 };
478 &voltdm_core {
479 vdd-supply = <&smps6_reg>;
480 };
482 &cpu0 {
483 cpu0-voltdm = <&voltdm_mpu>;
484 voltage-tolerance = <1>;
485 };
487 &mac {
488 status = "okay";
489 dual_emac;
490 ti,no-idle;
491 };
493 &cpsw_emac0 {
494 phy_id = <&davinci_mdio>, <1>;
495 phy-mode = "rgmii";
496 dual_emac_res_vlan = <1>;
497 };
499 &cpsw_emac1 {
500 phy_id = <&davinci_mdio>, <2>;
501 phy-mode = "rgmii";
502 dual_emac_res_vlan = <2>;
503 };
505 &mmc1 {
506 status = "okay";
507 pinctrl-names = "default", "hs";
508 pinctrl-0 = <&mmc1_pins_default>;
509 pinctrl-1 = <&mmc1_pins_hs>;
510 vmmc-supply = <&ldo1_reg>;
511 vmmc_aux-supply = <&vdd_3v3>;
512 pbias-supply = <&pbias_mmc_reg>;
513 bus-width = <4>;
514 cd-gpios = <&gpio6 27 0>; /* gpio 219 */
515 };
517 &mmc2 {
518 status = "okay";
519 pinctrl-names = "default", "hs";
520 pinctrl-0 = <&mmc2_pins_default>;
521 pinctrl-1 = <&mmc2_pins_hs>;
522 vmmc-supply = <&vdd_3v3>;
523 bus-width = <8>;
524 ti,non-removable;
525 cap-mmc-dual-data-rate;
526 };
528 &dss {
529 status = "ok";
531 vdda_video-supply = <&ldoln_reg>;
532 };
534 &hdmi {
535 status = "ok";
536 vdda-supply = <&ldo3_reg>;
538 port {
539 hdmi_out: endpoint {
540 remote-endpoint = <&tpd12s015_in>;
541 };
542 };
543 };
545 &mailbox3 {
546 status = "okay";
547 mbox_pru1_0: mbox_pru1_0 {
548 status = "okay";
549 };
550 mbox_pru1_1: mbox_pru1_1 {
551 status = "okay";
552 };
553 };
555 &mailbox4 {
556 status = "okay";
557 mbox_pru2_0: mbox_pru2_0 {
558 status = "okay";
559 };
560 mbox_pru2_1: mbox_pru2_1 {
561 status = "okay";
562 };
563 };
565 &mailbox5 {
566 status = "okay";
567 mbox_ipu1_legacy: mbox_ipu1_legacy {
568 status = "okay";
569 };
570 mbox_dsp1_legacy: mbox_dsp1_legacy {
571 status = "okay";
572 };
573 };
575 &mailbox6 {
576 status = "okay";
577 mbox_ipu2_legacy: mbox_ipu2_legacy {
578 status = "okay";
579 };
580 mbox_dsp2_legacy: mbox_dsp2_legacy {
581 status = "okay";
582 };
583 };
585 &mmu0_dsp1 {
586 status = "okay";
587 };
589 &mmu1_dsp1 {
590 status = "okay";
591 };
593 &mmu0_dsp2 {
594 status = "okay";
595 };
597 &mmu1_dsp2 {
598 status = "okay";
599 };
601 &mmu_ipu1 {
602 status = "okay";
603 };
605 &mmu_ipu2 {
606 status = "okay";
607 };
609 &ipu2 {
610 status = "okay";
611 memory-region = <&ipu2_cma_pool>;
612 mboxes = <&mailbox6 &mbox_ipu2_legacy>;
613 timers = <&timer3>;
614 watchdog-timers = <&timer4>, <&timer9>;
615 };
617 &ipu1 {
618 status = "okay";
619 memory-region = <&ipu1_cma_pool>;
620 mboxes = <&mailbox5 &mbox_ipu1_legacy>;
621 timers = <&timer11>;
622 watchdog-timers = <&timer7>, <&timer8>;
623 };
625 &dsp1 {
626 status = "okay";
627 memory-region = <&dsp1_cma_pool>;
628 mboxes = <&mailbox5 &mbox_dsp1_legacy>;
629 timers = <&timer5>;
630 watchdog-timers = <&timer10>;
631 };
633 &dsp2 {
634 status = "okay";
635 memory-region = <&dsp2_cma_pool>;
636 mboxes = <&mailbox6 &mbox_dsp2_legacy>;
637 timers = <&timer6>;
638 };
640 &usb2_phy1 {
641 phy-supply = <&ldousb_reg>;
642 };
644 &usb2_phy2 {
645 phy-supply = <&ldousb_reg>;
646 };
648 &usb1 {
649 dr_mode = "host";
650 };
652 &omap_dwc3_2 {
653 extcon = <&extcon_usb2>;
654 };
656 &usb2 {
657 /*
658 * Stand alone usage is peripheral only.
659 * However, with some resistor modifications
660 * this port can be used via expansion connectors
661 * as "host" or "dual-role". If so, provide
662 * the necessary dr_mode override in the expansion
663 * board's DT.
664 */
665 dr_mode = "peripheral";
666 };
668 &mcasp3 {
669 status = "okay";
671 op-mode = <0>; /* MCASP_IIS_MODE */
672 tdm-slots = <2>;
673 /* 4 serializers */
674 serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
675 1 2 0 0
676 >;
677 };
679 &pruss1 {
680 status = "okay";
681 pru1_0: pru@4b234000 {
682 mboxes = <&mailbox3 &mbox_pru1_0>;
683 status = "okay";
684 };
686 pru1_1: pru@4b238000 {
687 mboxes = <&mailbox3 &mbox_pru1_1>;
688 status = "okay";
689 };
690 };
692 &pruss2 {
693 status = "okay";
694 pru2_0: pru@4b2b4000 {
695 mboxes = <&mailbox4 &mbox_pru2_0>;
696 status = "okay";
697 };
699 pru2_1: pru@4b2b8000 {
700 mboxes = <&mailbox4 &mbox_pru2_1>;
701 status = "okay";
702 };
703 };
705 &cpu_trips {
706 cpu_alert1: cpu_alert1 {
707 temperature = <50000>; /* millicelsius */
708 hysteresis = <2000>; /* millicelsius */
709 type = "active";
710 };
711 };
713 &cpu_cooling_maps {
714 map1 {
715 trip = <&cpu_alert1>;
716 cooling-device = <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
717 };
718 };
720 &thermal_zones {
721 board_thermal: board_thermal {
722 polling-delay-passive = <1250>; /* milliseconds */
723 polling-delay = <1500>; /* milliseconds */
725 /* sensor ID */
726 thermal-sensors = <&tmp102 0>;
728 board_trips: trips {
729 board_alert0: board_alert {
730 temperature = <40000>; /* millicelsius */
731 hysteresis = <2000>; /* millicelsius */
732 type = "active";
733 };
735 board_crit: board_crit {
736 temperature = <105000>; /* millicelsius */
737 hysteresis = <0>; /* millicelsius */
738 type = "critical";
739 };
740 };
742 board_cooling_maps: cooling-maps {
743 map0 {
744 trip = <&board_alert0>;
745 cooling-device =
746 <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
747 };
748 };
749 };
750 };