1// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2/* 3 * Copyright (C) 2024 Ryan Walklin <ryan@testtoast.com>. 4 */ 5 6/dts-v1/; 7 8#include "sun50i-h616.dtsi" 9#include "sun50i-h616-cpu-opp.dtsi" 10#include <dt-bindings/gpio/gpio.h> 11#include <dt-bindings/input/linux-event-codes.h> 12#include <dt-bindings/interrupt-controller/arm-gic.h> 13#include <dt-bindings/leds/common.h> 14 15/ { 16 model = "Anbernic RG35XX 2024"; 17 chassis-type = "handset"; 18 compatible = "anbernic,rg35xx-2024", "allwinner,sun50i-h700"; 19 20 aliases { 21 serial0 = &uart0; 22 }; 23 24 chosen { 25 stdout-path = "serial0:115200n8"; 26 }; 27 28 gpio_keys_gamepad: gpio-keys-gamepad { 29 compatible = "gpio-keys"; 30 31 button-a { 32 label = "Action-Pad A"; 33 gpios = <&pio 0 0 GPIO_ACTIVE_LOW>; /* PA0 */ 34 linux,input-type = <EV_KEY>; 35 linux,code = <BTN_EAST>; 36 }; 37 38 button-b { 39 label = "Action-Pad B"; 40 gpios = <&pio 0 1 GPIO_ACTIVE_LOW>; /* PA1 */ 41 linux,input-type = <EV_KEY>; 42 linux,code = <BTN_SOUTH>; 43 }; 44 45 button-down { 46 label = "D-Pad Down"; 47 gpios = <&pio 4 0 GPIO_ACTIVE_LOW>; /* PE0 */ 48 linux,input-type = <EV_KEY>; 49 linux,code = <BTN_DPAD_DOWN>; 50 }; 51 52 button-l1 { 53 label = "Key L1"; 54 gpios = <&pio 0 10 GPIO_ACTIVE_LOW>; /* PA10 */ 55 linux,input-type = <EV_KEY>; 56 linux,code = <BTN_TL>; 57 }; 58 59 button-l2 { 60 label = "Key L2"; 61 gpios = <&pio 0 11 GPIO_ACTIVE_LOW>; /* PA11 */ 62 linux,input-type = <EV_KEY>; 63 linux,code = <BTN_TL2>; 64 }; 65 66 button-left { 67 label = "D-Pad left"; 68 gpios = <&pio 0 8 GPIO_ACTIVE_LOW>; /* PA8 */ 69 linux,input-type = <EV_KEY>; 70 linux,code = <BTN_DPAD_LEFT>; 71 }; 72 73 button-menu { 74 label = "Key Menu"; 75 gpios = <&pio 4 3 GPIO_ACTIVE_LOW>; /* PE3 */ 76 linux,input-type = <EV_KEY>; 77 linux,code = <BTN_MODE>; 78 }; 79 80 button-r1 { 81 label = "Key R1"; 82 gpios = <&pio 0 12 GPIO_ACTIVE_LOW>; /* PA12 */ 83 linux,input-type = <EV_KEY>; 84 linux,code = <BTN_TR>; 85 }; 86 87 button-r2 { 88 label = "Key R2"; 89 gpios = <&pio 0 7 GPIO_ACTIVE_LOW>; /* PA7 */ 90 linux,input-type = <EV_KEY>; 91 linux,code = <BTN_TR2>; 92 }; 93 94 button-right { 95 label = "D-Pad Right"; 96 gpios = <&pio 0 9 GPIO_ACTIVE_LOW>; /* PA9 */ 97 linux,input-type = <EV_KEY>; 98 linux,code = <BTN_DPAD_RIGHT>; 99 }; 100 101 button-select { 102 label = "Key Select"; 103 gpios = <&pio 0 5 GPIO_ACTIVE_LOW>; /* PA5 */ 104 linux,input-type = <EV_KEY>; 105 linux,code = <BTN_SELECT>; 106 }; 107 button-start { 108 label = "Key Start"; 109 gpios = <&pio 0 4 GPIO_ACTIVE_LOW>; /* PA4 */ 110 linux,input-type = <EV_KEY>; 111 linux,code = <BTN_START>; 112 }; 113 114 button-up { 115 label = "D-Pad Up"; 116 gpios = <&pio 0 6 GPIO_ACTIVE_LOW>; /* PA6 */ 117 linux,input-type = <EV_KEY>; 118 linux,code = <BTN_DPAD_UP>; 119 }; 120 121 button-x { 122 label = "Action-Pad X"; 123 gpios = <&pio 0 3 GPIO_ACTIVE_LOW>; /* PA3 */ 124 linux,input-type = <EV_KEY>; 125 linux,code = <BTN_NORTH>; 126 }; 127 128 button-y { 129 label = "Action Pad Y"; 130 gpios = <&pio 0 2 GPIO_ACTIVE_LOW>; /* PA2 */ 131 linux,input-type = <EV_KEY>; 132 linux,code = <BTN_WEST>; 133 }; 134 }; 135 136 gpio-keys-volume { 137 compatible = "gpio-keys"; 138 autorepeat; 139 140 button-vol-up { 141 label = "Key Volume Up"; 142 gpios = <&pio 4 1 GPIO_ACTIVE_LOW>; /* PE1 */ 143 linux,input-type = <EV_KEY>; 144 linux,code = <KEY_VOLUMEUP>; 145 }; 146 147 button-vol-down { 148 label = "Key Volume Down"; 149 gpios = <&pio 4 2 GPIO_ACTIVE_LOW>; /* PE2 */ 150 linux,input-type = <EV_KEY>; 151 linux,code = <KEY_VOLUMEDOWN>; 152 }; 153 }; 154 155 leds { 156 compatible = "gpio-leds"; 157 158 led-0 { 159 function = LED_FUNCTION_POWER; 160 color = <LED_COLOR_ID_GREEN>; 161 gpios = <&pio 8 12 GPIO_ACTIVE_HIGH>; /* PI12 */ 162 default-state = "on"; 163 }; 164 }; 165 166 reg_vcc5v: regulator-vcc5v { /* USB-C power input */ 167 compatible = "regulator-fixed"; 168 regulator-name = "vcc-5v"; 169 regulator-min-microvolt = <5000000>; 170 regulator-max-microvolt = <5000000>; 171 }; 172}; 173 174&cpu0 { 175 cpu-supply = <®_dcdc1>; 176}; 177 178&ehci0 { 179 status = "okay"; 180}; 181 182&mmc0 { 183 vmmc-supply = <®_cldo3>; 184 disable-wp; 185 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ 186 bus-width = <4>; 187 status = "okay"; 188}; 189 190&ohci0 { 191 status = "okay"; 192}; 193 194&pio { 195 vcc-pa-supply = <®_cldo3>; 196 vcc-pc-supply = <®_cldo3>; 197 vcc-pe-supply = <®_cldo3>; 198 vcc-pf-supply = <®_cldo3>; 199 vcc-pg-supply = <®_aldo4>; 200 vcc-ph-supply = <®_cldo3>; 201 vcc-pi-supply = <®_cldo3>; 202}; 203 204&r_rsb { 205 status = "okay"; 206 207 axp717: pmic@3a3 { 208 compatible = "x-powers,axp717"; 209 reg = <0x3a3>; 210 interrupt-controller; 211 #interrupt-cells = <1>; 212 interrupt-parent = <&nmi_intc>; 213 interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 214 215 vin1-supply = <®_vcc5v>; 216 vin2-supply = <®_vcc5v>; 217 vin3-supply = <®_vcc5v>; 218 vin4-supply = <®_vcc5v>; 219 220 regulators { 221 reg_dcdc1: dcdc1 { 222 regulator-always-on; 223 regulator-min-microvolt = <900000>; 224 regulator-max-microvolt = <1160000>; 225 regulator-name = "vdd-cpu"; 226 }; 227 228 reg_dcdc2: dcdc2 { 229 regulator-always-on; 230 regulator-min-microvolt = <940000>; 231 regulator-max-microvolt = <940000>; 232 regulator-name = "vdd-gpu-sys"; 233 }; 234 235 reg_dcdc3: dcdc3 { 236 regulator-always-on; 237 regulator-min-microvolt = <1100000>; 238 regulator-max-microvolt = <1100000>; 239 regulator-name = "vdd-dram"; 240 }; 241 242 reg_aldo1: aldo1 { 243 /* 1.8v - unused */ 244 }; 245 246 reg_aldo2: aldo2 { 247 /* 1.8v - unused */ 248 }; 249 250 reg_aldo3: aldo3 { 251 /* 1.8v - unused */ 252 }; 253 254 reg_aldo4: aldo4 { 255 regulator-min-microvolt = <1800000>; 256 regulator-max-microvolt = <1800000>; 257 regulator-name = "vcc-pg"; 258 }; 259 260 reg_bldo1: bldo1 { 261 /* 1.8v - unused */ 262 }; 263 264 reg_bldo2: bldo2 { 265 regulator-always-on; 266 regulator-min-microvolt = <1800000>; 267 regulator-max-microvolt = <1800000>; 268 regulator-name = "vcc-pll"; 269 }; 270 271 reg_bldo3: bldo3 { 272 /* 2.8v - unused */ 273 }; 274 275 reg_bldo4: bldo4 { 276 /* 1.2v - unused */ 277 }; 278 279 reg_cldo1: cldo1 { 280 /* 3.3v - audio codec - not yet implemented */ 281 }; 282 283 reg_cldo2: cldo2 { 284 /* 3.3v - unused */ 285 }; 286 287 reg_cldo3: cldo3 { 288 regulator-always-on; 289 regulator-min-microvolt = <3300000>; 290 regulator-max-microvolt = <3300000>; 291 regulator-name = "vcc-io"; 292 }; 293 294 reg_cldo4: cldo4 { 295 regulator-min-microvolt = <3300000>; 296 regulator-max-microvolt = <3300000>; 297 regulator-name = "vcc-wifi"; 298 }; 299 300 reg_boost: boost { 301 regulator-min-microvolt = <5000000>; 302 regulator-max-microvolt = <5200000>; 303 regulator-name = "boost"; 304 }; 305 306 reg_cpusldo: cpusldo { 307 /* unused */ 308 }; 309 }; 310 }; 311}; 312 313&uart0 { 314 pinctrl-names = "default"; 315 pinctrl-0 = <&uart0_ph_pins>; 316 status = "okay"; 317}; 318 319/* the AXP717 has USB type-C role switch functionality, not yet described by the binding */ 320&usbotg { 321 dr_mode = "peripheral"; /* USB type-C receptable */ 322 status = "okay"; 323}; 324 325&usbphy { 326 status = "okay"; 327}; 328