1*3888715cSIcenowy Zheng// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2*3888715cSIcenowy Zheng/* 3*3888715cSIcenowy Zheng * Copyright (C) 2024 Icenowy Zheng <uwu@icenowy.me> 4*3888715cSIcenowy Zheng */ 5*3888715cSIcenowy Zheng 6*3888715cSIcenowy Zheng/dts-v1/; 7*3888715cSIcenowy Zheng#include "sun8i-a33-vstar-core1.dtsi" 8*3888715cSIcenowy Zheng 9*3888715cSIcenowy Zheng#include <dt-bindings/gpio/gpio.h> 10*3888715cSIcenowy Zheng#include <dt-bindings/input/input.h> 11*3888715cSIcenowy Zheng 12*3888715cSIcenowy Zheng/ { 13*3888715cSIcenowy Zheng model = "Rervision A33-Vstar"; 14*3888715cSIcenowy Zheng compatible = "rervision,a33-vstar", 15*3888715cSIcenowy Zheng "rervision,a33-core1", 16*3888715cSIcenowy Zheng "allwinner,sun8i-a33"; 17*3888715cSIcenowy Zheng 18*3888715cSIcenowy Zheng aliases { 19*3888715cSIcenowy Zheng serial0 = &uart0; 20*3888715cSIcenowy Zheng ethernet0 = &r8152; 21*3888715cSIcenowy Zheng }; 22*3888715cSIcenowy Zheng 23*3888715cSIcenowy Zheng chosen { 24*3888715cSIcenowy Zheng stdout-path = "serial0:115200n8"; 25*3888715cSIcenowy Zheng }; 26*3888715cSIcenowy Zheng 27*3888715cSIcenowy Zheng reg_usb1_vbus: regulator-usb1-vbus { 28*3888715cSIcenowy Zheng compatible = "regulator-fixed"; 29*3888715cSIcenowy Zheng regulator-name = "usb1-vbus"; 30*3888715cSIcenowy Zheng regulator-min-microvolt = <5000000>; 31*3888715cSIcenowy Zheng regulator-max-microvolt = <5000000>; 32*3888715cSIcenowy Zheng regulator-boot-on; 33*3888715cSIcenowy Zheng enable-active-high; 34*3888715cSIcenowy Zheng gpio = <&pio 1 2 GPIO_ACTIVE_HIGH>; /* PB2 */ 35*3888715cSIcenowy Zheng }; 36*3888715cSIcenowy Zheng 37*3888715cSIcenowy Zheng wifi_pwrseq: pwrseq { 38*3888715cSIcenowy Zheng compatible = "mmc-pwrseq-simple"; 39*3888715cSIcenowy Zheng reset-gpios = <&r_pio 0 6 GPIO_ACTIVE_LOW>; /* PL6 */ 40*3888715cSIcenowy Zheng clocks = <&rtc CLK_OSC32K_FANOUT>; 41*3888715cSIcenowy Zheng clock-names = "ext_clock"; 42*3888715cSIcenowy Zheng }; 43*3888715cSIcenowy Zheng}; 44*3888715cSIcenowy Zheng 45*3888715cSIcenowy Zheng&ac_power_supply { 46*3888715cSIcenowy Zheng status = "okay"; 47*3888715cSIcenowy Zheng}; 48*3888715cSIcenowy Zheng 49*3888715cSIcenowy Zheng&codec { 50*3888715cSIcenowy Zheng status = "okay"; 51*3888715cSIcenowy Zheng}; 52*3888715cSIcenowy Zheng 53*3888715cSIcenowy Zheng&dai { 54*3888715cSIcenowy Zheng status = "okay"; 55*3888715cSIcenowy Zheng}; 56*3888715cSIcenowy Zheng 57*3888715cSIcenowy Zheng&ehci0 { 58*3888715cSIcenowy Zheng #address-cells = <1>; 59*3888715cSIcenowy Zheng #size-cells = <0>; 60*3888715cSIcenowy Zheng status = "okay"; 61*3888715cSIcenowy Zheng 62*3888715cSIcenowy Zheng hub@1 { 63*3888715cSIcenowy Zheng /* Onboard GL850G hub which needs no extra power sequence */ 64*3888715cSIcenowy Zheng compatible = "usb5e3,608"; 65*3888715cSIcenowy Zheng reg = <1>; 66*3888715cSIcenowy Zheng #address-cells = <1>; 67*3888715cSIcenowy Zheng #size-cells = <0>; 68*3888715cSIcenowy Zheng 69*3888715cSIcenowy Zheng r8152: ethernet@4 { 70*3888715cSIcenowy Zheng /* 71*3888715cSIcenowy Zheng * Onboard Realtek RTL8152 USB Ethernet, 72*3888715cSIcenowy Zheng * with no MAC address programmed 73*3888715cSIcenowy Zheng */ 74*3888715cSIcenowy Zheng compatible = "usbbda,8152"; 75*3888715cSIcenowy Zheng reg = <4>; 76*3888715cSIcenowy Zheng }; 77*3888715cSIcenowy Zheng }; 78*3888715cSIcenowy Zheng}; 79*3888715cSIcenowy Zheng 80*3888715cSIcenowy Zheng&lradc { 81*3888715cSIcenowy Zheng vref-supply = <®_aldo3>; 82*3888715cSIcenowy Zheng status = "okay"; 83*3888715cSIcenowy Zheng 84*3888715cSIcenowy Zheng button-191 { 85*3888715cSIcenowy Zheng label = "V+"; 86*3888715cSIcenowy Zheng linux,code = <KEY_VOLUMEUP>; 87*3888715cSIcenowy Zheng channel = <0>; 88*3888715cSIcenowy Zheng voltage = <191011>; 89*3888715cSIcenowy Zheng }; 90*3888715cSIcenowy Zheng 91*3888715cSIcenowy Zheng button-391 { 92*3888715cSIcenowy Zheng label = "V-"; 93*3888715cSIcenowy Zheng linux,code = <KEY_VOLUMEDOWN>; 94*3888715cSIcenowy Zheng channel = <0>; 95*3888715cSIcenowy Zheng voltage = <391304>; 96*3888715cSIcenowy Zheng }; 97*3888715cSIcenowy Zheng 98*3888715cSIcenowy Zheng button-600 { 99*3888715cSIcenowy Zheng label = "BACK"; 100*3888715cSIcenowy Zheng linux,code = <KEY_BACK>; 101*3888715cSIcenowy Zheng channel = <0>; 102*3888715cSIcenowy Zheng voltage = <600000>; 103*3888715cSIcenowy Zheng }; 104*3888715cSIcenowy Zheng}; 105*3888715cSIcenowy Zheng 106*3888715cSIcenowy Zheng&mmc0 { 107*3888715cSIcenowy Zheng vmmc-supply = <®_dcdc1>; 108*3888715cSIcenowy Zheng bus-width = <4>; 109*3888715cSIcenowy Zheng cd-gpios = <&pio 1 4 GPIO_ACTIVE_LOW>; /* PB4 */ 110*3888715cSIcenowy Zheng status = "okay"; 111*3888715cSIcenowy Zheng}; 112*3888715cSIcenowy Zheng 113*3888715cSIcenowy Zheng&mmc1 { 114*3888715cSIcenowy Zheng pinctrl-names = "default"; 115*3888715cSIcenowy Zheng pinctrl-0 = <&mmc1_pg_pins>; 116*3888715cSIcenowy Zheng vmmc-supply = <®_dldo1>; 117*3888715cSIcenowy Zheng mmc-pwrseq = <&wifi_pwrseq>; 118*3888715cSIcenowy Zheng bus-width = <4>; 119*3888715cSIcenowy Zheng non-removable; 120*3888715cSIcenowy Zheng status = "okay"; 121*3888715cSIcenowy Zheng 122*3888715cSIcenowy Zheng brcmf: wifi@1 { 123*3888715cSIcenowy Zheng reg = <1>; 124*3888715cSIcenowy Zheng compatible = "brcm,bcm4329-fmac"; 125*3888715cSIcenowy Zheng interrupt-parent = <&r_pio>; 126*3888715cSIcenowy Zheng interrupts = <0 7 IRQ_TYPE_LEVEL_LOW>; /* PL7 */ 127*3888715cSIcenowy Zheng interrupt-names = "host-wake"; 128*3888715cSIcenowy Zheng }; 129*3888715cSIcenowy Zheng}; 130*3888715cSIcenowy Zheng 131*3888715cSIcenowy Zheng/* 132*3888715cSIcenowy Zheng * Our WiFi chip needs both DLDO1 and DLDO2 to be powered at the same 133*3888715cSIcenowy Zheng * time, with the two being in sync. Since this is not really 134*3888715cSIcenowy Zheng * supported right now, just use the two as always on, and we will fix 135*3888715cSIcenowy Zheng * it later. 136*3888715cSIcenowy Zheng */ 137*3888715cSIcenowy Zheng®_dldo1 { 138*3888715cSIcenowy Zheng regulator-always-on; 139*3888715cSIcenowy Zheng regulator-min-microvolt = <3300000>; 140*3888715cSIcenowy Zheng regulator-max-microvolt = <3300000>; 141*3888715cSIcenowy Zheng regulator-name = "vcc-wifi0"; 142*3888715cSIcenowy Zheng}; 143*3888715cSIcenowy Zheng 144*3888715cSIcenowy Zheng®_dldo2 { 145*3888715cSIcenowy Zheng regulator-always-on; 146*3888715cSIcenowy Zheng regulator-min-microvolt = <3300000>; 147*3888715cSIcenowy Zheng regulator-max-microvolt = <3300000>; 148*3888715cSIcenowy Zheng regulator-name = "vcc-wifi1"; 149*3888715cSIcenowy Zheng}; 150*3888715cSIcenowy Zheng 151*3888715cSIcenowy Zheng®_drivevbus { 152*3888715cSIcenowy Zheng regulator-name = "usb0-vbus"; 153*3888715cSIcenowy Zheng status = "okay"; 154*3888715cSIcenowy Zheng}; 155*3888715cSIcenowy Zheng 156*3888715cSIcenowy Zheng&sound { 157*3888715cSIcenowy Zheng /* TODO: on-board microphone */ 158*3888715cSIcenowy Zheng 159*3888715cSIcenowy Zheng simple-audio-card,widgets = "Headphone", "Headphone Jack"; 160*3888715cSIcenowy Zheng simple-audio-card,routing = 161*3888715cSIcenowy Zheng "Left DAC", "DACL", 162*3888715cSIcenowy Zheng "Right DAC", "DACR", 163*3888715cSIcenowy Zheng "Headphone Jack", "HP"; 164*3888715cSIcenowy Zheng status = "okay"; 165*3888715cSIcenowy Zheng}; 166*3888715cSIcenowy Zheng 167*3888715cSIcenowy Zheng&uart0 { 168*3888715cSIcenowy Zheng pinctrl-names = "default"; 169*3888715cSIcenowy Zheng pinctrl-0 = <&uart0_pb_pins>; 170*3888715cSIcenowy Zheng status = "okay"; 171*3888715cSIcenowy Zheng}; 172*3888715cSIcenowy Zheng 173*3888715cSIcenowy Zheng&uart1 { 174*3888715cSIcenowy Zheng pinctrl-names = "default"; 175*3888715cSIcenowy Zheng pinctrl-0 = <&uart1_pg_pins>, <&uart1_cts_rts_pg_pins>; 176*3888715cSIcenowy Zheng uart-has-rtscts; 177*3888715cSIcenowy Zheng status = "okay"; 178*3888715cSIcenowy Zheng 179*3888715cSIcenowy Zheng bluetooth { 180*3888715cSIcenowy Zheng compatible = "brcm,bcm43438-bt"; 181*3888715cSIcenowy Zheng clocks = <&rtc CLK_OSC32K_FANOUT>; 182*3888715cSIcenowy Zheng clock-names = "lpo"; 183*3888715cSIcenowy Zheng vbat-supply = <®_dldo1>; 184*3888715cSIcenowy Zheng device-wakeup-gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */ 185*3888715cSIcenowy Zheng host-wakeup-gpios = <&r_pio 0 9 GPIO_ACTIVE_HIGH>; /* PL9 */ 186*3888715cSIcenowy Zheng shutdown-gpios = <&r_pio 0 8 GPIO_ACTIVE_HIGH>; /* PL8 */ 187*3888715cSIcenowy Zheng }; 188*3888715cSIcenowy Zheng}; 189*3888715cSIcenowy Zheng 190*3888715cSIcenowy Zheng&usb_otg { 191*3888715cSIcenowy Zheng dr_mode = "otg"; 192*3888715cSIcenowy Zheng status = "okay"; 193*3888715cSIcenowy Zheng}; 194*3888715cSIcenowy Zheng 195*3888715cSIcenowy Zheng&usb_power_supply { 196*3888715cSIcenowy Zheng status = "okay"; 197*3888715cSIcenowy Zheng}; 198*3888715cSIcenowy Zheng 199*3888715cSIcenowy Zheng&usbphy { 200*3888715cSIcenowy Zheng usb0_id_det-gpios = <&pio 7 8 GPIO_ACTIVE_HIGH>; /* PH8 */ 201*3888715cSIcenowy Zheng usb0_vbus_power-supply = <&usb_power_supply>; 202*3888715cSIcenowy Zheng usb0_vbus-supply = <®_drivevbus>; 203*3888715cSIcenowy Zheng usb1_vbus-supply = <®_usb1_vbus>; 204*3888715cSIcenowy Zheng status = "okay"; 205*3888715cSIcenowy Zheng}; 206