summaryrefslogtreecommitdiff
path: root/arch/arm64/boot/dts/amlogic/gxl_p212_2g.dts (plain)
blob: 7d332979d6457b61302ef636767d4c3a64964910
1/*
2 * arch/arm64/boot/dts/amlogic/gxl_p212_2g.dts
3 *
4 * Copyright (C) 2017 Amlogic, Inc. All rights reserved.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 * more details.
15 *
16 */
17
18/dts-v1/;
19
20#include <dt-bindings/interrupt-controller/arm-gic.h>
21#include "mesongxl.dtsi"
22#include "partition_mbox_normal.dtsi"
23/ {
24 model = "Amlogic";
25 amlogic-dt-id = "gxl_p212_2g";
26 compatible = "amlogic, Gxl";
27 interrupt-parent = <&gic>;
28 #address-cells = <2>;
29 #size-cells = <2>;
30
31 aliases {
32 serial0 = &uart_AO;
33 serial1 = &uart_A;
34 serial2 = &uart_B;
35 serial3 = &uart_C;
36 serial4 = &uart_AO_B;
37 };
38
39 ion_dev {
40 compatible = "amlogic, ion_dev";
41 memory-region = <&ion_reserved>;
42 };
43
44 memory@00000000 {
45 device_type = "memory";
46 linux,usable-memory = <0x0 0x0100000 0x0 0x7ff00000>;
47 };
48
49 reserved-memory {
50 #address-cells = <2>;
51 #size-cells = <2>;
52 ranges;
53 /* global autoconfigured region for contiguous allocations */
54 ramoops@0x07400000 {
55 compatible = "ramoops";
56 reg = <0x0 0x07400000 0x0 0x00100000>;
57 record-size = <0x8000>;
58 console-size = <0x8000>;
59 ftrace-size = <0x0>;
60 pmsg-size = <0x8000>;
61 };
62 secmon_reserved:linux,secmon {
63 compatible = "shared-dma-pool";
64 reusable;
65 size = <0x0 0x400000>;
66 alignment = <0x0 0x400000>;
67 alloc-ranges = <0x0 0x05000000 0x0 0x400000>;
68 };
69 secos_reserved:linux,secos {
70 status = "disable";
71 compatible = "amlogic, aml_secos_memory";
72 reg = <0x0 0x05300000 0x0 0x2000000>;
73 no-map;
74 };
75 logo_reserved:linux,meson-fb {
76 compatible = "shared-dma-pool";
77 reusable;
78 size = <0x0 0x800000>;
79 alignment = <0x0 0x400000>;
80 alloc-ranges = <0x0 0x7f800000 0x0 0x800000>;
81 };
82 //don't put other dts in front of logo_reserved
83
84 //di_reserved:linux,di {
85 // compatible = "amlogic, di-mem";
86 /** 10x3133440=30M(0x1e) support 8bit **/
87 // size = <0x0 0x1e00000>;
88 //no-map;
89 //};
90 di_cma_reserved:linux,di_cma {
91 compatible = "shared-dma-pool";
92 reusable;
93 /** 10x3133440=30M(0x1e) support 8bit **/
94 size = <0x0 0x2000000>;
95 alignment = <0x0 0x400000>;
96 };
97 ion_reserved:linux,ion-dev {
98 compatible = "shared-dma-pool";
99 reusable;
100 size = <0x0 0x7C00000>;
101 alignment = <0x0 0x400000>;
102 };
103
104 /* vdin0 CMA pool */
105 //vdin0_cma_reserved:linux,vdin0_cma {
106 // compatible = "shared-dma-pool";
107 // linux,phandle = <4>;
108 // reusable;
109 /* 1920x1080x2x4 =16+4 M */
110 // size = <0x0 0x01400000>;
111 // alignment = <0x0 0x400000>;
112 //};
113 /* vdin1 CMA pool */
114 vdin1_cma_reserved:linux,vdin1_cma {
115 compatible = "shared-dma-pool";
116 reusable;
117 /* 1920x1080x2x4 =16 M */
118 size = <0x0 0x01000000>;
119 alignment = <0x0 0x400000>;
120 };
121 /* POST PROCESS MANAGER */
122 ppmgr_reserved:linux,ppmgr {
123 compatible = "shared-dma-pool";
124 size = <0x0 0x0>;
125 };
126
127 codec_mm_cma:linux,codec_mm_cma {
128 compatible = "shared-dma-pool";
129 reusable;
130 /* ion_codec_mm max can alloc size 80M*/
131 size = <0x0 0x13400000>;
132 alignment = <0x0 0x400000>;
133 linux,contiguous-region;
134 };
135 picdec_cma_reserved:linux,picdec {
136 compatible = "shared-dma-pool";
137 reusable;
138 size = <0x0 0x0>;
139 alignment = <0x0 0x0>;
140 linux,contiguous-region;
141 };
142 /* codec shared reserved */
143 codec_mm_reserved:linux,codec_mm_reserved {
144 compatible = "amlogic, codec-mm-reserved";
145 size = <0x0 0x0>;
146 alignment = <0x0 0x100000>;
147 //no-map;
148 };
149 };
150
151 bt-dev{
152 compatible = "amlogic, bt-dev";
153 dev_name = "bt-dev";
154 status = "okay";
155 gpio_reset = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
156 };
157
158 wifi{
159 compatible = "amlogic, aml_wifi";
160 dev_name = "aml_wifi";
161 status = "okay";
162 interrupt_pin = <&gpio GPIOX_7 GPIO_ACTIVE_HIGH>;
163 irq_trigger_type = "GPIO_IRQ_LOW";
164 dhd_static_buf; //dhd_static_buf support
165 power_on_pin = <&gpio GPIOX_6 GPIO_ACTIVE_HIGH>;
166 pinctrl-names = "default";
167 pinctrl-0 = <&wifi_32k_pins>;
168 pwm_config = <&wifi_pwm_conf>;
169 };
170
171 wifi_pwm_conf:wifi_pwm_conf{
172 pwm_channel1_conf {
173 pwms = <&pwm_ef MESON_PWM_0 30040 0>;
174 duty-cycle = <15020>;
175 times = <8>;
176 };
177 pwm_channel2_conf {
178 pwms = <&pwm_ef MESON_PWM_2 30030 0>;
179 duty-cycle = <15015>;
180 times = <12>;
181 };
182 };
183
184 sd_emmc_c: emmc@d0074000 {
185 status = "okay";
186 compatible = "amlogic, meson-mmc-gxl";
187 reg = <0x0 0xd0074000 0x0 0x2000>;
188 interrupts = <0 218 1>;
189 pinctrl-names = "emmc_clk_cmd_pins", "emmc_all_pins";
190 pinctrl-0 = <&emmc_clk_cmd_pins>;
191 pinctrl-1 = <&emmc_conf_pull_up &emmc_conf_pull_done>;
192 clocks = <&clkc CLKID_SD_EMMC_C>,
193 <&clkc CLKID_SD_EMMC_C_P0_COMP>,
194 <&clkc CLKID_FCLK_DIV2>;
195 clock-names = "core", "clkin0", "clkin1";
196
197 bus-width = <8>;
198 cap-sd-highspeed;
199 cap-mmc-highspeed;
200 mmc-ddr-1_8v;
201 mmc-hs200-1_8v;
202
203 max-frequency = <200000000>;
204 non-removable;
205 disable-wp;
206 emmc {
207 pinname = "emmc";
208 ocr_avail = <0x200080>; /**VDD voltage 3.3 ~ 3.4 */
209 caps = "MMC_CAP_8_BIT_DATA",
210 "MMC_CAP_MMC_HIGHSPEED",
211 "MMC_CAP_SD_HIGHSPEED",
212 "MMC_CAP_NONREMOVABLE",
213 "MMC_CAP_1_8V_DDR",
214 "MMC_CAP_HW_RESET",
215 "MMC_CAP_ERASE",
216 "MMC_CAP_CMD23";
217 caps2 = "MMC_CAP2_HS200", "MMC_CAP2_HS400";
218 f_min = <400000>;
219 f_max = <100000000>;
220 max_req_size = <0x20000>; /**128KB*/
221 gpio_dat3 = <&gpio BOOT_3 GPIO_ACTIVE_HIGH>;
222 hw_reset = <&gpio BOOT_9 GPIO_ACTIVE_HIGH>;
223 card_type = <1>;
224 /* 1:mmc card(include eMMC),
225 * 2:sd card(include tSD)
226 */
227 };
228 };
229
230 sd_emmc_b:sd@d0072000 {
231 status = "okay";
232 compatible = "amlogic, meson-mmc-gxl";
233 reg = <0x0 0xd0072000 0x0 0x2000>;
234 interrupts = <0 217 1>;
235 pinctrl-names = "sd_all_pins",
236 "sd_clk_cmd_pins",
237 "sd_1bit_pins",
238 "sd_clk_cmd_uart_pins",
239 "sd_1bit_uart_pins",
240 "sd_to_ao_uart_pins",
241 "ao_to_sd_uart_pins",
242 "ao_to_sd_jtag_pins",
243 "sd_to_ao_jtag_pins";
244 pinctrl-0 = <&sd_all_pins>;
245 pinctrl-1 = <&sd_clk_cmd_pins>;
246 pinctrl-2 = <&sd_1bit_pins>;
247 pinctrl-3 = <&sd_to_ao_uart_clr_pins
248 &sd_clk_cmd_pins &ao_to_sd_uart_pins>;
249 pinctrl-4 = <&sd_to_ao_uart_clr_pins
250 &sd_1bit_pins &ao_to_sd_uart_pins>;
251 pinctrl-5 = <&sd_all_pins &sd_to_ao_uart_pins>;
252 pinctrl-6 = <&sd_to_ao_uart_clr_pins &ao_to_sd_uart_pins>;
253 pinctrl-7 = <&sd_to_ao_uart_clr_pins &ao_to_sd_uart_pins>;
254 pinctrl-8 = <&sd_all_pins &sd_to_ao_uart_pins>;
255 clocks = <&clkc CLKID_SD_EMMC_B>,
256 <&clkc CLKID_SD_EMMC_B_P0_COMP>,
257 <&clkc CLKID_FCLK_DIV2>;
258 clock-names = "core", "clkin0", "clkin1";
259
260 bus-width = <4>;
261 cap-sd-highspeed;
262 max-frequency = <100000000>;
263 disable-wp;
264 sd {
265 pinname = "sd";
266 ocr_avail = <0x200080>; /**VDD voltage 3.3 ~ 3.4 */
267 caps = "MMC_CAP_4_BIT_DATA",
268 "MMC_CAP_MMC_HIGHSPEED",
269 "MMC_CAP_SD_HIGHSPEED";
270 /* "MMC_CAP_UHS_SDR12",
271 * "MMC_CAP_UHS_SDR25",
272 * "MMC_CAP_UHS_SDR50",
273 * "MMC_CAP_UHS_SDR104";
274 */
275 f_min = <400000>;
276 f_max = <100000000>;
277 max_req_size = <0x20000>; /**128KB*/
278 gpio_dat3 = <&gpio CARD_4 GPIO_ACTIVE_HIGH>;
279 jtag_pin = <&gpio CARD_0 GPIO_ACTIVE_HIGH>;
280 gpio_cd = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
281 card_type = <5>;
282 /* 0:unknown,
283 * 1:mmc card(include eMMC),
284 * 2:sd card(include tSD),
285 * 3:sdio device(ie:sdio-wifi),
286 * 4:SD combo (IO+mem) card,
287 * 5:NON sdio device(means sd/mmc card),
288 * other:reserved
289 */
290 };
291 };
292
293 sd_emmc_a:sdio@d0070000 {
294 status = "okay";
295 compatible = "amlogic, meson-mmc-gxl";
296 reg = <0x0 0xd0070000 0x0 0x2000>;
297 interrupts = <0 216 4>;
298 pinctrl-names = "sdio_clk_cmd_pins", "sdio_all_pins";
299 pinctrl-0 = <&sdio_clk_cmd_pins>;
300 pinctrl-1 = <&sdio_all_pins>;
301 clocks = <&clkc CLKID_SD_EMMC_A>,
302 <&clkc CLKID_SD_EMMC_A_P0_COMP>,
303 <&clkc CLKID_FCLK_DIV2>;
304 clock-names = "core", "clkin0", "clkin1";
305
306 bus-width = <4>;
307 cap-sd-highspeed;
308 cap-mmc-highspeed;
309 max-frequency = <100000000>;
310 non-removable;
311 disable-wp;
312 sdio {
313 pinname = "sdio";
314 ocr_avail = <0x200080>; /**VDD voltage 3.3 ~ 3.4 */
315 caps = "MMC_CAP_4_BIT_DATA",
316 "MMC_CAP_MMC_HIGHSPEED",
317 "MMC_CAP_SD_HIGHSPEED",
318 "MMC_CAP_NONREMOVABLE",
319 "MMC_CAP_UHS_SDR12",
320 "MMC_CAP_UHS_SDR25",
321 "MMC_CAP_UHS_SDR50",
322 "MMC_CAP_UHS_SDR104",
323 "MMC_PM_KEEP_POWER",
324 "MMC_CAP_SDIO_IRQ";
325 f_min = <400000>;
326 f_max = <200000000>;
327 max_req_size = <0x20000>; /**128KB*/
328 card_type = <3>;
329 /* 3:sdio device(ie:sdio-wifi),
330 * 4:SD combo (IO+mem) card
331 */
332 };
333 };
334 mtd_nand{
335 compatible = "amlogic, aml_mtd_nand";
336 dev_name = "mtdnand";
337 status = "disabled";
338 reg = <0x0 0xd0074800 0x0 0x200>;
339 interrupts = < 0 34 1 >;
340 pinctrl-names = "nand_rb_mod","nand_norb_mod", "nand_cs_only";
341 pinctrl-0 = <&all_nand_pins>;
342 pinctrl-1 = <&all_nand_pins>;
343 pinctrl-2 = <&nand_cs_pins>;
344 device_id = <0>;
345 plat-names = "bootloader","nandnormal";
346 plat-num = <2>;
347 plat-part-0 = <&bootloader>;
348 plat-part-1 = <&nandnormal>;
349 bootloader: bootloader{
350 enable_pad ="ce0";
351 busy_pad = "rb0";
352 timming_mode = "mode5";
353 bch_mode = "bch60_1k";
354 t_rea = <20>;
355 t_rhoh = <15>;
356 chip_num = <1>;
357 part_num = <0>;
358 rb_detect = <1>;
359 };
360 nandnormal: nandnormal{
361 enable_pad ="ce0","ce1";
362 busy_pad = "rb0","rb1";
363 timming_mode = "mode5";
364 bch_mode = "bch60_1k";
365 plane_mode = "twoplane";
366 t_rea = <20>;
367 t_rhoh = <15>;
368 chip_num = <2>;
369 part_num = <3>;
370 partition = <&nand_partitions>;
371 rb_detect = <1>;
372 };
373 nand_partitions:nand_partition{
374 logo{
375 offset=<0x0 0x0>;
376 size=<0x0 0x200000>;
377 };
378 recovery{
379 offset=<0x0 0x0>;
380 size=<0x0 0x1000000>;
381 };
382 boot{
383 offset=<0x0 0x0>;
384 size=<0x0 0xC00000>;
385 };
386 system{
387 offset=<0x0 0x0>;
388 size=<0x0 0xDC40000>;
389 };
390 data{
391 offset=<0xffffffff 0xffffffff>;
392 size=<0x0 0x0>;
393 };
394 };
395 };
396
397 ethmac: ethernet@0xc9410000 {
398 compatible = "amlogic, gxbb-eth-dwmac";
399 reg = <0x0 0xc9410000 0x0 0x10000
400 0x0 0xc8834540 0x0 0x8
401 0x0 0xc8834558 0x0 0xc>;
402 interrupts = <0 8 1>;
403 pinctrl-names = "external_eth_pins";
404 pinctrl-0 = <&external_eth_pins>;
405 rst_pin-gpios = <&gpio GPIOZ_14 0>;
406 GPIOZ4_pin-gpios = <&gpio GPIOZ_4 0>;
407 GPIOZ5_pin-gpios = <&gpio GPIOZ_5 0>;
408 mc_val_internal_phy = <0x1800>;
409 mc_val_external_phy = <0x1621>;
410 cali_val = <0x20000>;
411 interrupt-names = "macirq";
412 clocks = <&clkc CLKID_ETH>;
413 clock-names = "ethclk81";
414 internal_phy=<1>;
415 };
416
417 codec_io {
418 compatible = "amlogic, codec_io";
419 #address-cells=<2>;
420 #size-cells=<2>;
421 ranges;
422 io_cbus_base{
423 reg = <0x0 0xC1100000 0x0 0x100000>;
424 };
425 io_dos_base{
426 reg = <0x0 0xc8820000 0x0 0x10000>;
427 };
428 io_hiubus_base{
429 reg = <0x0 0xc883c000 0x0 0x2000>;
430 };
431 io_aobus_base{
432 reg = <0x0 0xc8100000 0x0 0x100000>;
433 };
434 io_vcbus_base{
435 reg = <0x0 0xd0100000 0x0 0x40000>;
436 };
437 io_dmc_base{
438 reg = <0x0 0xc8838000 0x0 0x400>;
439 };
440 };
441
442 codec_mm {
443 compatible = "amlogic, codec, mm";
444 memory-region = <&codec_mm_cma &codec_mm_reserved>;
445 dev_name = "codec_mm";
446 status = "okay";
447 };
448
449 canvas{
450 compatible = "amlogic, meson, canvas";
451 dev_name = "amlogic-canvas";
452 status = "ok";
453 reg = <0x0 0xc8838000 0x0 0x400>;
454 };
455
456 mesonstream {
457 compatible = "amlogic, codec, streambuf";
458 dev_name = "mesonstream";
459 status = "okay";
460 clocks = <&clkc CLKID_DOS_PARSER
461 &clkc CLKID_DEMUX
462 &clkc CLKID_DOS
463 &clkc CLKID_VDEC_MUX
464 &clkc CLKID_HCODEC_MUX
465 &clkc CLKID_HEVC_MUX>;
466 clock-names = "parser_top",
467 "demux",
468 "vdec",
469 "clk_vdec_mux",
470 "clk_hcodec_mux",
471 "clk_hevc_mux";
472 };
473
474 vdec {
475 compatible = "amlogic, vdec";
476 dev_name = "vdec.0";
477 status = "okay";
478 interrupts = <0 3 1
479 0 23 1
480 0 32 1
481 0 43 1
482 0 44 1
483 0 45 1>;
484 interrupt-names = "vsync",
485 "demux",
486 "parser",
487 "mailbox_0",
488 "mailbox_1",
489 "mailbox_2";
490 };
491
492 gpio_keypad{
493 compatible = "amlogic, gpio_keypad";
494 status = "okay";
495 scan_period = <20>;
496 key_num = <1>;
497 key_name = "power";
498 key_code = <116>;
499 key_pin = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
500 interrupts = < 0 70 1
501 0 71 2>;
502 interrupt-names = "irq_keyup", "irq_keydown";
503 };
504
505 aml_sensor0: aml-sensor@0 {
506 compatible = "amlogic, aml-thermal";
507 device_name = "thermal";
508 #thermal-sensor-cells = <1>;
509 cooling_devices {
510 cpufreq_cool_cluster0 {
511 min_state = <1000000>;
512 dyn_coeff = <140>;
513 cluster_id = <0>;
514 node_name = "cpufreq_cool0";
515 device_type = "cpufreq";
516 };
517 cpucore_cool_cluster0 {
518 min_state = <1>;
519 dyn_coeff = <0>;
520 cluster_id = <0>;
521 node_name = "cpucore_cool0";
522 device_type = "cpucore";
523 };
524 gpufreq_cool {
525 min_state = <400>;
526 dyn_coeff = <437>;
527 cluster_id = <0>;
528 node_name = "gpufreq_cool0";
529 device_type = "gpufreq";
530 };
531 gpucore_cool {
532 min_state = <1>;
533 dyn_coeff = <0>;
534 cluster_id = <0>;
535 node_name = "gpucore_cool0";
536 device_type = "gpucore";
537 };
538 };
539 cpufreq_cool0:cpufreq_cool0 {
540 #cooling-cells = <2>; /* min followed by max */
541 };
542 cpucore_cool0:cpucore_cool0 {
543 #cooling-cells = <2>; /* min followed by max */
544 };
545 gpufreq_cool0:gpufreq_cool0 {
546 #cooling-cells = <2>; /* min followed by max */
547 };
548 gpucore_cool0:gpucore_cool0 {
549 #cooling-cells = <2>; /* min followed by max */
550 };
551 };
552 thermal-zones {
553 soc_thermal {
554 polling-delay = <1000>;
555 polling-delay-passive = <100>;
556 sustainable-power = <2150>;
557
558 thermal-sensors = <&aml_sensor0 3>;
559
560 trips {
561 switch_on: trip-point@0 {
562 temperature = <70000>;
563 hysteresis = <1000>;
564 type = "passive";
565 };
566 control: trip-point@1 {
567 temperature = <80000>;
568 hysteresis = <1000>;
569 type = "passive";
570 };
571 hot: trip-point@2 {
572 temperature = <85000>;
573 hysteresis = <5000>;
574 type = "hot";
575 };
576 critical: trip-point@3 {
577 temperature = <260000>;
578 hysteresis = <1000>;
579 type = "critical";
580 };
581 };
582
583 cooling-maps {
584 cpufreq_cooling_map {
585 trip = <&control>;
586 cooling-device = <&cpufreq_cool0 0 4>;
587 contribution = <1024>;
588 };
589 cpucore_cooling_map {
590 trip = <&control>;
591 cooling-device = <&cpucore_cool0 0 3>;
592 contribution = <1024>;
593 };
594 gpufreq_cooling_map {
595 trip = <&control>;
596 cooling-device = <&gpufreq_cool0 0 4>;
597 contribution = <1024>;
598 };
599 gpucore_cooling_map {
600 trip = <&control>;
601 cooling-device = <&gpucore_cool0 0 2>;
602 contribution = <1024>;
603 };
604 };
605 };
606 };
607
608 dwc3: dwc3@c9000000 {
609 compatible = "synopsys, dwc3";
610 reg = <0x0 0xc9000000 0x0 0x100000>;
611 interrupts = <0 30 4>;
612 usb-phy = <&usb2_phy>, <&usb3_phy>;
613 cpu-type = "gxl";
614 clock-src = "usb3.0";
615 };
616
617 usb2_phy: usb2phy@d0078000 {
618 compatible = "amlogic, amlogic-new-usb2";
619 portnum = <3>;
620 reg = <0x0 0xd0078000 0x0 0x80
621 0x0 0xc1104408 0x0 0x4>;
622 };
623
624 usb3_phy: usb3phy@d0078080 {
625 compatible = "amlogic, amlogic-new-usb3";
626 portnum = <0>;
627 reg = <0x0 0xd0078080 0x0 0x20>;
628 };
629
630 dwc2_a {
631 compatible = "amlogic, dwc2";
632 device_name = "dwc2_a";
633 reg = <0x0 0xc9100000 0x0 0x40000>;
634 status = "okay";
635 interrupts = <0 31 4>;
636 pl-periph-id = <0>; /** lm name */
637 clock-src = "usb0"; /** clock src */
638 port-id = <0>; /** ref to mach/usb.h */
639 port-type = <2>; /** 0: otg, 1: host, 2: slave */
640 port-speed = <0>; /** 0: default, high, 1: full */
641 port-config = <0>; /** 0: default */
642 port-dma = <0>; /** 0: default ... 6: disable*/
643 port-id-mode = <0>; /** 0: hardware, 1: sw_host, 2: sw_slave*/
644 usb-fifo = <728>;
645 cpu-type = "gxl";
646 controller-type = <1>; /** 0: normal, 1: host, 2: device*/
647 phy-reg = <0xd0078000>;
648 phy-reg-size = <0xa0>;
649 clocks = <&clkc CLKID_USB_GENERAL
650 &clkc CLKID_USB1_TO_DDR
651 &clkc CLKID_USB1>;
652 clock-names = "usb_general",
653 "usb1",
654 "usb1_to_ddr";
655 };
656
657 meson-amvideom {
658 compatible = "amlogic, amvideom";
659 dev_name = "amvideom";
660 status = "okay";
661 interrupts = <0 3 1>;
662 interrupt-names = "vsync";
663 };
664
665 vout {
666 compatible = "amlogic, vout";
667 dev_name = "vout";
668 status = "okay";
669 fr_auto_policy = <0>;
670 };
671
672 vdac {
673 compatible = "amlogic, vdac";
674 dev_name = "vdac";
675 status = "okay";
676 };
677
678 cvbsout {
679 compatible = "amlogic, cvbsout-gxl";
680 dev_name = "cvbsout";
681 status = "okay";
682 clocks = <&clkc CLKID_VCLK2_ENCI
683 &clkc CLKID_VCLK2_VENCI0
684 &clkc CLKID_VCLK2_VENCI1
685 &clkc CLKID_DAC_CLK>;
686 clock-names = "venci_top_gate",
687 "venci_0_gate",
688 "venci_1_gate",
689 "vdac_clk_gate";
690
691 /* performance: reg_address, reg_value */
692 /* s905x */
693 performance = <0x1bf0 0x9
694 0x1b56 0x343
695 0x1b12 0x8080
696 0x1b05 0xfd
697 0x1c59 0xf752
698 0xffff 0x0>; /* ending flag */
699 };
700
701 amhdmitx: amhdmitx{
702 compatible = "amlogic, amhdmitx";
703 dev_name = "amhdmitx";
704 status = "okay";
705 vend-data = <&vend_data>;
706 pinctrl-names="hdmitx_hpd", "hdmitx_ddc";
707 pinctrl-0=<&hdmitx_hpd>;
708 pinctrl-1=<&hdmitx_ddc>;
709 /* HPD, 57 + 32 = 89; CEC, 151 + 32 = 183*/
710 interrupts = <0 57 1>;
711 interrupt-names = "hdmitx_hpd";
712 /* 0:M8B 1:GXBB 2:GXTVBB 3:GXL 4:GXM
713 * 5:TXL 6:TXLX 7:AXG 8:GXLX 9:TXHD
714 */
715 ic_type = <3>;
716 vend_data: vend_data{ /* Should modified by Customer */
717 vendor_name = "Amlogic"; /* Max Chars: 8 */
718 /* standards.ieee.org/develop/regauth/oui/oui.txt */
719 vendor_id = <0x000000>;
720 product_desc = "MBox Meson Ref"; /* Max Chars: 16 */
721 };
722 };
723
724 aocec: aocec{
725 compatible = "amlogic, amlogic-aocec";
726 device_name = "aocec";
727 status = "okay";
728 vendor_id = <0x000000>;
729 cec_osd_string = "MBox"; /* Max Chars: 14 */
730 cec_version = <5>; /* 5: 1.4, 6: 2.0 */
731 port_num = <1>;
732 arc_port_mask = <0x0>;
733 interrupts = <0 199 1>;
734 interrupt-names = "hdmi_aocec";
735 pinctrl-names = "default";
736 pinctrl-0=<&hdmitx_aocec>;
737 reg = <0x0 0xc810023c 0x0 0x4
738 0x0 0xc8100000 0x0 0x200>;
739 };
740
741 sysled {
742 compatible = "amlogic, sysled";
743 dev_name = "sysled";
744 status = "disabled";
745 led_gpio = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>;
746 led_active_low = <1>;
747 };
748
749 meson-fb {
750 compatible = "amlogic, meson-fb";
751 memory-region = <&logo_reserved>;
752 dev_name = "meson-fb";
753 status = "okay";
754 interrupts = <0 3 1
755 0 89 1>;
756 interrupt-names = "viu-vsync", "rdma";
757 mem_size = <0x00800000 0x01800000 0x00100000>;
758 /* uboot logo,fb0/fb1 memory size,if afbcd fb0=0x01851000*/
759 display_mode_default = "1080p60hz";
760 scale_mode = <1>;
761 /** 0:VPU free scale 1:OSD free scale 2:OSD super scale */
762 display_size_default = <1920 1080 1920 3240 32>;
763 /*1920*1080*4*3 = 0x17BB000*/
764 logo_addr = "0x7f800000";
765 };
766 ge2d {
767 compatible = "amlogic, ge2d";
768 dev_name = "ge2d";
769 status = "okay";
770 interrupts = <0 150 1>;
771 interrupt-names = "ge2d";
772 clocks = <&clkc CLKID_VAPB_MUX>,
773 <&clkc CLKID_GE2D_GATE>,
774 <&clkc CLKID_G2D>;
775 clock-names = "clk_vapb_0",
776 "clk_ge2d",
777 "clk_ge2d_gate";
778 };
779
780
781 /* AUDIO MESON DEVICES */
782 i2s_dai: I2S {
783 #sound-dai-cells = <0>;
784 compatible = "amlogic, aml-i2s-dai";
785 clocks =
786 <&clkc CLKID_MPLL2>,
787 <&clkc CLKID_AMCLK_COMP>,
788 <&clkc CLKID_AIU_GLUE>,
789 <&clkc CLKID_IEC958>,
790 <&clkc CLKID_I2S_OUT>,
791 <&clkc CLKID_AMCLK>,
792 <&clkc CLKID_AIFIFO2>,
793 <&clkc CLKID_MIXER>,
794 <&clkc CLKID_MIXER_IFACE>,
795 <&clkc CLKID_ADC>,
796 <&clkc CLKID_AIU_TOP>,
797 <&clkc CLKID_AOCLK_GATE>,
798 <&clkc CLKID_I2S_SPDIF>;
799 clock-names =
800 "mpll",
801 "mclk",
802 "top_glue",
803 "aud_buf",
804 "i2s_out",
805 "amclk_measure",
806 "aififo2",
807 "aud_mixer",
808 "mixer_reg",
809 "adc",
810 "top_level",
811 "aoclk",
812 "aud_in";
813 i2s_pos_sync = <0>;
814 /*DMIC;*/ /* I2s Mic or Dmic, default for I2S mic */
815 };
816 dmic:snd_dmic {
817 #sound-dai-cells = <0>;
818 compatible = "aml, aml_snd_dmic";
819 reg = <0x0 0xd0042000 0x0 0x2000>;
820 status = "disabled";
821 resets = <
822 &clkc CLKID_PDM_GATE
823 >;
824 reset-names = "pdm";
825 pinctrl-names = "audio_dmic";
826 pinctrl-0 = <&aml_dmic_pins>;
827 clocks = <&clkc CLKID_PDM_COMP>,
828 <&clkc CLKID_AMCLK_COMP>;
829 clock-names = "pdm", "mclk";
830 };
831 spdif_dai: SPDIF {
832 #sound-dai-cells = <0>;
833 compatible = "amlogic, aml-spdif-dai";
834 clocks =
835 <&clkc CLKID_MPLL1>,
836 <&clkc CLKID_I958_COMP>,
837 <&clkc CLKID_AMCLK_COMP>,
838 <&clkc CLKID_I958_COMP_SPDIF>,
839 <&clkc CLKID_CLK81>,
840 <&clkc CLKID_IEC958>,
841 <&clkc CLKID_IEC958_GATE>;
842 clock-names =
843 "mpll1",
844 "i958",
845 "mclk",
846 "spdif",
847 "clk_81",
848 "iec958",
849 "iec958_amclk";
850 };
851 pcm_dai: PCM {
852 #sound-dai-cells = <0>;
853 compatible = "amlogic, aml-pcm-dai";
854 pinctrl-names = "audio_pcm";
855 pinctrl-0 = <&audio_pcm_pins>;
856 clocks =
857 <&clkc CLKID_MPLL0>,
858 <&clkc CLKID_PCM_MCLK_COMP>,
859 <&clkc CLKID_PCM_SCLK_GATE>;
860 clock-names =
861 "mpll0",
862 "pcm_mclk",
863 "pcm_sclk";
864 pcm_mode = <1>; /* 0=slave mode, 1=master mode */
865 };
866 i2s_plat: i2s_platform {
867 compatible = "amlogic, aml-i2s";
868 interrupts = <0 29 1>;
869 };
870 pcm_plat: pcm_platform {
871 compatible = "amlogic, aml-pcm";
872 };
873 spdif_codec: spdif_codec{
874 #sound-dai-cells = <0>;
875 compatible = "amlogic, aml-spdif-codec";
876 pinctrl-names = "audio_spdif";
877 pinctrl-0 = <&audio_spdif_pins>;
878 };
879 pcm_codec: pcm_codec{
880 #sound-dai-cells = <0>;
881 compatible = "amlogic, pcm2BT-codec";
882 };
883 /* endof AUDIO MESON DEVICES */
884
885 /* AUDIO board specific */
886 dummy_codec:dummy{
887 #sound-dai-cells = <0>;
888 compatible = "amlogic, aml_dummy_codec";
889 status = "disable";
890 };
891 amlogic_codec:t9015{
892 #sound-dai-cells = <0>;
893 compatible = "amlogic, aml_codec_T9015";
894 reg = <0x0 0xc8832000 0x0 0x14>;
895 status = "okay";
896 };
897 aml_sound_meson {
898 compatible = "aml, meson-snd-card";
899 status = "okay";
900 aml-sound-card,format = "i2s";
901 aml_sound_card,name = "AML-MESONAUDIO";
902 aml,audio-routing =
903 "Ext Spk","LOUTL",
904 "Ext Spk","LOUTR";
905
906 mute_gpio-gpios = <&gpio GPIOH_5 0>;
907 mute_inv;
908 hp_disable;
909 hp_paraments = <800 300 0 5 1>;
910 pinctrl-names = "audio_i2s";
911 pinctrl-0 = <&audio_i2s_pins>;
912 cpu_list = <&cpudai0 &cpudai1 &cpudai2>;
913 codec_list = <&codec0 &codec1 &codec2>;
914 plat_list = <&i2s_plat &i2s_plat &pcm_plat>;
915 cpudai0: cpudai0 {
916 sound-dai = <&i2s_dai>;
917 };
918 cpudai1: cpudai1 {
919 sound-dai = <&spdif_dai>;
920 };
921 cpudai2: cpudai2 {
922 sound-dai = <&pcm_dai>;
923 };
924 codec0: codec0 {
925 sound-dai = <&amlogic_codec>;
926 };
927 codec1: codec1 {
928 sound-dai = <&spdif_codec>;
929 };
930 codec2: codec2 {
931 sound-dai = <&pcm_codec>;
932 };
933 };
934 /* END OF AUDIO board specific */
935 rdma{
936 compatible = "amlogic, meson, rdma";
937 dev_name = "amlogic-rdma";
938 status = "ok";
939 interrupts = <0 89 1>;
940 interrupt-names = "rdma";
941 };
942
943 amvenc_avc{
944 compatible = "amlogic, amvenc_avc";
945 dev_name = "amvenc_avc";
946 status = "okay";
947 interrupts = <0 45 1>;
948 interrupt-names = "mailbox_2";
949 };
950
951 hevc_enc{
952 compatible = "cnm, HevcEnc";
953 dev_name = "HevcEnc";
954 status = "okay";
955 interrupts = <0 187 1>;
956 interrupt-names = "wave420l_irq";
957 #address-cells=<2>;
958 #size-cells=<2>;
959 ranges;
960 io_reg_base{
961 reg = <0x0 0xc8810000 0x0 0x4000>;
962 };
963 };
964
965 picdec {
966 compatible = "amlogic, picdec";
967 memory-region = <&picdec_cma_reserved>;
968 dev_name = "picdec";
969 status = "okay";
970 };
971
972 ppmgr {
973 compatible = "amlogic, ppmgr";
974 memory-region = <&ppmgr_reserved>;
975 dev_name = "ppmgr";
976 status = "okay";
977 };
978
979 deinterlace {
980 compatible = "amlogic, deinterlace";
981 status = "okay";
982 flag_cma = <1>;/*0:use reserved;1:use cma*/
983 //memory-region = <&di_reserved>;
984 memory-region = <&di_cma_reserved>;
985 interrupts = <0 46 1 0 6 1>;
986 interrupt-names = "de_irq", "timerc";
987 /*
988 * nr_size(byte) = 1920*544*2(yuv422 8bit) |
989 * 1920*544*2*12/8(yuv422 10bit)
990 * | 1920*544*2*10/8(yuv422 10bit full pack mode)
991 */
992 /* mtn_size(byte) = 1920*544/2 */
993 /* count_size(byte) = 1920*544/2 */
994 buffer-size = <3133440>;
995 hw-version = <2>;
996 };
997
998 ionvideo {
999 compatible = "amlogic, ionvideo";
1000 dev_name = "ionvideo";
1001 status = "okay";
1002 };
1003
1004 amlvideo {
1005 compatible = "amlogic, amlvideo";
1006 dev_name = "amlvideo";
1007 status = "okay";
1008 };
1009
1010 amlvideo2_0 {
1011 compatible = "amlogic, amlvideo2";
1012 dev_name = "amlvideo2";
1013 status = "okay";
1014 amlvideo2_id = <0>;
1015 cma_mode = <1>;
1016 };
1017
1018 amlvideo2_1 {
1019 compatible = "amlogic, amlvideo2";
1020 dev_name = "amlvideo2";
1021 status = "okay";
1022 amlvideo2_id = <1>;
1023 cma_mode = <1>;
1024 };
1025
1026 /*if you want to use vdin just modify status to "ok"*/
1027 vdin0 {
1028 compatible = "amlogic, vdin";
1029 /*memory-region = <&vdin0_cma_reserved>;*/
1030 dev_name = "vdin0";
1031 status = "ok";
1032 reserve-iomap = "true";
1033 flag_cma = <1>;/*1:share with codec_mm;2:cma alone*/
1034 /*MByte, if 10bit disable: 64M(YUV422),
1035 *if 10bit enable: 64*1.5 = 96M(YUV422)
1036 *if support 4K2K-YUV444-10bit-WR:3840*2160*4*4 ~= 128M
1037 *if support 4K2K-YUV422-10bit-wr:3840*2160*3*4 ~= 96M
1038 *if support 4K2K-YUV422-8BIT-WR:3840*2160*2*4 ~= 64M
1039 *if support 1080p-YUV422-8BIT-WR:1920*1080*2*4 ~= 16M
1040 */
1041 cma_size = <16>;
1042 interrupts = <0 83 1>;
1043 rdma-irq = <2>;
1044 /*clocks = <&clock CLK_FPLL_DIV5>,
1045 * <&clock CLK_VDIN_MEAS_CLK>;
1046 *clock-names = "fclk_div5", "cts_vdin_meas_clk";
1047 */
1048 vdin_id = <0>;
1049 /*vdin write mem color depth support:
1050 *bit0:support 8bit
1051 *bit1:support 9bit
1052 *bit2:support 10bit
1053 *bit3:support 12bit
1054 *bit4:support yuv422 10bit full pack mode (from txl new add)
1055 */
1056 tv_bit_mode = <1>;
1057 };
1058 vdin1 {
1059 compatible = "amlogic, vdin";
1060 memory-region = <&vdin1_cma_reserved>;
1061 dev_name = "vdin1";
1062 status = "ok";
1063 reserve-iomap = "true";
1064 flag_cma = <0>;/*1:share with codec_mm;0:cma alone*/
1065 interrupts = <0 85 1>;
1066 rdma-irq = <4>;
1067 /*clocks = <&clock CLK_FPLL_DIV5>,
1068 * <&clock CLK_VDIN_MEAS_CLK>;
1069 *clock-names = "fclk_div5", "cts_vdin_meas_clk";
1070 */
1071 vdin_id = <1>;
1072 /*vdin write mem color depth support:
1073 *bit0:support 8bit
1074 *bit1:support 9bit
1075 *bit2:support 10bit
1076 *bit3:support 12bit
1077 */
1078 tv_bit_mode = <1>;
1079 };
1080
1081 amlvecm {
1082 compatible = "amlogic, vecm";
1083 dev_name = "aml_vecm";
1084 status = "okay";
1085 gamma_en = <0>;/*1:enabel ;0:disable*/
1086 wb_en = <0>;/*1:enabel ;0:disable*/
1087 cm_en = <0>;/*1:enabel ;0:disable*/
1088 };
1089
1090 unifykey{
1091 compatible = "amlogic, unifykey";
1092 status = "ok";
1093
1094 unifykey-num = <14>;
1095 unifykey-index-0 = <&keysn_0>;
1096 unifykey-index-1 = <&keysn_1>;
1097 unifykey-index-2 = <&keysn_2>;
1098 unifykey-index-3 = <&keysn_3>;
1099 unifykey-index-4 = <&keysn_4>;
1100 unifykey-index-5 = <&keysn_5>;
1101 unifykey-index-6 = <&keysn_6>;
1102 unifykey-index-7 = <&keysn_7>;
1103 unifykey-index-8 = <&keysn_8>;
1104 unifykey-index-9 = <&keysn_9>;
1105 unifykey-index-10= <&keysn_10>;
1106 unifykey-index-11= <&keysn_11>;
1107 unifykey-index-12= <&keysn_12>;
1108 unifykey-index-13= <&keysn_13>;
1109
1110 keysn_0: key_0{
1111 key-name = "usid";
1112 key-device = "normal";
1113 key-permit = "read","write","del";
1114 };
1115 keysn_1:key_1{
1116 key-name = "mac";
1117 key-device = "normal";
1118 key-permit = "read","write","del";
1119 };
1120 keysn_2:key_2{
1121 key-name = "hdcp";
1122 key-device = "secure";
1123 key-type = "sha1";
1124 key-permit = "read","write","del";
1125 };
1126 keysn_3:key_3{
1127 key-name = "secure_boot_set";
1128 key-device = "efuse";
1129 key-permit = "write";
1130 };
1131 keysn_4:key_4{
1132 key-name = "mac_bt";
1133 key-device = "normal";
1134 key-permit = "read","write","del";
1135 key-type = "mac";
1136 };
1137 keysn_5:key_5{
1138 key-name = "mac_wifi";
1139 key-device = "normal";
1140 key-permit = "read","write","del";
1141 key-type = "mac";
1142 };
1143 keysn_6:key_6{
1144 key-name = "hdcp2_tx";
1145 key-device = "normal";
1146 key-permit = "read","write","del";
1147 };
1148 keysn_7:key_7{
1149 key-name = "hdcp2_rx";
1150 key-device = "normal";
1151 key-permit = "read","write","del";
1152 };
1153 keysn_8:key_8{
1154 key-name = "widevinekeybox";
1155 key-device = "secure";
1156 key-permit = "read","write","del";
1157 };
1158 keysn_9:key_9{
1159 key-name = "deviceid";
1160 key-device = "normal";
1161 key-permit = "read","write","del";
1162 };
1163 keysn_10:key_10{
1164 key-name = "hdcp22_fw_private";
1165 key-device = "secure";
1166 key-permit = "read","write","del";
1167 };
1168 keysn_11:key_11{
1169 key-name = "PlayReadykeybox25";
1170 key-device = "secure";
1171 key-permit = "read","write","del";
1172 };
1173 keysn_12:key_12{
1174 key-name = "prpubkeybox";// PlayReady
1175 key-device = "secure";
1176 key-permit = "read","write","del";
1177 };
1178 keysn_13:key_13{
1179 key-name = "prprivkeybox";// PlayReady
1180 key-device = "secure";
1181 key-permit = "read","write","del";
1182 };
1183 };//End unifykey
1184};
1185&efuse {
1186 status = "ok";
1187};
1188
1189&pwm_ef {
1190 status = "okay";
1191};
1192
1193&audio_data{
1194 status = "okay";
1195};
1196