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