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 = <®_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 = <®_dcdcc>; 79 status = "okay"; 80}; 81 82&ir { 83 status = "okay"; 84}; 85 86&mmc0 { 87 /* microSD */ 88 vmmc-supply = <®_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 = <®_aldo1>; 100 vqmmc-supply = <®_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 = <®_vcc5v>; 130 vinb-supply = <®_vcc5v>; 131 vinc-supply = <®_vcc5v>; 132 vind-supply = <®_vcc5v>; 133 vine-supply = <®_vcc5v>; 134 aldoin-supply = <®_vcc5v>; 135 bldoin-supply = <®_vcc5v>; 136 cldoin-supply = <®_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}; 231