| // SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| /* |
| * Copyright (C) 2024 Ryan Walklin <ryan@testtoast.com>. |
| */ |
| |
| /dts-v1/; |
| |
| #include "sun50i-h616.dtsi" |
| #include "sun50i-h616-cpu-opp.dtsi" |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/input/linux-event-codes.h> |
| #include <dt-bindings/interrupt-controller/arm-gic.h> |
| #include <dt-bindings/leds/common.h> |
| |
| / { |
| model = "Anbernic RG35XX 2024"; |
| chassis-type = "handset"; |
| compatible = "anbernic,rg35xx-2024", "allwinner,sun50i-h700"; |
| |
| aliases { |
| serial0 = &uart0; |
| }; |
| |
| chosen { |
| stdout-path = "serial0:115200n8"; |
| }; |
| |
| gpio_keys_gamepad: gpio-keys-gamepad { |
| compatible = "gpio-keys"; |
| |
| button-a { |
| label = "Action-Pad A"; |
| gpios = <&pio 0 0 GPIO_ACTIVE_LOW>; /* PA0 */ |
| linux,input-type = <EV_KEY>; |
| linux,code = <BTN_EAST>; |
| }; |
| |
| button-b { |
| label = "Action-Pad B"; |
| gpios = <&pio 0 1 GPIO_ACTIVE_LOW>; /* PA1 */ |
| linux,input-type = <EV_KEY>; |
| linux,code = <BTN_SOUTH>; |
| }; |
| |
| button-down { |
| label = "D-Pad Down"; |
| gpios = <&pio 4 0 GPIO_ACTIVE_LOW>; /* PE0 */ |
| linux,input-type = <EV_KEY>; |
| linux,code = <BTN_DPAD_DOWN>; |
| }; |
| |
| button-l1 { |
| label = "Key L1"; |
| gpios = <&pio 0 10 GPIO_ACTIVE_LOW>; /* PA10 */ |
| linux,input-type = <EV_KEY>; |
| linux,code = <BTN_TL>; |
| }; |
| |
| button-l2 { |
| label = "Key L2"; |
| gpios = <&pio 0 11 GPIO_ACTIVE_LOW>; /* PA11 */ |
| linux,input-type = <EV_KEY>; |
| linux,code = <BTN_TL2>; |
| }; |
| |
| button-left { |
| label = "D-Pad left"; |
| gpios = <&pio 0 8 GPIO_ACTIVE_LOW>; /* PA8 */ |
| linux,input-type = <EV_KEY>; |
| linux,code = <BTN_DPAD_LEFT>; |
| }; |
| |
| button-menu { |
| label = "Key Menu"; |
| gpios = <&pio 4 3 GPIO_ACTIVE_LOW>; /* PE3 */ |
| linux,input-type = <EV_KEY>; |
| linux,code = <BTN_MODE>; |
| }; |
| |
| button-r1 { |
| label = "Key R1"; |
| gpios = <&pio 0 12 GPIO_ACTIVE_LOW>; /* PA12 */ |
| linux,input-type = <EV_KEY>; |
| linux,code = <BTN_TR>; |
| }; |
| |
| button-r2 { |
| label = "Key R2"; |
| gpios = <&pio 0 7 GPIO_ACTIVE_LOW>; /* PA7 */ |
| linux,input-type = <EV_KEY>; |
| linux,code = <BTN_TR2>; |
| }; |
| |
| button-right { |
| label = "D-Pad Right"; |
| gpios = <&pio 0 9 GPIO_ACTIVE_LOW>; /* PA9 */ |
| linux,input-type = <EV_KEY>; |
| linux,code = <BTN_DPAD_RIGHT>; |
| }; |
| |
| button-select { |
| label = "Key Select"; |
| gpios = <&pio 0 5 GPIO_ACTIVE_LOW>; /* PA5 */ |
| linux,input-type = <EV_KEY>; |
| linux,code = <BTN_SELECT>; |
| }; |
| button-start { |
| label = "Key Start"; |
| gpios = <&pio 0 4 GPIO_ACTIVE_LOW>; /* PA4 */ |
| linux,input-type = <EV_KEY>; |
| linux,code = <BTN_START>; |
| }; |
| |
| button-up { |
| label = "D-Pad Up"; |
| gpios = <&pio 0 6 GPIO_ACTIVE_LOW>; /* PA6 */ |
| linux,input-type = <EV_KEY>; |
| linux,code = <BTN_DPAD_UP>; |
| }; |
| |
| button-x { |
| label = "Action-Pad X"; |
| gpios = <&pio 0 3 GPIO_ACTIVE_LOW>; /* PA3 */ |
| linux,input-type = <EV_KEY>; |
| linux,code = <BTN_NORTH>; |
| }; |
| |
| button-y { |
| label = "Action Pad Y"; |
| gpios = <&pio 0 2 GPIO_ACTIVE_LOW>; /* PA2 */ |
| linux,input-type = <EV_KEY>; |
| linux,code = <BTN_WEST>; |
| }; |
| }; |
| |
| gpio-keys-volume { |
| compatible = "gpio-keys"; |
| autorepeat; |
| |
| button-vol-up { |
| label = "Key Volume Up"; |
| gpios = <&pio 4 1 GPIO_ACTIVE_LOW>; /* PE1 */ |
| linux,input-type = <EV_KEY>; |
| linux,code = <KEY_VOLUMEUP>; |
| }; |
| |
| button-vol-down { |
| label = "Key Volume Down"; |
| gpios = <&pio 4 2 GPIO_ACTIVE_LOW>; /* PE2 */ |
| linux,input-type = <EV_KEY>; |
| linux,code = <KEY_VOLUMEDOWN>; |
| }; |
| }; |
| |
| leds { |
| compatible = "gpio-leds"; |
| |
| led-0 { |
| function = LED_FUNCTION_POWER; |
| color = <LED_COLOR_ID_GREEN>; |
| gpios = <&pio 8 12 GPIO_ACTIVE_HIGH>; /* PI12 */ |
| default-state = "on"; |
| }; |
| }; |
| |
| reg_vcc5v: regulator-vcc5v { /* USB-C power input */ |
| compatible = "regulator-fixed"; |
| regulator-name = "vcc-5v"; |
| regulator-min-microvolt = <5000000>; |
| regulator-max-microvolt = <5000000>; |
| }; |
| }; |
| |
| &cpu0 { |
| cpu-supply = <®_dcdc1>; |
| }; |
| |
| &ehci0 { |
| status = "okay"; |
| }; |
| |
| &mmc0 { |
| vmmc-supply = <®_cldo3>; |
| disable-wp; |
| cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ |
| bus-width = <4>; |
| status = "okay"; |
| }; |
| |
| &ohci0 { |
| status = "okay"; |
| }; |
| |
| &pio { |
| vcc-pa-supply = <®_cldo3>; |
| vcc-pc-supply = <®_cldo3>; |
| vcc-pe-supply = <®_cldo3>; |
| vcc-pf-supply = <®_cldo3>; |
| vcc-pg-supply = <®_aldo4>; |
| vcc-ph-supply = <®_cldo3>; |
| vcc-pi-supply = <®_cldo3>; |
| }; |
| |
| &r_rsb { |
| status = "okay"; |
| |
| axp717: pmic@3a3 { |
| compatible = "x-powers,axp717"; |
| reg = <0x3a3>; |
| interrupt-controller; |
| #interrupt-cells = <1>; |
| interrupt-parent = <&nmi_intc>; |
| interrupts = <0 IRQ_TYPE_LEVEL_LOW>; |
| |
| vin1-supply = <®_vcc5v>; |
| vin2-supply = <®_vcc5v>; |
| vin3-supply = <®_vcc5v>; |
| vin4-supply = <®_vcc5v>; |
| |
| regulators { |
| reg_dcdc1: dcdc1 { |
| regulator-always-on; |
| regulator-min-microvolt = <900000>; |
| regulator-max-microvolt = <1160000>; |
| regulator-name = "vdd-cpu"; |
| }; |
| |
| reg_dcdc2: dcdc2 { |
| regulator-always-on; |
| regulator-min-microvolt = <940000>; |
| regulator-max-microvolt = <940000>; |
| regulator-name = "vdd-gpu-sys"; |
| }; |
| |
| reg_dcdc3: dcdc3 { |
| regulator-always-on; |
| regulator-min-microvolt = <1100000>; |
| regulator-max-microvolt = <1100000>; |
| regulator-name = "vdd-dram"; |
| }; |
| |
| reg_aldo1: aldo1 { |
| /* 1.8v - unused */ |
| }; |
| |
| reg_aldo2: aldo2 { |
| /* 1.8v - unused */ |
| }; |
| |
| reg_aldo3: aldo3 { |
| /* 1.8v - unused */ |
| }; |
| |
| reg_aldo4: aldo4 { |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-name = "vcc-pg"; |
| }; |
| |
| reg_bldo1: bldo1 { |
| /* 1.8v - unused */ |
| }; |
| |
| reg_bldo2: bldo2 { |
| regulator-always-on; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-name = "vcc-pll"; |
| }; |
| |
| reg_bldo3: bldo3 { |
| /* 2.8v - unused */ |
| }; |
| |
| reg_bldo4: bldo4 { |
| /* 1.2v - unused */ |
| }; |
| |
| reg_cldo1: cldo1 { |
| /* 3.3v - audio codec - not yet implemented */ |
| }; |
| |
| reg_cldo2: cldo2 { |
| /* 3.3v - unused */ |
| }; |
| |
| reg_cldo3: cldo3 { |
| regulator-always-on; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-name = "vcc-io"; |
| }; |
| |
| reg_cldo4: cldo4 { |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-name = "vcc-wifi"; |
| }; |
| |
| reg_boost: boost { |
| regulator-min-microvolt = <5000000>; |
| regulator-max-microvolt = <5200000>; |
| regulator-name = "boost"; |
| }; |
| |
| reg_cpusldo: cpusldo { |
| /* unused */ |
| }; |
| }; |
| }; |
| }; |
| |
| &uart0 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&uart0_ph_pins>; |
| status = "okay"; |
| }; |
| |
| /* the AXP717 has USB type-C role switch functionality, not yet described by the binding */ |
| &usbotg { |
| dr_mode = "peripheral"; /* USB type-C receptable */ |
| status = "okay"; |
| }; |
| |
| &usbphy { |
| status = "okay"; |
| }; |