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

Merge tag 'sunxi-dt-for-6.18-2' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into soc/dt

Allwinner Device Tree changes for 6.18 - part 2

A new board, the Amediatech X96Q, was added.

* tag 'sunxi-dt-for-6.18-2' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux:
arm64: dts: allwinner: h313: Add Amediatech X96Q
dt-bindings: arm: sunxi: Add Amediatech X96Q

Link: https://lore.kernel.org/r/aNFg7iuBtyWkCZg6@wens.tw
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

+236
+5
Documentation/devicetree/bindings/arm/sunxi.yaml
··· 971 971 - const: hechuang,x96-mate 972 972 - const: allwinner,sun50i-h616 973 973 974 + - description: X96Q 975 + items: 976 + - const: amediatech,x96q 977 + - const: allwinner,sun50i-h616 978 + 974 979 - description: X96Q Pro+ 975 980 items: 976 981 - const: amediatech,x96q-pro-plus
+1
arch/arm64/boot/dts/allwinner/Makefile
··· 41 41 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6.dtb 42 42 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6-mini.dtb 43 43 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h313-tanix-tx1.dtb 44 + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h313-x96q.dtb 44 45 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-bigtreetech-cb1-manta.dtb 45 46 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-bigtreetech-pi.dtb 46 47 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-orangepi-zero2.dtb
+230
arch/arm64/boot/dts/allwinner/sun50i-h313-x96q.dts
··· 1 + // SPDX-License-Identifier: (GPL-2.0-or-later OR MIT) 2 + /* 3 + * Copyright (C) 2025 J. Neuschäfer <j.ne@posteo.net> 4 + */ 5 + 6 + /dts-v1/; 7 + 8 + #include "sun50i-h616.dtsi" 9 + #include "sun50i-h616-cpu-opp.dtsi" 10 + 11 + #include <dt-bindings/gpio/gpio.h> 12 + #include <dt-bindings/interrupt-controller/arm-gic.h> 13 + #include <dt-bindings/input/linux-event-codes.h> 14 + #include <dt-bindings/leds/common.h> 15 + 16 + / { 17 + model = "X96Q"; 18 + compatible = "amediatech,x96q", "allwinner,sun50i-h616"; 19 + 20 + aliases { 21 + serial0 = &uart0; 22 + }; 23 + 24 + chosen { 25 + stdout-path = "serial0:115200n8"; 26 + }; 27 + 28 + reg_vcc5v: vcc5v { 29 + /* board wide 5V supply directly from the DC input */ 30 + compatible = "regulator-fixed"; 31 + regulator-name = "vcc-5v"; 32 + regulator-min-microvolt = <5000000>; 33 + regulator-max-microvolt = <5000000>; 34 + regulator-always-on; 35 + }; 36 + 37 + gpio-keys { 38 + compatible = "gpio-keys"; 39 + 40 + key-recovery { 41 + label = "Recovery"; 42 + linux,code = <KEY_VENDOR>; 43 + gpios = <&pio 7 9 GPIO_ACTIVE_LOW>; 44 + }; 45 + }; 46 + 47 + leds { 48 + compatible = "gpio-leds"; 49 + 50 + led-0 { 51 + color = <LED_COLOR_ID_BLUE>; 52 + gpios = <&pio 7 6 GPIO_ACTIVE_LOW>; 53 + default-state = "on"; 54 + }; 55 + }; 56 + }; 57 + 58 + &codec { 59 + allwinner,audio-routing = "Line Out", "LINEOUT"; 60 + status = "okay"; 61 + }; 62 + 63 + &cpu0 { 64 + cpu-supply = <&reg_dcdca>; 65 + }; 66 + 67 + &ehci0 { 68 + status = "okay"; 69 + }; 70 + 71 + &ehci3 { 72 + status = "okay"; 73 + }; 74 + 75 + /* TODO: EMAC1 connected to AC200 PHY */ 76 + 77 + &gpu { 78 + mali-supply = <&reg_dcdcc>; 79 + status = "okay"; 80 + }; 81 + 82 + &ir { 83 + status = "okay"; 84 + }; 85 + 86 + &mmc0 { 87 + /* microSD */ 88 + vmmc-supply = <&reg_aldo1>; 89 + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ 90 + disable-wp; 91 + bus-width = <4>; 92 + status = "okay"; 93 + }; 94 + 95 + /* TODO: XRadio XR819 WLAN @ mmc1 */ 96 + 97 + &mmc2 { 98 + /* eMMC */ 99 + vmmc-supply = <&reg_aldo1>; 100 + vqmmc-supply = <&reg_bldo1>; 101 + non-removable; 102 + cap-mmc-hw-reset; 103 + mmc-ddr-1_8v; 104 + mmc-hs200-1_8v; 105 + max-frequency = <100000000>; /* required for stable operation */ 106 + bus-width = <8>; 107 + status = "okay"; 108 + }; 109 + 110 + &ohci0 { 111 + status = "okay"; 112 + }; 113 + 114 + &ohci3 { 115 + status = "okay"; 116 + }; 117 + 118 + &r_i2c { 119 + status = "okay"; 120 + 121 + axp305: pmic@36 { 122 + compatible = "x-powers,axp305", "x-powers,axp805", 123 + "x-powers,axp806"; 124 + interrupt-controller; 125 + #interrupt-cells = <1>; 126 + reg = <0x36>; 127 + 128 + x-powers,self-working-mode; 129 + vina-supply = <&reg_vcc5v>; 130 + vinb-supply = <&reg_vcc5v>; 131 + vinc-supply = <&reg_vcc5v>; 132 + vind-supply = <&reg_vcc5v>; 133 + vine-supply = <&reg_vcc5v>; 134 + aldoin-supply = <&reg_vcc5v>; 135 + bldoin-supply = <&reg_vcc5v>; 136 + cldoin-supply = <&reg_vcc5v>; 137 + 138 + regulators { 139 + reg_dcdca: dcdca { 140 + regulator-always-on; 141 + regulator-min-microvolt = <810000>; 142 + regulator-max-microvolt = <1100000>; 143 + regulator-name = "vdd-cpu"; 144 + }; 145 + 146 + dcdcb { 147 + /* unused */ 148 + }; 149 + 150 + reg_dcdcc: dcdcc { 151 + regulator-always-on; 152 + regulator-min-microvolt = <810000>; 153 + regulator-max-microvolt = <990000>; 154 + regulator-name = "vdd-gpu-sys"; 155 + }; 156 + 157 + dcdcd { 158 + regulator-always-on; 159 + regulator-min-microvolt = <1500000>; 160 + regulator-max-microvolt = <1500000>; 161 + regulator-name = "vdd-dram"; 162 + }; 163 + 164 + dcdce { 165 + /* unused */ 166 + }; 167 + 168 + reg_aldo1: aldo1 { 169 + regulator-always-on; 170 + regulator-min-microvolt = <3300000>; 171 + regulator-max-microvolt = <3300000>; 172 + regulator-name = "vcc3v3"; 173 + }; 174 + 175 + aldo2 { 176 + /* unused */ 177 + }; 178 + 179 + aldo3 { 180 + /* unused */ 181 + }; 182 + 183 + reg_bldo1: bldo1 { 184 + regulator-always-on; 185 + regulator-min-microvolt = <1800000>; 186 + regulator-max-microvolt = <1800000>; 187 + regulator-name = "vcc1v8"; 188 + }; 189 + 190 + bldo2 { 191 + /* unused */ 192 + }; 193 + 194 + bldo3 { 195 + /* unused */ 196 + }; 197 + 198 + bldo4 { 199 + /* unused */ 200 + }; 201 + 202 + cldo1 { 203 + /* unused */ 204 + }; 205 + 206 + cldo2 { 207 + /* unused */ 208 + }; 209 + 210 + cldo3 { 211 + /* unused */ 212 + }; 213 + }; 214 + }; 215 + }; 216 + 217 + &uart0 { 218 + pinctrl-names = "default"; 219 + pinctrl-0 = <&uart0_ph_pins>; 220 + status = "okay"; 221 + }; 222 + 223 + &usbotg { 224 + dr_mode = "host"; /* USB A type receptacle */ 225 + status = "okay"; 226 + }; 227 + 228 + &usbphy { 229 + status = "okay"; 230 + };