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 battery: battery { 25 compatible = "simple-battery"; 26 constant-charge-current-max-microamp = <1024000>; 27 voltage-max-design-microvolt = <4200000>; 28 }; 29 30 chosen { 31 stdout-path = "serial0:115200n8"; 32 }; 33 34 gpio_keys_gamepad: gpio-keys-gamepad { 35 compatible = "gpio-keys"; 36 37 button-a { 38 label = "Action-Pad A"; 39 gpios = <&pio 0 0 GPIO_ACTIVE_LOW>; /* PA0 */ 40 linux,input-type = <EV_KEY>; 41 linux,code = <BTN_EAST>; 42 }; 43 44 button-b { 45 label = "Action-Pad B"; 46 gpios = <&pio 0 1 GPIO_ACTIVE_LOW>; /* PA1 */ 47 linux,input-type = <EV_KEY>; 48 linux,code = <BTN_SOUTH>; 49 }; 50 51 button-down { 52 label = "D-Pad Down"; 53 gpios = <&pio 4 0 GPIO_ACTIVE_LOW>; /* PE0 */ 54 linux,input-type = <EV_KEY>; 55 linux,code = <BTN_DPAD_DOWN>; 56 }; 57 58 button-l1 { 59 label = "Key L1"; 60 gpios = <&pio 0 10 GPIO_ACTIVE_LOW>; /* PA10 */ 61 linux,input-type = <EV_KEY>; 62 linux,code = <BTN_TL>; 63 }; 64 65 button-l2 { 66 label = "Key L2"; 67 gpios = <&pio 0 11 GPIO_ACTIVE_LOW>; /* PA11 */ 68 linux,input-type = <EV_KEY>; 69 linux,code = <BTN_TL2>; 70 }; 71 72 button-left { 73 label = "D-Pad left"; 74 gpios = <&pio 0 8 GPIO_ACTIVE_LOW>; /* PA8 */ 75 linux,input-type = <EV_KEY>; 76 linux,code = <BTN_DPAD_LEFT>; 77 }; 78 79 button-menu { 80 label = "Key Menu"; 81 gpios = <&pio 4 3 GPIO_ACTIVE_LOW>; /* PE3 */ 82 linux,input-type = <EV_KEY>; 83 linux,code = <BTN_MODE>; 84 }; 85 86 button-r1 { 87 label = "Key R1"; 88 gpios = <&pio 0 12 GPIO_ACTIVE_LOW>; /* PA12 */ 89 linux,input-type = <EV_KEY>; 90 linux,code = <BTN_TR>; 91 }; 92 93 button-r2 { 94 label = "Key R2"; 95 gpios = <&pio 0 7 GPIO_ACTIVE_LOW>; /* PA7 */ 96 linux,input-type = <EV_KEY>; 97 linux,code = <BTN_TR2>; 98 }; 99 100 button-right { 101 label = "D-Pad Right"; 102 gpios = <&pio 0 9 GPIO_ACTIVE_LOW>; /* PA9 */ 103 linux,input-type = <EV_KEY>; 104 linux,code = <BTN_DPAD_RIGHT>; 105 }; 106 107 button-select { 108 label = "Key Select"; 109 gpios = <&pio 0 5 GPIO_ACTIVE_LOW>; /* PA5 */ 110 linux,input-type = <EV_KEY>; 111 linux,code = <BTN_SELECT>; 112 }; 113 button-start { 114 label = "Key Start"; 115 gpios = <&pio 0 4 GPIO_ACTIVE_LOW>; /* PA4 */ 116 linux,input-type = <EV_KEY>; 117 linux,code = <BTN_START>; 118 }; 119 120 button-up { 121 label = "D-Pad Up"; 122 gpios = <&pio 0 6 GPIO_ACTIVE_LOW>; /* PA6 */ 123 linux,input-type = <EV_KEY>; 124 linux,code = <BTN_DPAD_UP>; 125 }; 126 127 button-x { 128 label = "Action-Pad X"; 129 gpios = <&pio 0 3 GPIO_ACTIVE_LOW>; /* PA3 */ 130 linux,input-type = <EV_KEY>; 131 linux,code = <BTN_NORTH>; 132 }; 133 134 button-y { 135 label = "Action Pad Y"; 136 gpios = <&pio 0 2 GPIO_ACTIVE_LOW>; /* PA2 */ 137 linux,input-type = <EV_KEY>; 138 linux,code = <BTN_WEST>; 139 }; 140 }; 141 142 gpio-keys-volume { 143 compatible = "gpio-keys"; 144 autorepeat; 145 146 button-vol-up { 147 label = "Key Volume Up"; 148 gpios = <&pio 4 1 GPIO_ACTIVE_LOW>; /* PE1 */ 149 linux,input-type = <EV_KEY>; 150 linux,code = <KEY_VOLUMEUP>; 151 }; 152 153 button-vol-down { 154 label = "Key Volume Down"; 155 gpios = <&pio 4 2 GPIO_ACTIVE_LOW>; /* PE2 */ 156 linux,input-type = <EV_KEY>; 157 linux,code = <KEY_VOLUMEDOWN>; 158 }; 159 }; 160 161 leds { 162 compatible = "gpio-leds"; 163 164 led-0 { 165 function = LED_FUNCTION_POWER; 166 color = <LED_COLOR_ID_GREEN>; 167 gpios = <&pio 8 12 GPIO_ACTIVE_HIGH>; /* PI12 */ 168 default-state = "on"; 169 }; 170 171 led-1 { 172 function = LED_FUNCTION_STATUS; 173 color = <LED_COLOR_ID_GREEN>; 174 gpios = <&pio 8 11 GPIO_ACTIVE_HIGH>; /* PI11 */ 175 }; 176 }; 177 178 reg_vcc5v: regulator-vcc5v { /* USB-C power input */ 179 compatible = "regulator-fixed"; 180 regulator-name = "vcc-5v"; 181 regulator-min-microvolt = <5000000>; 182 regulator-max-microvolt = <5000000>; 183 }; 184}; 185 186&codec { 187 /* Both speakers and headphone jack connected to 74HC4052D analog mux*/ 188 allwinner,audio-routing = "Speaker", "LINEOUT", 189 "Headphone", "LINEOUT"; 190 allwinner,pa-gpios = <&pio 8 5 GPIO_ACTIVE_HIGH>; // PI5 191 hp-det-gpios = <&pio 8 3 GPIO_ACTIVE_HIGH>; // PI3 192 status = "okay"; 193}; 194 195&cpu0 { 196 cpu-supply = <®_dcdc1>; 197}; 198 199&ehci0 { 200 status = "okay"; 201}; 202 203&gpu { 204 mali-supply = <®_dcdc2>; 205 status = "okay"; 206}; 207 208&mmc0 { 209 vmmc-supply = <®_cldo3>; 210 disable-wp; 211 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ 212 bus-width = <4>; 213 status = "okay"; 214}; 215 216&ohci0 { 217 status = "okay"; 218}; 219 220&pio { 221 vcc-pa-supply = <®_cldo3>; 222 vcc-pc-supply = <®_cldo3>; 223 vcc-pe-supply = <®_cldo3>; 224 vcc-pf-supply = <®_cldo3>; 225 vcc-pg-supply = <®_aldo4>; 226 vcc-ph-supply = <®_cldo3>; 227 vcc-pi-supply = <®_cldo3>; 228}; 229 230&r_i2c { 231 status = "okay"; 232 233 axp717: pmic@34 { 234 compatible = "x-powers,axp717"; 235 reg = <0x34>; 236 interrupt-controller; 237 #interrupt-cells = <1>; 238 interrupt-parent = <&nmi_intc>; 239 interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 240 241 vin1-supply = <®_vcc5v>; 242 vin2-supply = <®_vcc5v>; 243 vin3-supply = <®_vcc5v>; 244 vin4-supply = <®_vcc5v>; 245 246 axp_adc: adc { 247 compatible = "x-powers,axp717-adc"; 248 #io-channel-cells = <1>; 249 }; 250 251 battery_power: battery-power { 252 compatible = "x-powers,axp717-battery-power-supply"; 253 monitored-battery = <&battery>; 254 x-powers,no-thermistor; 255 }; 256 257 regulators { 258 reg_dcdc1: dcdc1 { 259 regulator-always-on; 260 regulator-min-microvolt = <900000>; 261 regulator-max-microvolt = <1160000>; 262 regulator-name = "vdd-cpu"; 263 }; 264 265 reg_dcdc2: dcdc2 { 266 regulator-always-on; 267 regulator-min-microvolt = <940000>; 268 regulator-max-microvolt = <940000>; 269 regulator-name = "vdd-gpu-sys"; 270 }; 271 272 reg_dcdc3: dcdc3 { 273 regulator-always-on; 274 regulator-min-microvolt = <1100000>; 275 regulator-max-microvolt = <1100000>; 276 regulator-name = "vdd-dram"; 277 }; 278 279 reg_aldo1: aldo1 { 280 /* 1.8v - unused */ 281 }; 282 283 reg_aldo2: aldo2 { 284 /* 1.8v - unused */ 285 }; 286 287 reg_aldo3: aldo3 { 288 /* 1.8v - unused */ 289 }; 290 291 reg_aldo4: aldo4 { 292 regulator-min-microvolt = <1800000>; 293 regulator-max-microvolt = <1800000>; 294 regulator-name = "avcc"; 295 }; 296 297 reg_bldo1: bldo1 { 298 /* 1.8v - unused */ 299 }; 300 301 reg_bldo2: bldo2 { 302 regulator-always-on; 303 regulator-min-microvolt = <1800000>; 304 regulator-max-microvolt = <1800000>; 305 regulator-name = "vcc-pll"; 306 }; 307 308 reg_bldo3: bldo3 { 309 /* 2.8v - unused */ 310 }; 311 312 reg_bldo4: bldo4 { 313 /* 1.2v - unused */ 314 }; 315 316 reg_cldo1: cldo1 { 317 regulator-always-on; 318 regulator-min-microvolt = <3300000>; 319 regulator-max-microvolt = <3300000>; 320 regulator-name = "vcc-spkr-amp"; 321 }; 322 323 reg_cldo2: cldo2 { 324 /* 3.3v - unused */ 325 }; 326 327 reg_cldo3: cldo3 { 328 regulator-always-on; 329 regulator-min-microvolt = <3300000>; 330 regulator-max-microvolt = <3300000>; 331 regulator-name = "vcc-io"; 332 }; 333 334 reg_cldo4: cldo4 { 335 regulator-min-microvolt = <3300000>; 336 regulator-max-microvolt = <3300000>; 337 regulator-name = "vcc-wifi"; 338 }; 339 340 reg_boost: boost { 341 regulator-min-microvolt = <5000000>; 342 regulator-max-microvolt = <5200000>; 343 regulator-name = "boost"; 344 }; 345 346 /* 347 * Regulator function is unknown, but reading 348 * GPIO values in bootloader is inconsistent 349 * on reboot if this is disabled. Setting to 350 * default value from regulator OTP mem. 351 */ 352 reg_cpusldo: cpusldo { 353 regulator-always-on; 354 regulator-boot-on; 355 regulator-min-microvolt = <900000>; 356 regulator-max-microvolt = <900000>; 357 }; 358 }; 359 360 usb_power: usb-power { 361 compatible = "x-powers,axp717-usb-power-supply"; 362 input-current-limit-microamp = <1500000>; 363 }; 364 }; 365}; 366 367&uart0 { 368 pinctrl-names = "default"; 369 pinctrl-0 = <&uart0_ph_pins>; 370 status = "okay"; 371}; 372 373/* the AXP717 has USB type-C role switch functionality, not yet described by the binding */ 374&usbotg { 375 dr_mode = "peripheral"; /* USB type-C receptable */ 376 status = "okay"; 377}; 378 379&usbphy { 380 status = "okay"; 381}; 382