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

Merge tag 'sunxi-dt-for-5.20-2' of git://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into arm/dt

- added H616 EMAC compatible
- make pinctrl interrupts optionals in DT binding
- initial H616 DTSI
- added OrangePi Zero 2 board
- added X96 Mate TV box
- add VCC PI supply in pinctrl DT binding

* tag 'sunxi-dt-for-5.20-2' of git://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux:
arm64: dts: allwinner: h616: Add X96 Mate TV box support
arm64: dts: allwinner: h616: Add OrangePi Zero 2 board support
dt-bindings: arm: sunxi: Add two H616 board compatible strings
dt-bindings: pinctrl: sunxi: allow vcc-pi-supply
arm64: dts: allwinner: Add Allwinner H616 .dtsi file
dt-bindings: pinctrl: sunxi: Make interrupts optional
dt-bindings: arm: sunxi: Add H616 EMAC0 compatible

Link: https://lore.kernel.org/r/YsnF9cm/qniIOklj@kista.localdomain
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

+1010 -4
+10
Documentation/devicetree/bindings/arm/sunxi.yaml
··· 863 863 - const: yones-toptech,bs1078-v2 864 864 - const: allwinner,sun6i-a31s 865 865 866 + - description: X96 Mate TV box 867 + items: 868 + - const: hechuang,x96-mate 869 + - const: allwinner,sun50i-h616 870 + 866 871 - description: Xunlong OrangePi 867 872 items: 868 873 - const: xunlong,orangepi ··· 967 962 items: 968 963 - const: xunlong,orangepi-zero-plus2-h3 969 964 - const: allwinner,sun8i-h3 965 + 966 + - description: Xunlong OrangePi Zero 2 967 + items: 968 + - const: xunlong,orangepi-zero2 969 + - const: allwinner,sun50i-h616 970 970 971 971 additionalProperties: true
+1
Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml
··· 22 22 - enum: 23 23 - allwinner,sun20i-d1-emac 24 24 - allwinner,sun50i-h6-emac 25 + - allwinner,sun50i-h616-emac0 25 26 - const: allwinner,sun50i-a64-emac 26 27 27 28 reg:
+14 -4
Documentation/devicetree/bindings/pinctrl/allwinner,sun4i-a10-pinctrl.yaml
··· 127 127 128 128 additionalProperties: false 129 129 130 - "^vcc-p[a-hlm]-supply$": 130 + "^vcc-p[a-ilm]-supply$": 131 131 description: 132 132 Power supplies for pin banks. 133 133 134 134 required: 135 135 - "#gpio-cells" 136 - - "#interrupt-cells" 137 136 - compatible 138 137 - reg 139 - - interrupts 140 138 - clocks 141 139 - clock-names 142 140 - gpio-controller 143 - - interrupt-controller 144 141 145 142 allOf: 146 143 # FIXME: We should have the pin bank supplies here, but not a lot of ··· 145 148 # warnings. 146 149 147 150 - $ref: "pinctrl.yaml#" 151 + - if: 152 + not: 153 + properties: 154 + compatible: 155 + enum: 156 + - allwinner,sun50i-h616-r-pinctrl 157 + 158 + then: 159 + required: 160 + - "#interrupt-cells" 161 + - interrupts 162 + - interrupt-controller 163 + 148 164 - if: 149 165 properties: 150 166 compatible:
+2
Documentation/devicetree/bindings/vendor-prefixes.yaml
··· 510 510 description: Haoyu Microelectronic Co. Ltd. 511 511 "^hardkernel,.*": 512 512 description: Hardkernel Co., Ltd 513 + "^hechuang,.*": 514 + description: Shenzhen Hechuang Intelligent Co. 513 515 "^hideep,.*": 514 516 description: HiDeep Inc. 515 517 "^himax,.*":
+2
arch/arm64/boot/dts/allwinner/Makefile
··· 38 38 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-pine-h64-model-b.dtb 39 39 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6.dtb 40 40 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6-mini.dtb 41 + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-orangepi-zero2.dtb 42 + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-x96-mate.dtb
+213
arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
··· 1 + // SPDX-License-Identifier: (GPL-2.0+ or MIT) 2 + /* 3 + * Copyright (C) 2020 Arm Ltd. 4 + */ 5 + 6 + /dts-v1/; 7 + 8 + #include "sun50i-h616.dtsi" 9 + 10 + #include <dt-bindings/gpio/gpio.h> 11 + #include <dt-bindings/interrupt-controller/arm-gic.h> 12 + #include <dt-bindings/leds/common.h> 13 + 14 + / { 15 + model = "OrangePi Zero2"; 16 + compatible = "xunlong,orangepi-zero2", "allwinner,sun50i-h616"; 17 + 18 + aliases { 19 + ethernet0 = &emac0; 20 + serial0 = &uart0; 21 + }; 22 + 23 + chosen { 24 + stdout-path = "serial0:115200n8"; 25 + }; 26 + 27 + leds { 28 + compatible = "gpio-leds"; 29 + 30 + led-0 { 31 + function = LED_FUNCTION_POWER; 32 + color = <LED_COLOR_ID_RED>; 33 + gpios = <&pio 2 12 GPIO_ACTIVE_HIGH>; /* PC12 */ 34 + default-state = "on"; 35 + }; 36 + 37 + led-1 { 38 + function = LED_FUNCTION_STATUS; 39 + color = <LED_COLOR_ID_GREEN>; 40 + gpios = <&pio 2 13 GPIO_ACTIVE_HIGH>; /* PC13 */ 41 + }; 42 + }; 43 + 44 + reg_vcc5v: vcc5v { 45 + /* board wide 5V supply directly from the USB-C socket */ 46 + compatible = "regulator-fixed"; 47 + regulator-name = "vcc-5v"; 48 + regulator-min-microvolt = <5000000>; 49 + regulator-max-microvolt = <5000000>; 50 + regulator-always-on; 51 + }; 52 + }; 53 + 54 + &emac0 { 55 + pinctrl-names = "default"; 56 + pinctrl-0 = <&ext_rgmii_pins>; 57 + phy-mode = "rgmii"; 58 + phy-handle = <&ext_rgmii_phy>; 59 + phy-supply = <&reg_dcdce>; 60 + allwinner,rx-delay-ps = <3100>; 61 + allwinner,tx-delay-ps = <700>; 62 + status = "okay"; 63 + }; 64 + 65 + &mdio0 { 66 + ext_rgmii_phy: ethernet-phy@1 { 67 + compatible = "ethernet-phy-ieee802.3-c22"; 68 + reg = <1>; 69 + }; 70 + }; 71 + 72 + &mmc0 { 73 + vmmc-supply = <&reg_dcdce>; 74 + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ 75 + bus-width = <4>; 76 + status = "okay"; 77 + }; 78 + 79 + &r_rsb { 80 + status = "okay"; 81 + 82 + axp305: pmic@745 { 83 + compatible = "x-powers,axp305", "x-powers,axp805", 84 + "x-powers,axp806"; 85 + interrupt-controller; 86 + #interrupt-cells = <1>; 87 + reg = <0x745>; 88 + 89 + x-powers,self-working-mode; 90 + vina-supply = <&reg_vcc5v>; 91 + vinb-supply = <&reg_vcc5v>; 92 + vinc-supply = <&reg_vcc5v>; 93 + vind-supply = <&reg_vcc5v>; 94 + vine-supply = <&reg_vcc5v>; 95 + aldoin-supply = <&reg_vcc5v>; 96 + bldoin-supply = <&reg_vcc5v>; 97 + cldoin-supply = <&reg_vcc5v>; 98 + 99 + regulators { 100 + reg_aldo1: aldo1 { 101 + regulator-always-on; 102 + regulator-min-microvolt = <3300000>; 103 + regulator-max-microvolt = <3300000>; 104 + regulator-name = "vcc-sys"; 105 + }; 106 + 107 + reg_aldo2: aldo2 { /* 3.3V on headers */ 108 + regulator-always-on; 109 + regulator-min-microvolt = <3300000>; 110 + regulator-max-microvolt = <3300000>; 111 + regulator-name = "vcc3v3-ext"; 112 + }; 113 + 114 + reg_aldo3: aldo3 { /* 3.3V on headers */ 115 + regulator-always-on; 116 + regulator-min-microvolt = <3300000>; 117 + regulator-max-microvolt = <3300000>; 118 + regulator-name = "vcc3v3-ext2"; 119 + }; 120 + 121 + reg_bldo1: bldo1 { 122 + regulator-always-on; 123 + regulator-min-microvolt = <1800000>; 124 + regulator-max-microvolt = <1800000>; 125 + regulator-name = "vcc1v8"; 126 + }; 127 + 128 + bldo2 { 129 + /* unused */ 130 + }; 131 + 132 + bldo3 { 133 + /* unused */ 134 + }; 135 + 136 + bldo4 { 137 + /* unused */ 138 + }; 139 + 140 + cldo1 { 141 + /* reserved */ 142 + }; 143 + 144 + cldo2 { 145 + /* unused */ 146 + }; 147 + 148 + cldo3 { 149 + /* unused */ 150 + }; 151 + 152 + reg_dcdca: dcdca { 153 + regulator-always-on; 154 + regulator-min-microvolt = <810000>; 155 + regulator-max-microvolt = <1100000>; 156 + regulator-name = "vdd-cpu"; 157 + }; 158 + 159 + reg_dcdcc: dcdcc { 160 + regulator-always-on; 161 + regulator-min-microvolt = <810000>; 162 + regulator-max-microvolt = <990000>; 163 + regulator-name = "vdd-gpu-sys"; 164 + }; 165 + 166 + reg_dcdcd: dcdcd { 167 + regulator-always-on; 168 + regulator-min-microvolt = <1500000>; 169 + regulator-max-microvolt = <1500000>; 170 + regulator-name = "vdd-dram"; 171 + }; 172 + 173 + reg_dcdce: dcdce { 174 + regulator-always-on; 175 + regulator-min-microvolt = <3300000>; 176 + regulator-max-microvolt = <3300000>; 177 + regulator-name = "vcc-eth-mmc"; 178 + }; 179 + 180 + sw { 181 + /* unused */ 182 + }; 183 + }; 184 + }; 185 + }; 186 + 187 + &pio { 188 + vcc-pc-supply = <&reg_aldo1>; 189 + vcc-pf-supply = <&reg_aldo1>; 190 + vcc-pg-supply = <&reg_bldo1>; 191 + vcc-ph-supply = <&reg_aldo1>; 192 + vcc-pi-supply = <&reg_aldo1>; 193 + }; 194 + 195 + &spi0 { 196 + status = "okay"; 197 + pinctrl-names = "default"; 198 + pinctrl-0 = <&spi0_pins>, <&spi0_cs0_pin>; 199 + 200 + flash@0 { 201 + #address-cells = <1>; 202 + #size-cells = <1>; 203 + compatible = "jedec,spi-nor"; 204 + reg = <0>; 205 + spi-max-frequency = <40000000>; 206 + }; 207 + }; 208 + 209 + &uart0 { 210 + pinctrl-names = "default"; 211 + pinctrl-0 = <&uart0_ph_pins>; 212 + status = "okay"; 213 + };
+177
arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts
··· 1 + // SPDX-License-Identifier: (GPL-2.0+ or MIT) 2 + /* 3 + * Copyright (C) 2021 Arm Ltd. 4 + */ 5 + 6 + /dts-v1/; 7 + 8 + #include "sun50i-h616.dtsi" 9 + 10 + #include <dt-bindings/gpio/gpio.h> 11 + #include <dt-bindings/interrupt-controller/arm-gic.h> 12 + 13 + / { 14 + model = "X96 Mate"; 15 + compatible = "hechuang,x96-mate", "allwinner,sun50i-h616"; 16 + 17 + aliases { 18 + serial0 = &uart0; 19 + }; 20 + 21 + chosen { 22 + stdout-path = "serial0:115200n8"; 23 + }; 24 + 25 + reg_vcc5v: vcc5v { 26 + /* board wide 5V supply directly from the DC input */ 27 + compatible = "regulator-fixed"; 28 + regulator-name = "vcc-5v"; 29 + regulator-min-microvolt = <5000000>; 30 + regulator-max-microvolt = <5000000>; 31 + regulator-always-on; 32 + }; 33 + }; 34 + 35 + &ir { 36 + status = "okay"; 37 + }; 38 + 39 + &mmc0 { 40 + vmmc-supply = <&reg_dcdce>; 41 + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ 42 + bus-width = <4>; 43 + status = "okay"; 44 + }; 45 + 46 + &mmc2 { 47 + vmmc-supply = <&reg_dcdce>; 48 + vqmmc-supply = <&reg_bldo1>; 49 + bus-width = <8>; 50 + non-removable; 51 + cap-mmc-hw-reset; 52 + mmc-ddr-1_8v; 53 + mmc-hs200-1_8v; 54 + status = "okay"; 55 + }; 56 + 57 + &r_rsb { 58 + status = "okay"; 59 + 60 + axp305: pmic@745 { 61 + compatible = "x-powers,axp305", "x-powers,axp805", 62 + "x-powers,axp806"; 63 + interrupt-controller; 64 + #interrupt-cells = <1>; 65 + reg = <0x745>; 66 + 67 + x-powers,self-working-mode; 68 + vina-supply = <&reg_vcc5v>; 69 + vinb-supply = <&reg_vcc5v>; 70 + vinc-supply = <&reg_vcc5v>; 71 + vind-supply = <&reg_vcc5v>; 72 + vine-supply = <&reg_vcc5v>; 73 + aldoin-supply = <&reg_vcc5v>; 74 + bldoin-supply = <&reg_vcc5v>; 75 + cldoin-supply = <&reg_vcc5v>; 76 + 77 + regulators { 78 + reg_aldo1: aldo1 { 79 + regulator-always-on; 80 + regulator-min-microvolt = <3300000>; 81 + regulator-max-microvolt = <3300000>; 82 + regulator-name = "vcc-sys"; 83 + }; 84 + 85 + /* Enabled by the Android BSP */ 86 + reg_aldo2: aldo2 { 87 + regulator-min-microvolt = <3300000>; 88 + regulator-max-microvolt = <3300000>; 89 + regulator-name = "vcc3v3-ext"; 90 + status = "disabled"; 91 + }; 92 + 93 + /* Enabled by the Android BSP */ 94 + reg_aldo3: aldo3 { 95 + regulator-min-microvolt = <3300000>; 96 + regulator-max-microvolt = <3300000>; 97 + regulator-name = "vcc3v3-ext2"; 98 + status = "disabled"; 99 + }; 100 + 101 + reg_bldo1: bldo1 { 102 + regulator-always-on; 103 + regulator-min-microvolt = <1800000>; 104 + regulator-max-microvolt = <1800000>; 105 + regulator-name = "vcc1v8"; 106 + }; 107 + 108 + /* Enabled by the Android BSP */ 109 + reg_bldo2: bldo2 { 110 + regulator-min-microvolt = <1800000>; 111 + regulator-max-microvolt = <1800000>; 112 + regulator-name = "vcc1v8-2"; 113 + status = "disabled"; 114 + }; 115 + 116 + bldo3 { 117 + /* unused */ 118 + }; 119 + 120 + bldo4 { 121 + /* unused */ 122 + }; 123 + 124 + cldo1 { 125 + regulator-min-microvolt = <2500000>; 126 + regulator-max-microvolt = <2500000>; 127 + regulator-name = "vcc2v5"; 128 + }; 129 + 130 + cldo2 { 131 + /* unused */ 132 + }; 133 + 134 + cldo3 { 135 + /* unused */ 136 + }; 137 + 138 + reg_dcdca: dcdca { 139 + regulator-always-on; 140 + regulator-min-microvolt = <810000>; 141 + regulator-max-microvolt = <1100000>; 142 + regulator-name = "vdd-cpu"; 143 + }; 144 + 145 + reg_dcdcc: dcdcc { 146 + regulator-always-on; 147 + regulator-min-microvolt = <810000>; 148 + regulator-max-microvolt = <990000>; 149 + regulator-name = "vdd-gpu-sys"; 150 + }; 151 + 152 + reg_dcdcd: dcdcd { 153 + regulator-always-on; 154 + regulator-min-microvolt = <1360000>; 155 + regulator-max-microvolt = <1360000>; 156 + regulator-name = "vdd-dram"; 157 + }; 158 + 159 + reg_dcdce: dcdce { 160 + regulator-always-on; 161 + regulator-min-microvolt = <3300000>; 162 + regulator-max-microvolt = <3300000>; 163 + regulator-name = "vcc-eth-mmc"; 164 + }; 165 + 166 + sw { 167 + /* unused */ 168 + }; 169 + }; 170 + }; 171 + }; 172 + 173 + &uart0 { 174 + pinctrl-names = "default"; 175 + pinctrl-0 = <&uart0_ph_pins>; 176 + status = "okay"; 177 + };
+591
arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
··· 1 + // SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2 + // Copyright (C) 2020 Arm Ltd. 3 + // based on the H6 dtsi, which is: 4 + // Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.io> 5 + 6 + #include <dt-bindings/interrupt-controller/arm-gic.h> 7 + #include <dt-bindings/clock/sun50i-h616-ccu.h> 8 + #include <dt-bindings/clock/sun50i-h6-r-ccu.h> 9 + #include <dt-bindings/clock/sun6i-rtc.h> 10 + #include <dt-bindings/reset/sun50i-h616-ccu.h> 11 + #include <dt-bindings/reset/sun50i-h6-r-ccu.h> 12 + 13 + / { 14 + interrupt-parent = <&gic>; 15 + #address-cells = <2>; 16 + #size-cells = <2>; 17 + 18 + cpus { 19 + #address-cells = <1>; 20 + #size-cells = <0>; 21 + 22 + cpu0: cpu@0 { 23 + compatible = "arm,cortex-a53"; 24 + device_type = "cpu"; 25 + reg = <0>; 26 + enable-method = "psci"; 27 + clocks = <&ccu CLK_CPUX>; 28 + }; 29 + 30 + cpu1: cpu@1 { 31 + compatible = "arm,cortex-a53"; 32 + device_type = "cpu"; 33 + reg = <1>; 34 + enable-method = "psci"; 35 + clocks = <&ccu CLK_CPUX>; 36 + }; 37 + 38 + cpu2: cpu@2 { 39 + compatible = "arm,cortex-a53"; 40 + device_type = "cpu"; 41 + reg = <2>; 42 + enable-method = "psci"; 43 + clocks = <&ccu CLK_CPUX>; 44 + }; 45 + 46 + cpu3: cpu@3 { 47 + compatible = "arm,cortex-a53"; 48 + device_type = "cpu"; 49 + reg = <3>; 50 + enable-method = "psci"; 51 + clocks = <&ccu CLK_CPUX>; 52 + }; 53 + }; 54 + 55 + reserved-memory { 56 + #address-cells = <2>; 57 + #size-cells = <2>; 58 + ranges; 59 + 60 + /* 61 + * 256 KiB reserved for Trusted Firmware-A (BL31). 62 + * This is added by BL31 itself, but some bootloaders fail 63 + * to propagate this into the DTB handed to kernels. 64 + */ 65 + secmon@40000000 { 66 + reg = <0x0 0x40000000 0x0 0x40000>; 67 + no-map; 68 + }; 69 + }; 70 + 71 + osc24M: osc24M-clk { 72 + #clock-cells = <0>; 73 + compatible = "fixed-clock"; 74 + clock-frequency = <24000000>; 75 + clock-output-names = "osc24M"; 76 + }; 77 + 78 + pmu { 79 + compatible = "arm,cortex-a53-pmu"; 80 + interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>, 81 + <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>, 82 + <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>, 83 + <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>; 84 + interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>; 85 + }; 86 + 87 + psci { 88 + compatible = "arm,psci-0.2"; 89 + method = "smc"; 90 + }; 91 + 92 + timer { 93 + compatible = "arm,armv8-timer"; 94 + arm,no-tick-in-suspend; 95 + interrupts = <GIC_PPI 13 96 + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>, 97 + <GIC_PPI 14 98 + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>, 99 + <GIC_PPI 11 100 + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>, 101 + <GIC_PPI 10 102 + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 103 + }; 104 + 105 + soc { 106 + compatible = "simple-bus"; 107 + #address-cells = <1>; 108 + #size-cells = <1>; 109 + ranges = <0x0 0x0 0x0 0x40000000>; 110 + 111 + syscon: syscon@3000000 { 112 + compatible = "allwinner,sun50i-h616-system-control"; 113 + reg = <0x03000000 0x1000>; 114 + #address-cells = <1>; 115 + #size-cells = <1>; 116 + ranges; 117 + 118 + sram_c: sram@28000 { 119 + compatible = "mmio-sram"; 120 + reg = <0x00028000 0x30000>; 121 + #address-cells = <1>; 122 + #size-cells = <1>; 123 + ranges = <0 0x00028000 0x30000>; 124 + }; 125 + }; 126 + 127 + ccu: clock@3001000 { 128 + compatible = "allwinner,sun50i-h616-ccu"; 129 + reg = <0x03001000 0x1000>; 130 + clocks = <&osc24M>, <&rtc CLK_OSC32K>, <&rtc CLK_IOSC>; 131 + clock-names = "hosc", "losc", "iosc"; 132 + #clock-cells = <1>; 133 + #reset-cells = <1>; 134 + }; 135 + 136 + watchdog: watchdog@30090a0 { 137 + compatible = "allwinner,sun50i-h616-wdt", 138 + "allwinner,sun6i-a31-wdt"; 139 + reg = <0x030090a0 0x20>; 140 + interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; 141 + clocks = <&osc24M>; 142 + }; 143 + 144 + pio: pinctrl@300b000 { 145 + compatible = "allwinner,sun50i-h616-pinctrl"; 146 + reg = <0x0300b000 0x400>; 147 + interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>, 148 + <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>, 149 + <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>, 150 + <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>, 151 + <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>, 152 + <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>, 153 + <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>, 154 + <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>; 155 + clocks = <&ccu CLK_APB1>, <&osc24M>, <&rtc CLK_OSC32K>; 156 + clock-names = "apb", "hosc", "losc"; 157 + gpio-controller; 158 + #gpio-cells = <3>; 159 + interrupt-controller; 160 + #interrupt-cells = <3>; 161 + 162 + ext_rgmii_pins: rgmii-pins { 163 + pins = "PI0", "PI1", "PI2", "PI3", "PI4", 164 + "PI5", "PI7", "PI8", "PI9", "PI10", 165 + "PI11", "PI12", "PI13", "PI14", "PI15", 166 + "PI16"; 167 + function = "emac0"; 168 + drive-strength = <40>; 169 + }; 170 + 171 + i2c0_pins: i2c0-pins { 172 + pins = "PI6", "PI7"; 173 + function = "i2c0"; 174 + }; 175 + 176 + i2c3_ph_pins: i2c3-ph-pins { 177 + pins = "PH4", "PH5"; 178 + function = "i2c3"; 179 + }; 180 + 181 + ir_rx_pin: ir-rx-pin { 182 + pins = "PH10"; 183 + function = "ir_rx"; 184 + }; 185 + 186 + mmc0_pins: mmc0-pins { 187 + pins = "PF0", "PF1", "PF2", "PF3", 188 + "PF4", "PF5"; 189 + function = "mmc0"; 190 + drive-strength = <30>; 191 + bias-pull-up; 192 + }; 193 + 194 + /omit-if-no-ref/ 195 + mmc1_pins: mmc1-pins { 196 + pins = "PG0", "PG1", "PG2", "PG3", 197 + "PG4", "PG5"; 198 + function = "mmc1"; 199 + drive-strength = <30>; 200 + bias-pull-up; 201 + }; 202 + 203 + mmc2_pins: mmc2-pins { 204 + pins = "PC0", "PC1", "PC5", "PC6", 205 + "PC8", "PC9", "PC10", "PC11", 206 + "PC13", "PC14", "PC15", "PC16"; 207 + function = "mmc2"; 208 + drive-strength = <30>; 209 + bias-pull-up; 210 + }; 211 + 212 + /omit-if-no-ref/ 213 + spi0_pins: spi0-pins { 214 + pins = "PC0", "PC2", "PC4"; 215 + function = "spi0"; 216 + }; 217 + 218 + /omit-if-no-ref/ 219 + spi0_cs0_pin: spi0-cs0-pin { 220 + pins = "PC3"; 221 + function = "spi0"; 222 + }; 223 + 224 + /omit-if-no-ref/ 225 + spi1_pins: spi1-pins { 226 + pins = "PH6", "PH7", "PH8"; 227 + function = "spi1"; 228 + }; 229 + 230 + /omit-if-no-ref/ 231 + spi1_cs0_pin: spi1-cs0-pin { 232 + pins = "PH5"; 233 + function = "spi1"; 234 + }; 235 + 236 + uart0_ph_pins: uart0-ph-pins { 237 + pins = "PH0", "PH1"; 238 + function = "uart0"; 239 + }; 240 + 241 + /omit-if-no-ref/ 242 + uart1_pins: uart1-pins { 243 + pins = "PG6", "PG7"; 244 + function = "uart1"; 245 + }; 246 + 247 + /omit-if-no-ref/ 248 + uart1_rts_cts_pins: uart1-rts-cts-pins { 249 + pins = "PG8", "PG9"; 250 + function = "uart1"; 251 + }; 252 + }; 253 + 254 + gic: interrupt-controller@3021000 { 255 + compatible = "arm,gic-400"; 256 + reg = <0x03021000 0x1000>, 257 + <0x03022000 0x2000>, 258 + <0x03024000 0x2000>, 259 + <0x03026000 0x2000>; 260 + interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 261 + interrupt-controller; 262 + #interrupt-cells = <3>; 263 + }; 264 + 265 + mmc0: mmc@4020000 { 266 + compatible = "allwinner,sun50i-h616-mmc", 267 + "allwinner,sun50i-a100-mmc"; 268 + reg = <0x04020000 0x1000>; 269 + clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>; 270 + clock-names = "ahb", "mmc"; 271 + resets = <&ccu RST_BUS_MMC0>; 272 + reset-names = "ahb"; 273 + interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; 274 + pinctrl-names = "default"; 275 + pinctrl-0 = <&mmc0_pins>; 276 + status = "disabled"; 277 + max-frequency = <150000000>; 278 + cap-sd-highspeed; 279 + cap-mmc-highspeed; 280 + mmc-ddr-3_3v; 281 + cap-sdio-irq; 282 + #address-cells = <1>; 283 + #size-cells = <0>; 284 + }; 285 + 286 + mmc1: mmc@4021000 { 287 + compatible = "allwinner,sun50i-h616-mmc", 288 + "allwinner,sun50i-a100-mmc"; 289 + reg = <0x04021000 0x1000>; 290 + clocks = <&ccu CLK_BUS_MMC1>, <&ccu CLK_MMC1>; 291 + clock-names = "ahb", "mmc"; 292 + resets = <&ccu RST_BUS_MMC1>; 293 + reset-names = "ahb"; 294 + interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>; 295 + pinctrl-names = "default"; 296 + pinctrl-0 = <&mmc1_pins>; 297 + status = "disabled"; 298 + max-frequency = <150000000>; 299 + cap-sd-highspeed; 300 + cap-mmc-highspeed; 301 + mmc-ddr-3_3v; 302 + cap-sdio-irq; 303 + #address-cells = <1>; 304 + #size-cells = <0>; 305 + }; 306 + 307 + mmc2: mmc@4022000 { 308 + compatible = "allwinner,sun50i-h616-emmc", 309 + "allwinner,sun50i-a100-emmc"; 310 + reg = <0x04022000 0x1000>; 311 + clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>; 312 + clock-names = "ahb", "mmc"; 313 + resets = <&ccu RST_BUS_MMC2>; 314 + reset-names = "ahb"; 315 + interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; 316 + pinctrl-names = "default"; 317 + pinctrl-0 = <&mmc2_pins>; 318 + status = "disabled"; 319 + max-frequency = <150000000>; 320 + cap-sd-highspeed; 321 + cap-mmc-highspeed; 322 + mmc-ddr-3_3v; 323 + cap-sdio-irq; 324 + #address-cells = <1>; 325 + #size-cells = <0>; 326 + }; 327 + 328 + uart0: serial@5000000 { 329 + compatible = "snps,dw-apb-uart"; 330 + reg = <0x05000000 0x400>; 331 + interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>; 332 + reg-shift = <2>; 333 + reg-io-width = <4>; 334 + clocks = <&ccu CLK_BUS_UART0>; 335 + resets = <&ccu RST_BUS_UART0>; 336 + status = "disabled"; 337 + }; 338 + 339 + uart1: serial@5000400 { 340 + compatible = "snps,dw-apb-uart"; 341 + reg = <0x05000400 0x400>; 342 + interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>; 343 + reg-shift = <2>; 344 + reg-io-width = <4>; 345 + clocks = <&ccu CLK_BUS_UART1>; 346 + resets = <&ccu RST_BUS_UART1>; 347 + status = "disabled"; 348 + }; 349 + 350 + uart2: serial@5000800 { 351 + compatible = "snps,dw-apb-uart"; 352 + reg = <0x05000800 0x400>; 353 + interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 354 + reg-shift = <2>; 355 + reg-io-width = <4>; 356 + clocks = <&ccu CLK_BUS_UART2>; 357 + resets = <&ccu RST_BUS_UART2>; 358 + status = "disabled"; 359 + }; 360 + 361 + uart3: serial@5000c00 { 362 + compatible = "snps,dw-apb-uart"; 363 + reg = <0x05000c00 0x400>; 364 + interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; 365 + reg-shift = <2>; 366 + reg-io-width = <4>; 367 + clocks = <&ccu CLK_BUS_UART3>; 368 + resets = <&ccu RST_BUS_UART3>; 369 + status = "disabled"; 370 + }; 371 + 372 + uart4: serial@5001000 { 373 + compatible = "snps,dw-apb-uart"; 374 + reg = <0x05001000 0x400>; 375 + interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; 376 + reg-shift = <2>; 377 + reg-io-width = <4>; 378 + clocks = <&ccu CLK_BUS_UART4>; 379 + resets = <&ccu RST_BUS_UART4>; 380 + status = "disabled"; 381 + }; 382 + 383 + uart5: serial@5001400 { 384 + compatible = "snps,dw-apb-uart"; 385 + reg = <0x05001400 0x400>; 386 + interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>; 387 + reg-shift = <2>; 388 + reg-io-width = <4>; 389 + clocks = <&ccu CLK_BUS_UART5>; 390 + resets = <&ccu RST_BUS_UART5>; 391 + status = "disabled"; 392 + }; 393 + 394 + i2c0: i2c@5002000 { 395 + compatible = "allwinner,sun50i-h616-i2c", 396 + "allwinner,sun8i-v536-i2c", 397 + "allwinner,sun6i-a31-i2c"; 398 + reg = <0x05002000 0x400>; 399 + interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>; 400 + clocks = <&ccu CLK_BUS_I2C0>; 401 + resets = <&ccu RST_BUS_I2C0>; 402 + pinctrl-names = "default"; 403 + pinctrl-0 = <&i2c0_pins>; 404 + status = "disabled"; 405 + #address-cells = <1>; 406 + #size-cells = <0>; 407 + }; 408 + 409 + i2c1: i2c@5002400 { 410 + compatible = "allwinner,sun50i-h616-i2c", 411 + "allwinner,sun8i-v536-i2c", 412 + "allwinner,sun6i-a31-i2c"; 413 + reg = <0x05002400 0x400>; 414 + interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; 415 + clocks = <&ccu CLK_BUS_I2C1>; 416 + resets = <&ccu RST_BUS_I2C1>; 417 + status = "disabled"; 418 + #address-cells = <1>; 419 + #size-cells = <0>; 420 + }; 421 + 422 + i2c2: i2c@5002800 { 423 + compatible = "allwinner,sun50i-h616-i2c", 424 + "allwinner,sun8i-v536-i2c", 425 + "allwinner,sun6i-a31-i2c"; 426 + reg = <0x05002800 0x400>; 427 + interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; 428 + clocks = <&ccu CLK_BUS_I2C2>; 429 + resets = <&ccu RST_BUS_I2C2>; 430 + status = "disabled"; 431 + #address-cells = <1>; 432 + #size-cells = <0>; 433 + }; 434 + 435 + i2c3: i2c@5002c00 { 436 + compatible = "allwinner,sun50i-h616-i2c", 437 + "allwinner,sun8i-v536-i2c", 438 + "allwinner,sun6i-a31-i2c"; 439 + reg = <0x05002c00 0x400>; 440 + interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; 441 + clocks = <&ccu CLK_BUS_I2C3>; 442 + resets = <&ccu RST_BUS_I2C3>; 443 + status = "disabled"; 444 + #address-cells = <1>; 445 + #size-cells = <0>; 446 + }; 447 + 448 + i2c4: i2c@5003000 { 449 + compatible = "allwinner,sun50i-h616-i2c", 450 + "allwinner,sun8i-v536-i2c", 451 + "allwinner,sun6i-a31-i2c"; 452 + reg = <0x05003000 0x400>; 453 + interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; 454 + clocks = <&ccu CLK_BUS_I2C4>; 455 + resets = <&ccu RST_BUS_I2C4>; 456 + status = "disabled"; 457 + #address-cells = <1>; 458 + #size-cells = <0>; 459 + }; 460 + 461 + spi0: spi@5010000 { 462 + compatible = "allwinner,sun50i-h616-spi", 463 + "allwinner,sun8i-h3-spi"; 464 + reg = <0x05010000 0x1000>; 465 + interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; 466 + clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>; 467 + clock-names = "ahb", "mod"; 468 + resets = <&ccu RST_BUS_SPI0>; 469 + status = "disabled"; 470 + #address-cells = <1>; 471 + #size-cells = <0>; 472 + }; 473 + 474 + spi1: spi@5011000 { 475 + compatible = "allwinner,sun50i-h616-spi", 476 + "allwinner,sun8i-h3-spi"; 477 + reg = <0x05011000 0x1000>; 478 + interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>; 479 + clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>; 480 + clock-names = "ahb", "mod"; 481 + resets = <&ccu RST_BUS_SPI1>; 482 + status = "disabled"; 483 + #address-cells = <1>; 484 + #size-cells = <0>; 485 + }; 486 + 487 + emac0: ethernet@5020000 { 488 + compatible = "allwinner,sun50i-h616-emac0", 489 + "allwinner,sun50i-a64-emac"; 490 + reg = <0x05020000 0x10000>; 491 + interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>; 492 + interrupt-names = "macirq"; 493 + clocks = <&ccu CLK_BUS_EMAC0>; 494 + clock-names = "stmmaceth"; 495 + resets = <&ccu RST_BUS_EMAC0>; 496 + reset-names = "stmmaceth"; 497 + syscon = <&syscon>; 498 + status = "disabled"; 499 + 500 + mdio0: mdio { 501 + compatible = "snps,dwmac-mdio"; 502 + #address-cells = <1>; 503 + #size-cells = <0>; 504 + }; 505 + }; 506 + 507 + rtc: rtc@7000000 { 508 + compatible = "allwinner,sun50i-h616-rtc"; 509 + reg = <0x07000000 0x400>; 510 + interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>; 511 + clocks = <&r_ccu CLK_R_APB1_RTC>, <&osc24M>, 512 + <&ccu CLK_PLL_SYSTEM_32K>; 513 + clock-names = "bus", "hosc", 514 + "pll-32k"; 515 + #clock-cells = <1>; 516 + }; 517 + 518 + r_ccu: clock@7010000 { 519 + compatible = "allwinner,sun50i-h616-r-ccu"; 520 + reg = <0x07010000 0x210>; 521 + clocks = <&osc24M>, <&rtc CLK_OSC32K>, <&rtc CLK_IOSC>, 522 + <&ccu CLK_PLL_PERIPH0>; 523 + clock-names = "hosc", "losc", "iosc", "pll-periph"; 524 + #clock-cells = <1>; 525 + #reset-cells = <1>; 526 + }; 527 + 528 + r_pio: pinctrl@7022000 { 529 + compatible = "allwinner,sun50i-h616-r-pinctrl"; 530 + reg = <0x07022000 0x400>; 531 + clocks = <&r_ccu CLK_R_APB1>, <&osc24M>, 532 + <&rtc CLK_OSC32K>; 533 + clock-names = "apb", "hosc", "losc"; 534 + gpio-controller; 535 + #gpio-cells = <3>; 536 + 537 + /omit-if-no-ref/ 538 + r_i2c_pins: r-i2c-pins { 539 + pins = "PL0", "PL1"; 540 + function = "s_i2c"; 541 + }; 542 + 543 + r_rsb_pins: r-rsb-pins { 544 + pins = "PL0", "PL1"; 545 + function = "s_rsb"; 546 + }; 547 + }; 548 + 549 + ir: ir@7040000 { 550 + compatible = "allwinner,sun50i-h616-ir", 551 + "allwinner,sun6i-a31-ir"; 552 + reg = <0x07040000 0x400>; 553 + interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>; 554 + clocks = <&r_ccu CLK_R_APB1_IR>, 555 + <&r_ccu CLK_IR>; 556 + clock-names = "apb", "ir"; 557 + resets = <&r_ccu RST_R_APB1_IR>; 558 + pinctrl-names = "default"; 559 + pinctrl-0 = <&ir_rx_pin>; 560 + status = "disabled"; 561 + }; 562 + 563 + r_i2c: i2c@7081400 { 564 + compatible = "allwinner,sun50i-h616-i2c", 565 + "allwinner,sun8i-v536-i2c", 566 + "allwinner,sun6i-a31-i2c"; 567 + reg = <0x07081400 0x400>; 568 + interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>; 569 + clocks = <&r_ccu CLK_R_APB2_I2C>; 570 + resets = <&r_ccu RST_R_APB2_I2C>; 571 + status = "disabled"; 572 + #address-cells = <1>; 573 + #size-cells = <0>; 574 + }; 575 + 576 + r_rsb: rsb@7083000 { 577 + compatible = "allwinner,sun50i-h616-rsb", 578 + "allwinner,sun8i-a23-rsb"; 579 + reg = <0x07083000 0x400>; 580 + interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>; 581 + clocks = <&r_ccu CLK_R_APB2_RSB>; 582 + clock-frequency = <3000000>; 583 + resets = <&r_ccu RST_R_APB2_RSB>; 584 + pinctrl-names = "default"; 585 + pinctrl-0 = <&r_rsb_pins>; 586 + status = "disabled"; 587 + #address-cells = <1>; 588 + #size-cells = <0>; 589 + }; 590 + }; 591 + };