forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-10 23fa18eaa71266feff7ba8d83022d9e1cc83c65a
kernel/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
....@@ -1,46 +1,7 @@
1
-/*
2
- * Copyright (C) 2016 ARM Ltd.
3
- * based on the Allwinner H3 dtsi:
4
- * Copyright (C) 2015 Jens Kuske <jenskuske@gmail.com>
5
- *
6
- * This file is dual-licensed: you can use it either under the terms
7
- * of the GPL or the X11 license, at your option. Note that this dual
8
- * licensing only applies to this file, and not this project as a
9
- * whole.
10
- *
11
- * a) This file is free software; you can redistribute it and/or
12
- * modify it under the terms of the GNU General Public License as
13
- * published by the Free Software Foundation; either version 2 of the
14
- * License, or (at your option) any later version.
15
- *
16
- * This file is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- * GNU General Public License for more details.
20
- *
21
- * Or, alternatively,
22
- *
23
- * b) Permission is hereby granted, free of charge, to any person
24
- * obtaining a copy of this software and associated documentation
25
- * files (the "Software"), to deal in the Software without
26
- * restriction, including without limitation the rights to use,
27
- * copy, modify, merge, publish, distribute, sublicense, and/or
28
- * sell copies of the Software, and to permit persons to whom the
29
- * Software is furnished to do so, subject to the following
30
- * conditions:
31
- *
32
- * The above copyright notice and this permission notice shall be
33
- * included in all copies or substantial portions of the Software.
34
- *
35
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
36
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
37
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
38
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
39
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
40
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
41
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
42
- * OTHER DEALINGS IN THE SOFTWARE.
43
- */
1
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2
+// Copyright (C) 2016 ARM Ltd.
3
+// based on the Allwinner H3 dtsi:
4
+// Copyright (C) 2015 Jens Kuske <jenskuske@gmail.com>
445
456 #include <dt-bindings/clock/sun50i-a64-ccu.h>
467 #include <dt-bindings/clock/sun8i-de2.h>
....@@ -49,6 +10,7 @@
4910 #include <dt-bindings/reset/sun50i-a64-ccu.h>
5011 #include <dt-bindings/reset/sun8i-de2.h>
5112 #include <dt-bindings/reset/sun8i-r-ccu.h>
13
+#include <dt-bindings/thermal/thermal.h>
5214
5315 / {
5416 interrupt-parent = <&gic>;
....@@ -84,32 +46,60 @@
8446 #size-cells = <0>;
8547
8648 cpu0: cpu@0 {
87
- compatible = "arm,cortex-a53", "arm,armv8";
49
+ compatible = "arm,cortex-a53";
8850 device_type = "cpu";
8951 reg = <0>;
9052 enable-method = "psci";
53
+ next-level-cache = <&L2>;
54
+ clocks = <&ccu CLK_CPUX>;
55
+ clock-names = "cpu";
56
+ #cooling-cells = <2>;
9157 };
9258
9359 cpu1: cpu@1 {
94
- compatible = "arm,cortex-a53", "arm,armv8";
60
+ compatible = "arm,cortex-a53";
9561 device_type = "cpu";
9662 reg = <1>;
9763 enable-method = "psci";
64
+ next-level-cache = <&L2>;
65
+ clocks = <&ccu CLK_CPUX>;
66
+ clock-names = "cpu";
67
+ #cooling-cells = <2>;
9868 };
9969
10070 cpu2: cpu@2 {
101
- compatible = "arm,cortex-a53", "arm,armv8";
71
+ compatible = "arm,cortex-a53";
10272 device_type = "cpu";
10373 reg = <2>;
10474 enable-method = "psci";
75
+ next-level-cache = <&L2>;
76
+ clocks = <&ccu CLK_CPUX>;
77
+ clock-names = "cpu";
78
+ #cooling-cells = <2>;
10579 };
10680
10781 cpu3: cpu@3 {
108
- compatible = "arm,cortex-a53", "arm,armv8";
82
+ compatible = "arm,cortex-a53";
10983 device_type = "cpu";
11084 reg = <3>;
11185 enable-method = "psci";
86
+ next-level-cache = <&L2>;
87
+ clocks = <&ccu CLK_CPUX>;
88
+ clock-names = "cpu";
89
+ #cooling-cells = <2>;
11290 };
91
+
92
+ L2: l2-cache {
93
+ compatible = "cache";
94
+ cache-level = <2>;
95
+ };
96
+ };
97
+
98
+ de: display-engine {
99
+ compatible = "allwinner,sun50i-a64-display-engine";
100
+ allwinner,pipelines = <&mixer0>,
101
+ <&mixer1>;
102
+ status = "disabled";
113103 };
114104
115105 osc24M: osc24M_clk {
....@@ -123,15 +113,16 @@
123113 #clock-cells = <0>;
124114 compatible = "fixed-clock";
125115 clock-frequency = <32768>;
126
- clock-output-names = "osc32k";
116
+ clock-output-names = "ext-osc32k";
127117 };
128118
129
- iosc: internal-osc-clk {
130
- #clock-cells = <0>;
131
- compatible = "fixed-clock";
132
- clock-frequency = <16000000>;
133
- clock-accuracy = <300000000>;
134
- clock-output-names = "iosc";
119
+ pmu {
120
+ compatible = "arm,cortex-a53-pmu";
121
+ interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
122
+ <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
123
+ <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
124
+ <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
125
+ interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
135126 };
136127
137128 psci {
....@@ -139,26 +130,34 @@
139130 method = "smc";
140131 };
141132
142
- sound_spdif {
133
+ sound: sound {
143134 compatible = "simple-audio-card";
144
- simple-audio-card,name = "On-board SPDIF";
135
+ simple-audio-card,name = "sun50i-a64-audio";
136
+ simple-audio-card,format = "i2s";
137
+ simple-audio-card,frame-master = <&cpudai>;
138
+ simple-audio-card,bitclock-master = <&cpudai>;
139
+ simple-audio-card,mclk-fs = <128>;
140
+ simple-audio-card,aux-devs = <&codec_analog>;
141
+ simple-audio-card,routing =
142
+ "Left DAC", "DACL",
143
+ "Right DAC", "DACR",
144
+ "ADCL", "Left ADC",
145
+ "ADCR", "Right ADC";
146
+ status = "disabled";
145147
146
- simple-audio-card,cpu {
147
- sound-dai = <&spdif>;
148
+ cpudai: simple-audio-card,cpu {
149
+ sound-dai = <&dai>;
148150 };
149151
150
- simple-audio-card,codec {
151
- sound-dai = <&spdif_out>;
152
+ link_codec: simple-audio-card,codec {
153
+ sound-dai = <&codec>;
152154 };
153
- };
154
-
155
- spdif_out: spdif-out {
156
- #sound-dai-cells = <0>;
157
- compatible = "linux,spdif-dit";
158155 };
159156
160157 timer {
161158 compatible = "arm,armv8-timer";
159
+ allwinner,erratum-unknown1;
160
+ arm,no-tick-in-suspend;
162161 interrupts = <GIC_PPI 13
163162 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
164163 <GIC_PPI 14
....@@ -169,13 +168,76 @@
169168 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
170169 };
171170
171
+ thermal-zones {
172
+ cpu_thermal: cpu0-thermal {
173
+ /* milliseconds */
174
+ polling-delay-passive = <0>;
175
+ polling-delay = <0>;
176
+ thermal-sensors = <&ths 0>;
177
+
178
+ cooling-maps {
179
+ map0 {
180
+ trip = <&cpu_alert0>;
181
+ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
182
+ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
183
+ <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
184
+ <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
185
+ };
186
+ map1 {
187
+ trip = <&cpu_alert1>;
188
+ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
189
+ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
190
+ <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
191
+ <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
192
+ };
193
+ };
194
+
195
+ trips {
196
+ cpu_alert0: cpu_alert0 {
197
+ /* milliCelsius */
198
+ temperature = <75000>;
199
+ hysteresis = <2000>;
200
+ type = "passive";
201
+ };
202
+
203
+ cpu_alert1: cpu_alert1 {
204
+ /* milliCelsius */
205
+ temperature = <90000>;
206
+ hysteresis = <2000>;
207
+ type = "hot";
208
+ };
209
+
210
+ cpu_crit: cpu_crit {
211
+ /* milliCelsius */
212
+ temperature = <110000>;
213
+ hysteresis = <2000>;
214
+ type = "critical";
215
+ };
216
+ };
217
+ };
218
+
219
+ gpu0_thermal: gpu0-thermal {
220
+ /* milliseconds */
221
+ polling-delay-passive = <0>;
222
+ polling-delay = <0>;
223
+ thermal-sensors = <&ths 1>;
224
+ };
225
+
226
+ gpu1_thermal: gpu1-thermal {
227
+ /* milliseconds */
228
+ polling-delay-passive = <0>;
229
+ polling-delay = <0>;
230
+ thermal-sensors = <&ths 2>;
231
+ };
232
+ };
233
+
172234 soc {
173235 compatible = "simple-bus";
174236 #address-cells = <1>;
175237 #size-cells = <1>;
176238 ranges;
177239
178
- de2@1000000 {
240
+ bus@1000000 {
179241 compatible = "allwinner,sun50i-a64-de2";
180242 reg = <0x1000000 0x400000>;
181243 allwinner,sram = <&de2_sram 1>;
....@@ -185,14 +247,88 @@
185247
186248 display_clocks: clock@0 {
187249 compatible = "allwinner,sun50i-a64-de2-clk";
188
- reg = <0x0 0x100000>;
189
- clocks = <&ccu CLK_DE>,
190
- <&ccu CLK_BUS_DE>;
191
- clock-names = "mod",
192
- "bus";
250
+ reg = <0x0 0x10000>;
251
+ clocks = <&ccu CLK_BUS_DE>,
252
+ <&ccu CLK_DE>;
253
+ clock-names = "bus",
254
+ "mod";
193255 resets = <&ccu RST_BUS_DE>;
194256 #clock-cells = <1>;
195257 #reset-cells = <1>;
258
+ };
259
+
260
+ rotate: rotate@20000 {
261
+ compatible = "allwinner,sun50i-a64-de2-rotate",
262
+ "allwinner,sun8i-a83t-de2-rotate";
263
+ reg = <0x20000 0x10000>;
264
+ interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
265
+ clocks = <&display_clocks CLK_BUS_ROT>,
266
+ <&display_clocks CLK_ROT>;
267
+ clock-names = "bus",
268
+ "mod";
269
+ resets = <&display_clocks RST_ROT>;
270
+ };
271
+
272
+ mixer0: mixer@100000 {
273
+ compatible = "allwinner,sun50i-a64-de2-mixer-0";
274
+ reg = <0x100000 0x100000>;
275
+ clocks = <&display_clocks CLK_BUS_MIXER0>,
276
+ <&display_clocks CLK_MIXER0>;
277
+ clock-names = "bus",
278
+ "mod";
279
+ resets = <&display_clocks RST_MIXER0>;
280
+
281
+ ports {
282
+ #address-cells = <1>;
283
+ #size-cells = <0>;
284
+
285
+ mixer0_out: port@1 {
286
+ #address-cells = <1>;
287
+ #size-cells = <0>;
288
+ reg = <1>;
289
+
290
+ mixer0_out_tcon0: endpoint@0 {
291
+ reg = <0>;
292
+ remote-endpoint = <&tcon0_in_mixer0>;
293
+ };
294
+
295
+ mixer0_out_tcon1: endpoint@1 {
296
+ reg = <1>;
297
+ remote-endpoint = <&tcon1_in_mixer0>;
298
+ };
299
+ };
300
+ };
301
+ };
302
+
303
+ mixer1: mixer@200000 {
304
+ compatible = "allwinner,sun50i-a64-de2-mixer-1";
305
+ reg = <0x200000 0x100000>;
306
+ clocks = <&display_clocks CLK_BUS_MIXER1>,
307
+ <&display_clocks CLK_MIXER1>;
308
+ clock-names = "bus",
309
+ "mod";
310
+ resets = <&display_clocks RST_MIXER1>;
311
+
312
+ ports {
313
+ #address-cells = <1>;
314
+ #size-cells = <0>;
315
+
316
+ mixer1_out: port@1 {
317
+ #address-cells = <1>;
318
+ #size-cells = <0>;
319
+ reg = <1>;
320
+
321
+ mixer1_out_tcon0: endpoint@0 {
322
+ reg = <0>;
323
+ remote-endpoint = <&tcon0_in_mixer1>;
324
+ };
325
+
326
+ mixer1_out_tcon1: endpoint@1 {
327
+ reg = <1>;
328
+ remote-endpoint = <&tcon1_in_mixer1>;
329
+ };
330
+ };
331
+ };
196332 };
197333 };
198334
....@@ -215,6 +351,20 @@
215351 reg = <0x0000 0x28000>;
216352 };
217353 };
354
+
355
+ sram_c1: sram@1d00000 {
356
+ compatible = "mmio-sram";
357
+ reg = <0x01d00000 0x40000>;
358
+ #address-cells = <1>;
359
+ #size-cells = <1>;
360
+ ranges = <0 0x01d00000 0x40000>;
361
+
362
+ ve_sram: sram-section@0 {
363
+ compatible = "allwinner,sun50i-a64-sram-c1",
364
+ "allwinner,sun4i-a10-sram-c1";
365
+ reg = <0x000000 0x40000>;
366
+ };
367
+ };
218368 };
219369
220370 dma: dma-controller@1c02000 {
....@@ -226,6 +376,106 @@
226376 dma-requests = <27>;
227377 resets = <&ccu RST_BUS_DMA>;
228378 #dma-cells = <1>;
379
+ };
380
+
381
+ tcon0: lcd-controller@1c0c000 {
382
+ compatible = "allwinner,sun50i-a64-tcon-lcd",
383
+ "allwinner,sun8i-a83t-tcon-lcd";
384
+ reg = <0x01c0c000 0x1000>;
385
+ interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
386
+ clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>;
387
+ clock-names = "ahb", "tcon-ch0";
388
+ clock-output-names = "tcon-pixel-clock";
389
+ #clock-cells = <0>;
390
+ resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>;
391
+ reset-names = "lcd", "lvds";
392
+
393
+ ports {
394
+ #address-cells = <1>;
395
+ #size-cells = <0>;
396
+
397
+ tcon0_in: port@0 {
398
+ #address-cells = <1>;
399
+ #size-cells = <0>;
400
+ reg = <0>;
401
+
402
+ tcon0_in_mixer0: endpoint@0 {
403
+ reg = <0>;
404
+ remote-endpoint = <&mixer0_out_tcon0>;
405
+ };
406
+
407
+ tcon0_in_mixer1: endpoint@1 {
408
+ reg = <1>;
409
+ remote-endpoint = <&mixer1_out_tcon0>;
410
+ };
411
+ };
412
+
413
+ tcon0_out: port@1 {
414
+ #address-cells = <1>;
415
+ #size-cells = <0>;
416
+ reg = <1>;
417
+
418
+ tcon0_out_dsi: endpoint@1 {
419
+ reg = <1>;
420
+ remote-endpoint = <&dsi_in_tcon0>;
421
+ allwinner,tcon-channel = <1>;
422
+ };
423
+ };
424
+ };
425
+ };
426
+
427
+ tcon1: lcd-controller@1c0d000 {
428
+ compatible = "allwinner,sun50i-a64-tcon-tv",
429
+ "allwinner,sun8i-a83t-tcon-tv";
430
+ reg = <0x01c0d000 0x1000>;
431
+ interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
432
+ clocks = <&ccu CLK_BUS_TCON1>, <&ccu CLK_TCON1>;
433
+ clock-names = "ahb", "tcon-ch1";
434
+ resets = <&ccu RST_BUS_TCON1>;
435
+ reset-names = "lcd";
436
+
437
+ ports {
438
+ #address-cells = <1>;
439
+ #size-cells = <0>;
440
+
441
+ tcon1_in: port@0 {
442
+ #address-cells = <1>;
443
+ #size-cells = <0>;
444
+ reg = <0>;
445
+
446
+ tcon1_in_mixer0: endpoint@0 {
447
+ reg = <0>;
448
+ remote-endpoint = <&mixer0_out_tcon1>;
449
+ };
450
+
451
+ tcon1_in_mixer1: endpoint@1 {
452
+ reg = <1>;
453
+ remote-endpoint = <&mixer1_out_tcon1>;
454
+ };
455
+ };
456
+
457
+ tcon1_out: port@1 {
458
+ #address-cells = <1>;
459
+ #size-cells = <0>;
460
+ reg = <1>;
461
+
462
+ tcon1_out_hdmi: endpoint@1 {
463
+ reg = <1>;
464
+ remote-endpoint = <&hdmi_in_tcon1>;
465
+ };
466
+ };
467
+ };
468
+ };
469
+
470
+ video-codec@1c0e000 {
471
+ compatible = "allwinner,sun50i-a64-video-engine";
472
+ reg = <0x01c0e000 0x1000>;
473
+ clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
474
+ <&ccu CLK_DRAM_VE>;
475
+ clock-names = "ahb", "mod", "ram";
476
+ resets = <&ccu RST_BUS_VE>;
477
+ interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
478
+ allwinner,sram = <&ve_sram 1>;
229479 };
230480
231481 mmc0: mmc@1c0f000 {
....@@ -270,6 +520,36 @@
270520 #size-cells = <0>;
271521 };
272522
523
+ sid: eeprom@1c14000 {
524
+ compatible = "allwinner,sun50i-a64-sid";
525
+ reg = <0x1c14000 0x400>;
526
+ #address-cells = <1>;
527
+ #size-cells = <1>;
528
+
529
+ ths_calibration: thermal-sensor-calibration@34 {
530
+ reg = <0x34 0x8>;
531
+ };
532
+ };
533
+
534
+ crypto: crypto@1c15000 {
535
+ compatible = "allwinner,sun50i-a64-crypto";
536
+ reg = <0x01c15000 0x1000>;
537
+ interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
538
+ clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>;
539
+ clock-names = "bus", "mod";
540
+ resets = <&ccu RST_BUS_CE>;
541
+ };
542
+
543
+ msgbox: mailbox@1c17000 {
544
+ compatible = "allwinner,sun50i-a64-msgbox",
545
+ "allwinner,sun6i-a31-msgbox";
546
+ reg = <0x01c17000 0x1000>;
547
+ clocks = <&ccu CLK_BUS_MSGBOX>;
548
+ resets = <&ccu RST_BUS_MSGBOX>;
549
+ interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
550
+ #mbox-cells = <1>;
551
+ };
552
+
273553 usb_otg: usb@1c19000 {
274554 compatible = "allwinner,sun8i-a33-musb";
275555 reg = <0x01c19000 0x0400>;
....@@ -280,6 +560,7 @@
280560 phys = <&usbphy 0>;
281561 phy-names = "usb";
282562 extcon = <&usbphy 0>;
563
+ dr_mode = "otg";
283564 status = "disabled";
284565 };
285566
....@@ -358,7 +639,7 @@
358639 ccu: clock@1c20000 {
359640 compatible = "allwinner,sun50i-a64-ccu";
360641 reg = <0x01c20000 0x400>;
361
- clocks = <&osc24M>, <&osc32k>;
642
+ clocks = <&osc24M>, <&rtc 0>;
362643 clock-names = "hosc", "losc";
363644 #clock-cells = <1>;
364645 #reset-cells = <1>;
....@@ -370,21 +651,48 @@
370651 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
371652 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
372653 <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
373
- clocks = <&ccu 58>, <&osc24M>, <&rtc 0>;
654
+ clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&rtc 0>;
374655 clock-names = "apb", "hosc", "losc";
375656 gpio-controller;
376657 #gpio-cells = <3>;
377658 interrupt-controller;
378659 #interrupt-cells = <3>;
379660
380
- i2c0_pins: i2c0_pins {
661
+ csi_pins: csi-pins {
662
+ pins = "PE0", "PE2", "PE3", "PE4", "PE5", "PE6",
663
+ "PE7", "PE8", "PE9", "PE10", "PE11";
664
+ function = "csi";
665
+ };
666
+
667
+ /omit-if-no-ref/
668
+ csi_mclk_pin: csi-mclk-pin {
669
+ pins = "PE1";
670
+ function = "csi";
671
+ };
672
+
673
+ i2c0_pins: i2c0-pins {
381674 pins = "PH0", "PH1";
382675 function = "i2c0";
383676 };
384677
385
- i2c1_pins: i2c1_pins {
678
+ i2c1_pins: i2c1-pins {
386679 pins = "PH2", "PH3";
387680 function = "i2c1";
681
+ };
682
+
683
+ i2c2_pins: i2c2-pins {
684
+ pins = "PE14", "PE15";
685
+ function = "i2c2";
686
+ };
687
+
688
+ /omit-if-no-ref/
689
+ lcd_rgb666_pins: lcd-rgb666-pins {
690
+ pins = "PD0", "PD1", "PD2", "PD3", "PD4",
691
+ "PD5", "PD6", "PD7", "PD8", "PD9",
692
+ "PD10", "PD11", "PD12", "PD13",
693
+ "PD14", "PD15", "PD16", "PD17",
694
+ "PD18", "PD19", "PD20", "PD21";
695
+ function = "lcd0";
388696 };
389697
390698 mmc0_pins: mmc0-pins {
....@@ -404,7 +712,7 @@
404712 };
405713
406714 mmc2_pins: mmc2-pins {
407
- pins = "PC1", "PC5", "PC6", "PC8", "PC9",
715
+ pins = "PC5", "PC6", "PC8", "PC9",
408716 "PC10","PC11", "PC12", "PC13",
409717 "PC14", "PC15", "PC16";
410718 function = "mmc2";
....@@ -412,19 +720,26 @@
412720 bias-pull-up;
413721 };
414722
415
- pwm_pin: pwm_pin {
723
+ mmc2_ds_pin: mmc2-ds-pin {
724
+ pins = "PC1";
725
+ function = "mmc2";
726
+ drive-strength = <30>;
727
+ bias-pull-up;
728
+ };
729
+
730
+ pwm_pin: pwm-pin {
416731 pins = "PD22";
417732 function = "pwm";
418733 };
419734
420
- rmii_pins: rmii_pins {
735
+ rmii_pins: rmii-pins {
421736 pins = "PD10", "PD11", "PD13", "PD14", "PD17",
422737 "PD18", "PD19", "PD20", "PD22", "PD23";
423738 function = "emac";
424739 drive-strength = <40>;
425740 };
426741
427
- rgmii_pins: rgmii_pins {
742
+ rgmii_pins: rgmii-pins {
428743 pins = "PD8", "PD9", "PD10", "PD11", "PD12",
429744 "PD13", "PD15", "PD16", "PD17", "PD18",
430745 "PD19", "PD20", "PD21", "PD22", "PD23";
....@@ -432,32 +747,32 @@
432747 drive-strength = <40>;
433748 };
434749
435
- spdif_tx_pin: spdif {
750
+ spdif_tx_pin: spdif-tx-pin {
436751 pins = "PH8";
437752 function = "spdif";
438753 };
439754
440
- spi0_pins: spi0 {
755
+ spi0_pins: spi0-pins {
441756 pins = "PC0", "PC1", "PC2", "PC3";
442757 function = "spi0";
443758 };
444759
445
- spi1_pins: spi1 {
760
+ spi1_pins: spi1-pins {
446761 pins = "PD0", "PD1", "PD2", "PD3";
447762 function = "spi1";
448763 };
449764
450
- uart0_pins_a: uart0 {
765
+ uart0_pb_pins: uart0-pb-pins {
451766 pins = "PB8", "PB9";
452767 function = "uart0";
453768 };
454769
455
- uart1_pins: uart1_pins {
770
+ uart1_pins: uart1-pins {
456771 pins = "PG6", "PG7";
457772 function = "uart1";
458773 };
459774
460
- uart1_rts_cts_pins: uart1_rts_cts_pins {
775
+ uart1_rts_cts_pins: uart1-rts-cts-pins {
461776 pins = "PG8", "PG9";
462777 function = "uart1";
463778 };
....@@ -499,6 +814,14 @@
499814 status = "disabled";
500815 };
501816
817
+ lradc: lradc@1c21800 {
818
+ compatible = "allwinner,sun50i-a64-lradc",
819
+ "allwinner,sun8i-a83t-r-lradc";
820
+ reg = <0x01c21800 0x400>;
821
+ interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
822
+ status = "disabled";
823
+ };
824
+
502825 i2s0: i2s@1c22000 {
503826 #sound-dai-cells = <0>;
504827 compatible = "allwinner,sun50i-a64-i2s",
....@@ -525,6 +848,42 @@
525848 dma-names = "rx", "tx";
526849 dmas = <&dma 4>, <&dma 4>;
527850 status = "disabled";
851
+ };
852
+
853
+ dai: dai@1c22c00 {
854
+ #sound-dai-cells = <0>;
855
+ compatible = "allwinner,sun50i-a64-codec-i2s";
856
+ reg = <0x01c22c00 0x200>;
857
+ interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
858
+ clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>;
859
+ clock-names = "apb", "mod";
860
+ resets = <&ccu RST_BUS_CODEC>;
861
+ dmas = <&dma 15>, <&dma 15>;
862
+ dma-names = "rx", "tx";
863
+ status = "disabled";
864
+ };
865
+
866
+ codec: codec@1c22e00 {
867
+ #sound-dai-cells = <0>;
868
+ compatible = "allwinner,sun50i-a64-codec",
869
+ "allwinner,sun8i-a33-codec";
870
+ reg = <0x01c22e00 0x600>;
871
+ interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
872
+ clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>;
873
+ clock-names = "bus", "mod";
874
+ status = "disabled";
875
+ };
876
+
877
+ ths: thermal-sensor@1c25000 {
878
+ compatible = "allwinner,sun50i-a64-ths";
879
+ reg = <0x01c25000 0x100>;
880
+ clocks = <&ccu CLK_BUS_THS>, <&ccu CLK_THS>;
881
+ clock-names = "bus", "mod";
882
+ interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
883
+ resets = <&ccu RST_BUS_THS>;
884
+ nvmem-cells = <&ths_calibration>;
885
+ nvmem-cell-names = "calibration";
886
+ #thermal-sensor-cells = <1>;
528887 };
529888
530889 uart0: serial@1c28000 {
....@@ -588,6 +947,8 @@
588947 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
589948 clocks = <&ccu CLK_BUS_I2C0>;
590949 resets = <&ccu RST_BUS_I2C0>;
950
+ pinctrl-names = "default";
951
+ pinctrl-0 = <&i2c0_pins>;
591952 status = "disabled";
592953 #address-cells = <1>;
593954 #size-cells = <0>;
....@@ -599,6 +960,8 @@
599960 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
600961 clocks = <&ccu CLK_BUS_I2C1>;
601962 resets = <&ccu RST_BUS_I2C1>;
963
+ pinctrl-names = "default";
964
+ pinctrl-0 = <&i2c1_pins>;
602965 status = "disabled";
603966 #address-cells = <1>;
604967 #size-cells = <0>;
....@@ -610,11 +973,12 @@
610973 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
611974 clocks = <&ccu CLK_BUS_I2C2>;
612975 resets = <&ccu RST_BUS_I2C2>;
976
+ pinctrl-names = "default";
977
+ pinctrl-0 = <&i2c2_pins>;
613978 status = "disabled";
614979 #address-cells = <1>;
615980 #size-cells = <0>;
616981 };
617
-
618982
619983 spi0: spi@1c68000 {
620984 compatible = "allwinner,sun8i-h3-spi";
....@@ -669,6 +1033,28 @@
6691033 };
6701034 };
6711035
1036
+ mali: gpu@1c40000 {
1037
+ compatible = "allwinner,sun50i-a64-mali", "arm,mali-400";
1038
+ reg = <0x01c40000 0x10000>;
1039
+ interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
1040
+ <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
1041
+ <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
1042
+ <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
1043
+ <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
1044
+ <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
1045
+ <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
1046
+ interrupt-names = "gp",
1047
+ "gpmmu",
1048
+ "pp0",
1049
+ "ppmmu0",
1050
+ "pp1",
1051
+ "ppmmu1",
1052
+ "pmu";
1053
+ clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>;
1054
+ clock-names = "bus", "core";
1055
+ resets = <&ccu RST_BUS_GPU>;
1056
+ };
1057
+
6721058 gic: interrupt-controller@1c81000 {
6731059 compatible = "arm,gic-400";
6741060 reg = <0x01c81000 0x1000>,
....@@ -691,12 +1077,126 @@
6911077 status = "disabled";
6921078 };
6931079
1080
+ mbus: dram-controller@1c62000 {
1081
+ compatible = "allwinner,sun50i-a64-mbus";
1082
+ reg = <0x01c62000 0x1000>;
1083
+ clocks = <&ccu 112>;
1084
+ #address-cells = <1>;
1085
+ #size-cells = <1>;
1086
+ dma-ranges = <0x00000000 0x40000000 0xc0000000>;
1087
+ #interconnect-cells = <1>;
1088
+ };
1089
+
1090
+ csi: csi@1cb0000 {
1091
+ compatible = "allwinner,sun50i-a64-csi";
1092
+ reg = <0x01cb0000 0x1000>;
1093
+ interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
1094
+ clocks = <&ccu CLK_BUS_CSI>,
1095
+ <&ccu CLK_CSI_SCLK>,
1096
+ <&ccu CLK_DRAM_CSI>;
1097
+ clock-names = "bus", "mod", "ram";
1098
+ resets = <&ccu RST_BUS_CSI>;
1099
+ pinctrl-names = "default";
1100
+ pinctrl-0 = <&csi_pins>;
1101
+ status = "disabled";
1102
+ };
1103
+
1104
+ dsi: dsi@1ca0000 {
1105
+ compatible = "allwinner,sun50i-a64-mipi-dsi";
1106
+ reg = <0x01ca0000 0x1000>;
1107
+ interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
1108
+ clocks = <&ccu CLK_BUS_MIPI_DSI>;
1109
+ resets = <&ccu RST_BUS_MIPI_DSI>;
1110
+ phys = <&dphy>;
1111
+ phy-names = "dphy";
1112
+ status = "disabled";
1113
+ #address-cells = <1>;
1114
+ #size-cells = <0>;
1115
+
1116
+ port {
1117
+ dsi_in_tcon0: endpoint {
1118
+ remote-endpoint = <&tcon0_out_dsi>;
1119
+ };
1120
+ };
1121
+ };
1122
+
1123
+ dphy: d-phy@1ca1000 {
1124
+ compatible = "allwinner,sun50i-a64-mipi-dphy",
1125
+ "allwinner,sun6i-a31-mipi-dphy";
1126
+ reg = <0x01ca1000 0x1000>;
1127
+ clocks = <&ccu CLK_BUS_MIPI_DSI>,
1128
+ <&ccu CLK_DSI_DPHY>;
1129
+ clock-names = "bus", "mod";
1130
+ resets = <&ccu RST_BUS_MIPI_DSI>;
1131
+ status = "disabled";
1132
+ #phy-cells = <0>;
1133
+ };
1134
+
1135
+ deinterlace: deinterlace@1e00000 {
1136
+ compatible = "allwinner,sun50i-a64-deinterlace",
1137
+ "allwinner,sun8i-h3-deinterlace";
1138
+ reg = <0x01e00000 0x20000>;
1139
+ clocks = <&ccu CLK_BUS_DEINTERLACE>,
1140
+ <&ccu CLK_DEINTERLACE>,
1141
+ <&ccu CLK_DRAM_DEINTERLACE>;
1142
+ clock-names = "bus", "mod", "ram";
1143
+ resets = <&ccu RST_BUS_DEINTERLACE>;
1144
+ interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
1145
+ interconnects = <&mbus 9>;
1146
+ interconnect-names = "dma-mem";
1147
+ };
1148
+
1149
+ hdmi: hdmi@1ee0000 {
1150
+ compatible = "allwinner,sun50i-a64-dw-hdmi",
1151
+ "allwinner,sun8i-a83t-dw-hdmi";
1152
+ reg = <0x01ee0000 0x10000>;
1153
+ reg-io-width = <1>;
1154
+ interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
1155
+ clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_DDC>,
1156
+ <&ccu CLK_HDMI>;
1157
+ clock-names = "iahb", "isfr", "tmds";
1158
+ resets = <&ccu RST_BUS_HDMI1>;
1159
+ reset-names = "ctrl";
1160
+ phys = <&hdmi_phy>;
1161
+ phy-names = "phy";
1162
+ status = "disabled";
1163
+
1164
+ ports {
1165
+ #address-cells = <1>;
1166
+ #size-cells = <0>;
1167
+
1168
+ hdmi_in: port@0 {
1169
+ reg = <0>;
1170
+
1171
+ hdmi_in_tcon1: endpoint {
1172
+ remote-endpoint = <&tcon1_out_hdmi>;
1173
+ };
1174
+ };
1175
+
1176
+ hdmi_out: port@1 {
1177
+ reg = <1>;
1178
+ };
1179
+ };
1180
+ };
1181
+
1182
+ hdmi_phy: hdmi-phy@1ef0000 {
1183
+ compatible = "allwinner,sun50i-a64-hdmi-phy";
1184
+ reg = <0x01ef0000 0x10000>;
1185
+ clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_DDC>,
1186
+ <&ccu CLK_PLL_VIDEO0>;
1187
+ clock-names = "bus", "mod", "pll-0";
1188
+ resets = <&ccu RST_BUS_HDMI0>;
1189
+ reset-names = "phy";
1190
+ #phy-cells = <0>;
1191
+ };
1192
+
6941193 rtc: rtc@1f00000 {
695
- compatible = "allwinner,sun6i-a31-rtc";
696
- reg = <0x01f00000 0x54>;
1194
+ compatible = "allwinner,sun50i-a64-rtc",
1195
+ "allwinner,sun8i-h3-rtc";
1196
+ reg = <0x01f00000 0x400>;
6971197 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
6981198 <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
699
- clock-output-names = "rtc-osc32k", "rtc-osc32k-out";
1199
+ clock-output-names = "osc32k", "osc32k-out", "iosc";
7001200 clocks = <&osc32k>;
7011201 #clock-cells = <1>;
7021202 };
....@@ -713,11 +1213,17 @@
7131213 r_ccu: clock@1f01400 {
7141214 compatible = "allwinner,sun50i-a64-r-ccu";
7151215 reg = <0x01f01400 0x100>;
716
- clocks = <&osc24M>, <&osc32k>, <&iosc>,
717
- <&ccu 11>;
1216
+ clocks = <&osc24M>, <&rtc 0>, <&rtc 2>,
1217
+ <&ccu CLK_PLL_PERIPH0>;
7181218 clock-names = "hosc", "losc", "iosc", "pll-periph";
7191219 #clock-cells = <1>;
7201220 #reset-cells = <1>;
1221
+ };
1222
+
1223
+ codec_analog: codec-analog@1f015c0 {
1224
+ compatible = "allwinner,sun50i-a64-codec-analog";
1225
+ reg = <0x01f015c0 0x4>;
1226
+ status = "disabled";
7211227 };
7221228
7231229 r_i2c: i2c@1f02400 {
....@@ -730,6 +1236,19 @@
7301236 status = "disabled";
7311237 #address-cells = <1>;
7321238 #size-cells = <0>;
1239
+ };
1240
+
1241
+ r_ir: ir@1f02000 {
1242
+ compatible = "allwinner,sun50i-a64-ir",
1243
+ "allwinner,sun6i-a31-ir";
1244
+ reg = <0x01f02000 0x400>;
1245
+ clocks = <&r_ccu CLK_APB0_IR>, <&r_ccu CLK_IR>;
1246
+ clock-names = "apb", "ir";
1247
+ resets = <&r_ccu RST_APB0_IR>;
1248
+ interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
1249
+ pinctrl-names = "default";
1250
+ pinctrl-0 = <&r_ir_rx_pin>;
1251
+ status = "disabled";
7331252 };
7341253
7351254 r_pwm: pwm@1f03800 {
....@@ -754,17 +1273,22 @@
7541273 interrupt-controller;
7551274 #interrupt-cells = <3>;
7561275
757
- r_i2c_pins_a: i2c-a {
1276
+ r_i2c_pl89_pins: r-i2c-pl89-pins {
7581277 pins = "PL8", "PL9";
7591278 function = "s_i2c";
7601279 };
7611280
762
- r_pwm_pin: pwm {
1281
+ r_ir_rx_pin: r-ir-rx-pin {
1282
+ pins = "PL11";
1283
+ function = "s_cir_rx";
1284
+ };
1285
+
1286
+ r_pwm_pin: r-pwm-pin {
7631287 pins = "PL10";
7641288 function = "s_pwm";
7651289 };
7661290
767
- r_rsb_pins: rsb {
1291
+ r_rsb_pins: r-rsb-pins {
7681292 pins = "PL0", "PL1";
7691293 function = "s_rsb";
7701294 };
....@@ -789,6 +1313,7 @@
7891313 "allwinner,sun6i-a31-wdt";
7901314 reg = <0x01c20ca0 0x20>;
7911315 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
1316
+ clocks = <&osc24M>;
7921317 };
7931318 };
7941319 };