Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'sunxi-dt64-for-4.17' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into next/dt

Pull "Allwinner arm64 DT changes for 4.17" from Maxime Ripard:

We've had for this release a pretty good progress on the arm64 front as
well:
- The A64 now has SPDIF support
- The H6 is now supported (even though at an early stage)
- The TERES-I laptop from Olimex has seen some early support as well

* tag 'sunxi-dt64-for-4.17' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/sunxi/linux:
arm64: dts: allwinner: a64: Add support for TERES-I laptop
arm64: dts: allwinner: a64: add simplefb for A64 SoC
arm64: dts: allwinner: a64: Add watchdog
arm64: dts: allwinner: a64: Add i2c0 pins
arm64: allwinner: h6: add support for Pine H64 board
arm64: allwinner: h6: add the basical Allwinner H6 DTSI file
arm64: dts: sunxi: Switch MMC nodes away from cd-inverted property
arm64: dts: allwinner: a64: Add DAI nodes
arm64: dts: allwinner: a64: Add SPDIF to the Pine64
arm64: dts: allwinner: a64: Add SPDIF to the A64
arm64: dts: allwinner: a64: Add the SPDIF block and pin

+584 -12
+4 -2
Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt
··· 2 2 3 3 Required properties: 4 4 5 - - compatible : should be either "allwinner,sun4i-a10-wdt" or 6 - "allwinner,sun6i-a31-wdt" 5 + - compatible : should be one of 6 + "allwinner,sun4i-a10-wdt" 7 + "allwinner,sun6i-a31-wdt" 8 + "allwinner,sun50i-a64-wdt","allwinner,sun6i-a31-wdt" 7 9 - reg : Specifies base physical address and size of the registers. 8 10 9 11 Example:
+2
arch/arm64/boot/dts/allwinner/Makefile
··· 5 5 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-orangepi-win.dtb 6 6 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pine64-plus.dtb sun50i-a64-pine64.dtb 7 7 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-sopine-baseboard.dtb 8 + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-teres-i.dtb 8 9 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-pc2.dtb 9 10 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-prime.dtb 10 11 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-zero-plus2.dtb 11 12 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-neo2.dtb 12 13 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-neo-plus2.dtb 14 + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-pine-h64.dtb
+1 -2
arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts
··· 120 120 pinctrl-names = "default"; 121 121 pinctrl-0 = <&mmc0_pins>; 122 122 vmmc-supply = <&reg_dcdc1>; 123 - cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; 124 - cd-inverted; 123 + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; 125 124 disable-wp; 126 125 bus-width = <4>; 127 126 status = "okay";
+1 -2
arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts
··· 82 82 pinctrl-names = "default"; 83 83 pinctrl-0 = <&mmc0_pins>; 84 84 vmmc-supply = <&reg_dcdc1>; 85 - cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; 86 - cd-inverted; 85 + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; 87 86 disable-wp; 88 87 bus-width = <4>; 89 88 status = "okay";
+1 -2
arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts
··· 68 68 pinctrl-names = "default"; 69 69 pinctrl-0 = <&mmc0_pins>; 70 70 vmmc-supply = <&reg_dcdc1>; 71 - cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; 72 - cd-inverted; 71 + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; 73 72 disable-wp; 74 73 bus-width = <4>; 75 74 status = "okay";
+1 -2
arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts
··· 67 67 pinctrl-names = "default"; 68 68 pinctrl-0 = <&mmc0_pins>; 69 69 vmmc-supply = <&reg_dcdc1>; 70 - cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; 71 - cd-inverted; 70 + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; 72 71 status = "okay"; 73 72 }; 74 73
+6 -2
arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
··· 103 103 pinctrl-names = "default"; 104 104 pinctrl-0 = <&mmc0_pins>; 105 105 vmmc-supply = <&reg_dcdc1>; 106 - cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; 107 - cd-inverted; 106 + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; 108 107 disable-wp; 109 108 bus-width = <4>; 110 109 status = "okay"; ··· 227 228 228 229 &reg_rtc_ldo { 229 230 regulator-name = "vcc-rtc"; 231 + }; 232 + 233 + /* On Euler connector */ 234 + &spdif { 235 + status = "disabled"; 230 236 }; 231 237 232 238 /* On Exp and Euler connectors */
+265
arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts
··· 1 + /* 2 + * Copyright (C) Harald Geyer <harald@ccbib.org> 3 + * based on sun50i-a64-olinuxino.dts by Jagan Teki <jteki@openedev.com> 4 + * 5 + * SPDX-License-Identifier: (GPL-2.0 OR MIT) 6 + */ 7 + 8 + /dts-v1/; 9 + 10 + #include "sun50i-a64.dtsi" 11 + 12 + #include <dt-bindings/gpio/gpio.h> 13 + #include <dt-bindings/input/input.h> 14 + #include <dt-bindings/pwm/pwm.h> 15 + 16 + / { 17 + model = "Olimex A64 Teres-I"; 18 + compatible = "olimex,a64-teres-i", "allwinner,sun50i-a64"; 19 + 20 + aliases { 21 + serial0 = &uart0; 22 + }; 23 + 24 + chosen { 25 + stdout-path = "serial0:115200n8"; 26 + 27 + framebuffer-lcd { 28 + eDP25-supply = <&reg_dldo2>; 29 + eDP12-supply = <&reg_dldo3>; 30 + }; 31 + }; 32 + 33 + gpio-keys { 34 + compatible = "gpio-keys"; 35 + 36 + lid-switch { 37 + label = "Lid Switch"; 38 + gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */ 39 + linux,input-type = <EV_SW>; 40 + linux,code = <SW_LID>; 41 + }; 42 + }; 43 + 44 + leds { 45 + compatible = "gpio-leds"; 46 + 47 + capslock { 48 + label = "teres-i:green:capslock"; 49 + gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */ 50 + }; 51 + 52 + numlock { 53 + label = "teres-i:green:numlock"; 54 + gpios = <&pio 2 4 GPIO_ACTIVE_HIGH>; /* PC4 */ 55 + }; 56 + }; 57 + 58 + reg_usb1_vbus: usb1-vbus { 59 + compatible = "regulator-fixed"; 60 + regulator-name = "usb1-vbus"; 61 + regulator-min-microvolt = <5000000>; 62 + regulator-max-microvolt = <5000000>; 63 + enable-active-high; 64 + gpio = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */ 65 + status = "okay"; 66 + }; 67 + 68 + wifi_pwrseq: wifi_pwrseq { 69 + compatible = "mmc-pwrseq-simple"; 70 + reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ 71 + }; 72 + }; 73 + 74 + &ehci1 { 75 + status = "okay"; 76 + }; 77 + 78 + 79 + /* The ANX6345 eDP-bridge is on i2c0. There is no linux (mainline) 80 + * driver for this chip at the moment, the bootloader initializes it. 81 + * However it can be accessed with the i2c-dev driver from user space. 82 + */ 83 + &i2c0 { 84 + clock-frequency = <100000>; 85 + pinctrl-names = "default"; 86 + pinctrl-0 = <&i2c0_pins>; 87 + status = "okay"; 88 + }; 89 + 90 + &mmc0 { 91 + pinctrl-names = "default"; 92 + pinctrl-0 = <&mmc0_pins>; 93 + vmmc-supply = <&reg_dcdc1>; 94 + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; 95 + disable-wp; 96 + bus-width = <4>; 97 + status = "okay"; 98 + }; 99 + 100 + &mmc1 { 101 + pinctrl-names = "default"; 102 + pinctrl-0 = <&mmc1_pins>; 103 + vmmc-supply = <&reg_aldo2>; 104 + vqmmc-supply = <&reg_dldo4>; 105 + mmc-pwrseq = <&wifi_pwrseq>; 106 + bus-width = <4>; 107 + non-removable; 108 + status = "okay"; 109 + 110 + rtl8723bs: wifi@1 { 111 + reg = <1>; 112 + interrupt-parent = <&r_pio>; 113 + interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */ 114 + interrupt-names = "host-wake"; 115 + }; 116 + }; 117 + 118 + &mmc2 { 119 + pinctrl-names = "default"; 120 + pinctrl-0 = <&mmc2_pins>; 121 + vmmc-supply = <&reg_dcdc1>; 122 + vqmmc-supply = <&reg_dcdc1>; 123 + bus-width = <8>; 124 + non-removable; 125 + cap-mmc-hw-reset; 126 + status = "okay"; 127 + }; 128 + 129 + &ohci1 { 130 + status = "okay"; 131 + }; 132 + 133 + &r_rsb { 134 + status = "okay"; 135 + 136 + axp803: pmic@3a3 { 137 + compatible = "x-powers,axp803"; 138 + reg = <0x3a3>; 139 + interrupt-parent = <&r_intc>; 140 + interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 141 + wakeup-source; 142 + }; 143 + }; 144 + 145 + #include "axp803.dtsi" 146 + 147 + &reg_aldo1 { 148 + regulator-always-on; 149 + regulator-min-microvolt = <2800000>; 150 + regulator-max-microvolt = <2800000>; 151 + regulator-name = "vcc-pe"; 152 + }; 153 + 154 + &reg_aldo2 { 155 + regulator-always-on; 156 + regulator-min-microvolt = <3300000>; 157 + regulator-max-microvolt = <3300000>; 158 + regulator-name = "vcc-pl"; 159 + }; 160 + 161 + &reg_aldo3 { 162 + regulator-always-on; 163 + regulator-min-microvolt = <3000000>; 164 + regulator-max-microvolt = <3000000>; 165 + regulator-name = "vcc-pll-avcc"; 166 + }; 167 + 168 + &reg_dcdc1 { 169 + regulator-always-on; 170 + regulator-min-microvolt = <3300000>; 171 + regulator-max-microvolt = <3300000>; 172 + regulator-name = "vcc-3v3"; 173 + }; 174 + 175 + &reg_dcdc2 { 176 + regulator-always-on; 177 + regulator-min-microvolt = <1040000>; 178 + regulator-max-microvolt = <1300000>; 179 + regulator-name = "vdd-cpux"; 180 + }; 181 + 182 + /* DCDC3 is polyphased with DCDC2 */ 183 + 184 + &reg_dcdc5 { 185 + regulator-always-on; 186 + regulator-min-microvolt = <1500000>; 187 + regulator-max-microvolt = <1500000>; 188 + regulator-name = "vcc-ddr3"; 189 + }; 190 + 191 + &reg_dcdc6 { 192 + regulator-always-on; 193 + regulator-min-microvolt = <1100000>; 194 + regulator-max-microvolt = <1100000>; 195 + regulator-name = "vdd-sys"; 196 + }; 197 + 198 + &reg_dldo1 { 199 + regulator-min-microvolt = <3300000>; 200 + regulator-max-microvolt = <3300000>; 201 + regulator-name = "vcc-hdmi"; 202 + }; 203 + 204 + &reg_dldo2 { 205 + regulator-min-microvolt = <2500000>; 206 + regulator-max-microvolt = <2500000>; 207 + regulator-name = "vcc-pd"; 208 + }; 209 + 210 + &reg_dldo3 { 211 + regulator-min-microvolt = <1200000>; 212 + regulator-max-microvolt = <1200000>; 213 + regulator-name = "eDP12"; 214 + }; 215 + 216 + &reg_dldo4 { 217 + regulator-min-microvolt = <3300000>; 218 + regulator-max-microvolt = <3300000>; 219 + regulator-name = "vcc-wifi-io"; 220 + }; 221 + 222 + &reg_eldo1 { 223 + regulator-min-microvolt = <1800000>; 224 + regulator-max-microvolt = <1800000>; 225 + regulator-name = "cpvdd"; 226 + }; 227 + 228 + &reg_eldo2 { 229 + regulator-min-microvolt = <1800000>; 230 + regulator-max-microvolt = <1800000>; 231 + regulator-name = "vcc-dvdd-csi"; 232 + }; 233 + 234 + &reg_fldo1 { 235 + regulator-min-microvolt = <1200000>; 236 + regulator-max-microvolt = <1200000>; 237 + regulator-name = "vcc-1v2-hsic"; 238 + }; 239 + 240 + /* 241 + * The A64 chip cannot work without this regulator off, although 242 + * it seems to be only driving the AR100 core. 243 + * Maybe we don't still know well about CPUs domain. 244 + */ 245 + &reg_fldo2 { 246 + regulator-always-on; 247 + regulator-min-microvolt = <1100000>; 248 + regulator-max-microvolt = <1100000>; 249 + regulator-name = "vdd-cpus"; 250 + }; 251 + 252 + &reg_rtc_ldo { 253 + regulator-name = "vcc-rtc"; 254 + }; 255 + 256 + &uart0 { 257 + pinctrl-names = "default"; 258 + pinctrl-0 = <&uart0_pins_a>; 259 + status = "okay"; 260 + }; 261 + 262 + &usbphy { 263 + usb1_vbus-supply = <&reg_usb1_vbus>; 264 + status = "okay"; 265 + };
+99
arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
··· 52 52 #address-cells = <1>; 53 53 #size-cells = <1>; 54 54 55 + chosen { 56 + #address-cells = <1>; 57 + #size-cells = <1>; 58 + ranges; 59 + 60 + /* 61 + * The pipeline mixer0-lcd0 depends on clock CLK_MIXER0 from DE2 CCU. 62 + * However there is no support for this clock on A64 yet, so we depend 63 + * on the upstream clocks here to keep them (and thus CLK_MIXER0) up. 64 + */ 65 + simplefb_lcd: framebuffer-lcd { 66 + compatible = "allwinner,simple-framebuffer", 67 + "simple-framebuffer"; 68 + allwinner,pipeline = "mixer0-lcd0"; 69 + clocks = <&ccu CLK_TCON0>, 70 + <&ccu CLK_DE>, <&ccu CLK_BUS_DE>; 71 + status = "disabled"; 72 + }; 73 + }; 74 + 55 75 cpus { 56 76 #address-cells = <1>; 57 77 #size-cells = <0>; ··· 130 110 psci { 131 111 compatible = "arm,psci-0.2"; 132 112 method = "smc"; 113 + }; 114 + 115 + sound_spdif { 116 + compatible = "simple-audio-card"; 117 + simple-audio-card,name = "On-board SPDIF"; 118 + 119 + simple-audio-card,cpu { 120 + sound-dai = <&spdif>; 121 + }; 122 + 123 + simple-audio-card,codec { 124 + sound-dai = <&spdif_out>; 125 + }; 126 + }; 127 + 128 + spdif_out: spdif-out { 129 + #sound-dai-cells = <0>; 130 + compatible = "linux,spdif-dit"; 133 131 }; 134 132 135 133 timer { ··· 329 291 interrupt-controller; 330 292 #interrupt-cells = <3>; 331 293 294 + i2c0_pins: i2c0_pins { 295 + pins = "PH0", "PH1"; 296 + function = "i2c0"; 297 + }; 298 + 332 299 i2c1_pins: i2c1_pins { 333 300 pins = "PH2", "PH3"; 334 301 function = "i2c1"; ··· 377 334 "PD19", "PD20", "PD21", "PD22", "PD23"; 378 335 function = "emac"; 379 336 drive-strength = <40>; 337 + }; 338 + 339 + spdif_tx_pin: spdif { 340 + pins = "PH8"; 341 + function = "spdif"; 380 342 }; 381 343 382 344 spi0_pins: spi0 { ··· 428 380 pins = "PD4", "PD5"; 429 381 function = "uart4"; 430 382 }; 383 + }; 384 + 385 + spdif: spdif@1c21000 { 386 + #sound-dai-cells = <0>; 387 + compatible = "allwinner,sun50i-a64-spdif", 388 + "allwinner,sun8i-h3-spdif"; 389 + reg = <0x01c21000 0x400>; 390 + interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; 391 + clocks = <&ccu CLK_BUS_SPDIF>, <&ccu CLK_SPDIF>; 392 + resets = <&ccu RST_BUS_SPDIF>; 393 + clock-names = "apb", "spdif"; 394 + dmas = <&dma 2>; 395 + dma-names = "tx"; 396 + pinctrl-names = "default"; 397 + pinctrl-0 = <&spdif_tx_pin>; 398 + status = "disabled"; 399 + }; 400 + 401 + i2s0: i2s@1c22000 { 402 + #sound-dai-cells = <0>; 403 + compatible = "allwinner,sun50i-a64-i2s", 404 + "allwinner,sun8i-h3-i2s"; 405 + reg = <0x01c22000 0x400>; 406 + interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>; 407 + clocks = <&ccu CLK_BUS_I2S0>, <&ccu CLK_I2S0>; 408 + clock-names = "apb", "mod"; 409 + resets = <&ccu RST_BUS_I2S0>; 410 + dma-names = "rx", "tx"; 411 + dmas = <&dma 3>, <&dma 3>; 412 + status = "disabled"; 413 + }; 414 + 415 + i2s1: i2s@1c22400 { 416 + #sound-dai-cells = <0>; 417 + compatible = "allwinner,sun50i-a64-i2s", 418 + "allwinner,sun8i-h3-i2s"; 419 + reg = <0x01c22400 0x400>; 420 + interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>; 421 + clocks = <&ccu CLK_BUS_I2S1>, <&ccu CLK_I2S1>; 422 + clock-names = "apb", "mod"; 423 + resets = <&ccu RST_BUS_I2S1>; 424 + dma-names = "rx", "tx"; 425 + dmas = <&dma 4>, <&dma 4>; 426 + status = "disabled"; 431 427 }; 432 428 433 429 uart0: serial@1c28000 { ··· 684 592 status = "disabled"; 685 593 #address-cells = <1>; 686 594 #size-cells = <0>; 595 + }; 596 + 597 + wdt0: watchdog@1c20ca0 { 598 + compatible = "allwinner,sun50i-a64-wdt", 599 + "allwinner,sun6i-a31-wdt"; 600 + reg = <0x01c20ca0 0x20>; 601 + interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; 687 602 }; 688 603 }; 689 604 };
+29
arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts
··· 1 + // SPDX-License-Identifier: (GPL-2.0+ or MIT) 2 + /* 3 + * Copyright (c) 2017 Icenowy Zheng <icenowy@aosc.io> 4 + */ 5 + 6 + /dts-v1/; 7 + 8 + #include "sun50i-h6.dtsi" 9 + 10 + #include <dt-bindings/gpio/gpio.h> 11 + 12 + / { 13 + model = "Pine H64"; 14 + compatible = "pine64,pine-h64", "allwinner,sun50i-h6"; 15 + 16 + aliases { 17 + serial0 = &uart0; 18 + }; 19 + 20 + chosen { 21 + stdout-path = "serial0:115200n8"; 22 + }; 23 + }; 24 + 25 + &uart0 { 26 + pinctrl-names = "default"; 27 + pinctrl-0 = <&uart0_ph_pins>; 28 + status = "okay"; 29 + };
+175
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
··· 1 + // SPDX-License-Identifier: (GPL-2.0+ or MIT) 2 + /* 3 + * Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.io> 4 + */ 5 + 6 + #include <dt-bindings/interrupt-controller/arm-gic.h> 7 + 8 + / { 9 + interrupt-parent = <&gic>; 10 + #address-cells = <1>; 11 + #size-cells = <1>; 12 + 13 + cpus { 14 + #address-cells = <1>; 15 + #size-cells = <0>; 16 + 17 + cpu0: cpu@0 { 18 + compatible = "arm,cortex-a53", "arm,armv8"; 19 + device_type = "cpu"; 20 + reg = <0>; 21 + enable-method = "psci"; 22 + }; 23 + 24 + cpu1: cpu@1 { 25 + compatible = "arm,cortex-a53", "arm,armv8"; 26 + device_type = "cpu"; 27 + reg = <1>; 28 + enable-method = "psci"; 29 + }; 30 + 31 + cpu2: cpu@2 { 32 + compatible = "arm,cortex-a53", "arm,armv8"; 33 + device_type = "cpu"; 34 + reg = <2>; 35 + enable-method = "psci"; 36 + }; 37 + 38 + cpu3: cpu@3 { 39 + compatible = "arm,cortex-a53", "arm,armv8"; 40 + device_type = "cpu"; 41 + reg = <3>; 42 + enable-method = "psci"; 43 + }; 44 + }; 45 + 46 + iosc: internal-osc-clk { 47 + #clock-cells = <0>; 48 + compatible = "fixed-clock"; 49 + clock-frequency = <16000000>; 50 + clock-accuracy = <300000000>; 51 + clock-output-names = "iosc"; 52 + }; 53 + 54 + osc24M: osc24M_clk { 55 + #clock-cells = <0>; 56 + compatible = "fixed-clock"; 57 + clock-frequency = <24000000>; 58 + clock-output-names = "osc24M"; 59 + }; 60 + 61 + osc32k: osc32k_clk { 62 + #clock-cells = <0>; 63 + compatible = "fixed-clock"; 64 + clock-frequency = <32768>; 65 + clock-output-names = "osc32k"; 66 + }; 67 + 68 + psci { 69 + compatible = "arm,psci-0.2"; 70 + method = "smc"; 71 + }; 72 + 73 + timer { 74 + compatible = "arm,armv8-timer"; 75 + interrupts = <GIC_PPI 13 76 + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>, 77 + <GIC_PPI 14 78 + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>, 79 + <GIC_PPI 11 80 + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>, 81 + <GIC_PPI 10 82 + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 83 + }; 84 + 85 + soc { 86 + compatible = "simple-bus"; 87 + #address-cells = <1>; 88 + #size-cells = <1>; 89 + ranges; 90 + 91 + ccu: clock@3001000 { 92 + compatible = "allwinner,sun50i-h6-ccu"; 93 + reg = <0x03001000 0x1000>; 94 + clocks = <&osc24M>, <&osc32k>, <&iosc>; 95 + clock-names = "hosc", "losc", "iosc"; 96 + #clock-cells = <1>; 97 + #reset-cells = <1>; 98 + }; 99 + 100 + gic: interrupt-controller@3021000 { 101 + compatible = "arm,gic-400"; 102 + reg = <0x03021000 0x1000>, 103 + <0x03022000 0x2000>, 104 + <0x03024000 0x2000>, 105 + <0x03026000 0x2000>; 106 + interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 107 + interrupt-controller; 108 + #interrupt-cells = <3>; 109 + }; 110 + 111 + pio: pinctrl@300b000 { 112 + compatible = "allwinner,sun50i-h6-pinctrl"; 113 + reg = <0x0300b000 0x400>; 114 + interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>, 115 + <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>, 116 + <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>, 117 + <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>; 118 + clocks = <&ccu 26>, <&osc24M>, <&osc32k>; 119 + clock-names = "apb", "hosc", "losc"; 120 + gpio-controller; 121 + #gpio-cells = <3>; 122 + interrupt-controller; 123 + #interrupt-cells = <3>; 124 + 125 + uart0_ph_pins: uart0-ph { 126 + pins = "PH0", "PH1"; 127 + function = "uart0"; 128 + }; 129 + }; 130 + 131 + uart0: serial@5000000 { 132 + compatible = "snps,dw-apb-uart"; 133 + reg = <0x05000000 0x400>; 134 + interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>; 135 + reg-shift = <2>; 136 + reg-io-width = <4>; 137 + clocks = <&ccu 70>; 138 + resets = <&ccu 21>; 139 + status = "disabled"; 140 + }; 141 + 142 + uart1: serial@5000400 { 143 + compatible = "snps,dw-apb-uart"; 144 + reg = <0x05000400 0x400>; 145 + interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>; 146 + reg-shift = <2>; 147 + reg-io-width = <4>; 148 + clocks = <&ccu 71>; 149 + resets = <&ccu 22>; 150 + status = "disabled"; 151 + }; 152 + 153 + uart2: serial@5000800 { 154 + compatible = "snps,dw-apb-uart"; 155 + reg = <0x05000800 0x400>; 156 + interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 157 + reg-shift = <2>; 158 + reg-io-width = <4>; 159 + clocks = <&ccu 72>; 160 + resets = <&ccu 23>; 161 + status = "disabled"; 162 + }; 163 + 164 + uart3: serial@5000c00 { 165 + compatible = "snps,dw-apb-uart"; 166 + reg = <0x05000c00 0x400>; 167 + interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; 168 + reg-shift = <2>; 169 + reg-io-width = <4>; 170 + clocks = <&ccu 73>; 171 + resets = <&ccu 24>; 172 + status = "disabled"; 173 + }; 174 + }; 175 + };