191f480d4SOndrej Jirman// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 291f480d4SOndrej Jirman// Copyright (C) 2019 Icenowy Zheng <icenowy@aosc.xyz> 391f480d4SOndrej Jirman// Copyright (C) 2020 Martijn Braam <martijn@brixit.nl> 491f480d4SOndrej Jirman// Copyright (C) 2020 Ondrej Jirman <megous@megous.com> 591f480d4SOndrej Jirman 691f480d4SOndrej Jirman#include "sun50i-a64.dtsi" 791f480d4SOndrej Jirman#include "sun50i-a64-cpu-opp.dtsi" 891f480d4SOndrej Jirman 991f480d4SOndrej Jirman#include <dt-bindings/gpio/gpio.h> 1091f480d4SOndrej Jirman#include <dt-bindings/input/input.h> 1191f480d4SOndrej Jirman#include <dt-bindings/leds/common.h> 1291f480d4SOndrej Jirman#include <dt-bindings/pwm/pwm.h> 1391f480d4SOndrej Jirman 1491f480d4SOndrej Jirman/ { 1591f480d4SOndrej Jirman aliases { 1691f480d4SOndrej Jirman serial0 = &uart0; 1791f480d4SOndrej Jirman }; 1891f480d4SOndrej Jirman 1991f480d4SOndrej Jirman chosen { 2091f480d4SOndrej Jirman stdout-path = "serial0:115200n8"; 2191f480d4SOndrej Jirman }; 2291f480d4SOndrej Jirman 2391f480d4SOndrej Jirman leds { 2491f480d4SOndrej Jirman compatible = "gpio-leds"; 2591f480d4SOndrej Jirman 2691f480d4SOndrej Jirman blue { 2791f480d4SOndrej Jirman function = LED_FUNCTION_INDICATOR; 2891f480d4SOndrej Jirman color = <LED_COLOR_ID_BLUE>; 2991f480d4SOndrej Jirman gpios = <&pio 3 20 GPIO_ACTIVE_HIGH>; /* PD20 */ 3091f480d4SOndrej Jirman }; 3191f480d4SOndrej Jirman 3291f480d4SOndrej Jirman green { 3391f480d4SOndrej Jirman function = LED_FUNCTION_INDICATOR; 3491f480d4SOndrej Jirman color = <LED_COLOR_ID_GREEN>; 3591f480d4SOndrej Jirman gpios = <&pio 3 18 GPIO_ACTIVE_HIGH>; /* PD18 */ 3691f480d4SOndrej Jirman }; 3791f480d4SOndrej Jirman 3891f480d4SOndrej Jirman red { 3991f480d4SOndrej Jirman function = LED_FUNCTION_INDICATOR; 4091f480d4SOndrej Jirman color = <LED_COLOR_ID_RED>; 4191f480d4SOndrej Jirman gpios = <&pio 3 19 GPIO_ACTIVE_HIGH>; /* PD19 */ 4291f480d4SOndrej Jirman }; 4391f480d4SOndrej Jirman }; 4491f480d4SOndrej Jirman 4591f480d4SOndrej Jirman speaker_amp: audio-amplifier { 4691f480d4SOndrej Jirman compatible = "simple-audio-amplifier"; 4791f480d4SOndrej Jirman enable-gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */ 4891f480d4SOndrej Jirman sound-name-prefix = "Speaker Amp"; 4991f480d4SOndrej Jirman }; 5091f480d4SOndrej Jirman 5191f480d4SOndrej Jirman vibrator { 5291f480d4SOndrej Jirman compatible = "gpio-vibrator"; 5391f480d4SOndrej Jirman enable-gpios = <&pio 3 2 GPIO_ACTIVE_HIGH>; /* PD2 */ 5491f480d4SOndrej Jirman vcc-supply = <®_dcdc1>; 5591f480d4SOndrej Jirman }; 5691f480d4SOndrej Jirman}; 5791f480d4SOndrej Jirman 5891f480d4SOndrej Jirman&codec { 5991f480d4SOndrej Jirman status = "okay"; 6091f480d4SOndrej Jirman}; 6191f480d4SOndrej Jirman 6291f480d4SOndrej Jirman&codec_analog { 6391f480d4SOndrej Jirman cpvdd-supply = <®_eldo1>; 6491f480d4SOndrej Jirman status = "okay"; 6591f480d4SOndrej Jirman}; 6691f480d4SOndrej Jirman 6791f480d4SOndrej Jirman&cpu0 { 6891f480d4SOndrej Jirman cpu-supply = <®_dcdc2>; 6991f480d4SOndrej Jirman}; 7091f480d4SOndrej Jirman 7191f480d4SOndrej Jirman&cpu1 { 7291f480d4SOndrej Jirman cpu-supply = <®_dcdc2>; 7391f480d4SOndrej Jirman}; 7491f480d4SOndrej Jirman 7591f480d4SOndrej Jirman&cpu2 { 7691f480d4SOndrej Jirman cpu-supply = <®_dcdc2>; 7791f480d4SOndrej Jirman}; 7891f480d4SOndrej Jirman 7991f480d4SOndrej Jirman&cpu3 { 8091f480d4SOndrej Jirman cpu-supply = <®_dcdc2>; 8191f480d4SOndrej Jirman}; 8291f480d4SOndrej Jirman 8391f480d4SOndrej Jirman&dai { 8491f480d4SOndrej Jirman status = "okay"; 8591f480d4SOndrej Jirman}; 8691f480d4SOndrej Jirman 8791f480d4SOndrej Jirman&ehci0 { 8891f480d4SOndrej Jirman status = "okay"; 8991f480d4SOndrej Jirman}; 9091f480d4SOndrej Jirman 9191f480d4SOndrej Jirman&ehci1 { 9291f480d4SOndrej Jirman status = "okay"; 9391f480d4SOndrej Jirman}; 9491f480d4SOndrej Jirman 9591f480d4SOndrej Jirman&i2c1 { 9691f480d4SOndrej Jirman status = "okay"; 9791f480d4SOndrej Jirman 9891f480d4SOndrej Jirman /* Magnetometer */ 9991f480d4SOndrej Jirman lis3mdl@1e { 10091f480d4SOndrej Jirman compatible = "st,lis3mdl-magn"; 10191f480d4SOndrej Jirman reg = <0x1e>; 10291f480d4SOndrej Jirman vdd-supply = <®_dldo1>; 10391f480d4SOndrej Jirman vddio-supply = <®_dldo1>; 10491f480d4SOndrej Jirman }; 10591f480d4SOndrej Jirman 10691f480d4SOndrej Jirman /* Accelerometer/gyroscope */ 10791f480d4SOndrej Jirman mpu6050@68 { 10891f480d4SOndrej Jirman compatible = "invensense,mpu6050"; 10991f480d4SOndrej Jirman reg = <0x68>; 11091f480d4SOndrej Jirman interrupt-parent = <&pio>; 11191f480d4SOndrej Jirman interrupts = <7 5 IRQ_TYPE_EDGE_RISING>; /* PH5 */ 11291f480d4SOndrej Jirman vdd-supply = <®_dldo1>; 11391f480d4SOndrej Jirman vddio-supply = <®_dldo1>; 11491f480d4SOndrej Jirman }; 11591f480d4SOndrej Jirman}; 11691f480d4SOndrej Jirman 11791f480d4SOndrej Jirman/* Connected to pogo pins (external spring based pinheader for user addons) */ 11891f480d4SOndrej Jirman&i2c2 { 11991f480d4SOndrej Jirman status = "okay"; 12091f480d4SOndrej Jirman}; 12191f480d4SOndrej Jirman 12291f480d4SOndrej Jirman&lradc { 12391f480d4SOndrej Jirman vref-supply = <®_aldo3>; 12491f480d4SOndrej Jirman status = "okay"; 12591f480d4SOndrej Jirman 12691f480d4SOndrej Jirman button-200 { 12791f480d4SOndrej Jirman label = "Volume Up"; 12891f480d4SOndrej Jirman linux,code = <KEY_VOLUMEUP>; 12991f480d4SOndrej Jirman channel = <0>; 13091f480d4SOndrej Jirman voltage = <200000>; 13191f480d4SOndrej Jirman }; 13291f480d4SOndrej Jirman 13391f480d4SOndrej Jirman button-400 { 13491f480d4SOndrej Jirman label = "Volume Down"; 13591f480d4SOndrej Jirman linux,code = <KEY_VOLUMEDOWN>; 13691f480d4SOndrej Jirman channel = <0>; 13791f480d4SOndrej Jirman voltage = <400000>; 13891f480d4SOndrej Jirman }; 13991f480d4SOndrej Jirman}; 14091f480d4SOndrej Jirman 14191f480d4SOndrej Jirman&mmc0 { 14291f480d4SOndrej Jirman pinctrl-names = "default"; 14391f480d4SOndrej Jirman pinctrl-0 = <&mmc0_pins>; 14491f480d4SOndrej Jirman vmmc-supply = <®_dcdc1>; 14591f480d4SOndrej Jirman vqmmc-supply = <®_dcdc1>; 14691f480d4SOndrej Jirman cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ 14791f480d4SOndrej Jirman disable-wp; 14891f480d4SOndrej Jirman bus-width = <4>; 14991f480d4SOndrej Jirman status = "okay"; 15091f480d4SOndrej Jirman}; 15191f480d4SOndrej Jirman 15291f480d4SOndrej Jirman&mmc2 { 15391f480d4SOndrej Jirman pinctrl-names = "default"; 15491f480d4SOndrej Jirman pinctrl-0 = <&mmc2_pins>; 15591f480d4SOndrej Jirman vmmc-supply = <®_dcdc1>; 15691f480d4SOndrej Jirman vqmmc-supply = <®_dcdc1>; 15791f480d4SOndrej Jirman bus-width = <8>; 15891f480d4SOndrej Jirman non-removable; 15991f480d4SOndrej Jirman cap-mmc-hw-reset; 16091f480d4SOndrej Jirman status = "okay"; 16191f480d4SOndrej Jirman}; 16291f480d4SOndrej Jirman 16391f480d4SOndrej Jirman&ohci0 { 16491f480d4SOndrej Jirman status = "okay"; 16591f480d4SOndrej Jirman}; 16691f480d4SOndrej Jirman 16791f480d4SOndrej Jirman&ohci1 { 16891f480d4SOndrej Jirman status = "okay"; 16991f480d4SOndrej Jirman}; 17091f480d4SOndrej Jirman 17191f480d4SOndrej Jirman&pio { 17291f480d4SOndrej Jirman vcc-pb-supply = <®_dcdc1>; 17391f480d4SOndrej Jirman vcc-pc-supply = <®_dcdc1>; 17491f480d4SOndrej Jirman vcc-pd-supply = <®_dcdc1>; 17591f480d4SOndrej Jirman vcc-pe-supply = <®_aldo1>; 17691f480d4SOndrej Jirman vcc-pf-supply = <®_dcdc1>; 17791f480d4SOndrej Jirman vcc-pg-supply = <®_dldo4>; 17891f480d4SOndrej Jirman vcc-ph-supply = <®_dcdc1>; 17991f480d4SOndrej Jirman}; 18091f480d4SOndrej Jirman 18191f480d4SOndrej Jirman&r_pio { 18291f480d4SOndrej Jirman /* 18391f480d4SOndrej Jirman * FIXME: We can't add that supply for now since it would 18491f480d4SOndrej Jirman * create a circular dependency between pinctrl, the regulator 18591f480d4SOndrej Jirman * and the RSB Bus. 18691f480d4SOndrej Jirman * 18791f480d4SOndrej Jirman * vcc-pl-supply = <®_aldo2>; 18891f480d4SOndrej Jirman */ 18991f480d4SOndrej Jirman}; 19091f480d4SOndrej Jirman 19191f480d4SOndrej Jirman&r_rsb { 19291f480d4SOndrej Jirman status = "okay"; 19391f480d4SOndrej Jirman 19491f480d4SOndrej Jirman axp803: pmic@3a3 { 19591f480d4SOndrej Jirman compatible = "x-powers,axp803"; 19691f480d4SOndrej Jirman reg = <0x3a3>; 19791f480d4SOndrej Jirman interrupt-parent = <&r_intc>; 19891f480d4SOndrej Jirman interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 19991f480d4SOndrej Jirman }; 20091f480d4SOndrej Jirman}; 20191f480d4SOndrej Jirman 20291f480d4SOndrej Jirman#include "axp803.dtsi" 20391f480d4SOndrej Jirman 20491f480d4SOndrej Jirman&ac_power_supply { 20591f480d4SOndrej Jirman status = "okay"; 20691f480d4SOndrej Jirman}; 20791f480d4SOndrej Jirman 20891f480d4SOndrej Jirman&battery_power_supply { 20991f480d4SOndrej Jirman status = "okay"; 21091f480d4SOndrej Jirman}; 21191f480d4SOndrej Jirman 21291f480d4SOndrej Jirman®_aldo1 { 21391f480d4SOndrej Jirman regulator-min-microvolt = <1800000>; 21491f480d4SOndrej Jirman regulator-max-microvolt = <1800000>; 21591f480d4SOndrej Jirman regulator-name = "dovdd-csi"; 21691f480d4SOndrej Jirman}; 21791f480d4SOndrej Jirman 21891f480d4SOndrej Jirman®_aldo2 { 21991f480d4SOndrej Jirman regulator-always-on; 22091f480d4SOndrej Jirman regulator-min-microvolt = <1800000>; 22191f480d4SOndrej Jirman regulator-max-microvolt = <1800000>; 22291f480d4SOndrej Jirman regulator-name = "vcc-pl"; 22391f480d4SOndrej Jirman}; 22491f480d4SOndrej Jirman 22591f480d4SOndrej Jirman®_aldo3 { 22691f480d4SOndrej Jirman regulator-always-on; 22791f480d4SOndrej Jirman regulator-min-microvolt = <2700000>; 22891f480d4SOndrej Jirman regulator-max-microvolt = <3300000>; 22991f480d4SOndrej Jirman regulator-name = "vcc-pll-avcc"; 23091f480d4SOndrej Jirman}; 23191f480d4SOndrej Jirman 23291f480d4SOndrej Jirman®_dcdc1 { 23391f480d4SOndrej Jirman regulator-always-on; 23491f480d4SOndrej Jirman regulator-min-microvolt = <3300000>; 23591f480d4SOndrej Jirman regulator-max-microvolt = <3300000>; 23691f480d4SOndrej Jirman regulator-name = "vcc-3v3"; 23791f480d4SOndrej Jirman}; 23891f480d4SOndrej Jirman 23991f480d4SOndrej Jirman®_dcdc2 { 24091f480d4SOndrej Jirman regulator-always-on; 24191f480d4SOndrej Jirman regulator-min-microvolt = <1000000>; 24291f480d4SOndrej Jirman regulator-max-microvolt = <1300000>; 24391f480d4SOndrej Jirman regulator-name = "vdd-cpux"; 24491f480d4SOndrej Jirman}; 24591f480d4SOndrej Jirman 24691f480d4SOndrej Jirman/* DCDC3 is polyphased with DCDC2 */ 24791f480d4SOndrej Jirman 24891f480d4SOndrej Jirman®_dcdc5 { 24991f480d4SOndrej Jirman regulator-always-on; 25091f480d4SOndrej Jirman regulator-min-microvolt = <1200000>; 25191f480d4SOndrej Jirman regulator-max-microvolt = <1200000>; 25291f480d4SOndrej Jirman regulator-name = "vcc-dram"; 25391f480d4SOndrej Jirman}; 25491f480d4SOndrej Jirman 25591f480d4SOndrej Jirman®_dcdc6 { 25691f480d4SOndrej Jirman regulator-always-on; 25791f480d4SOndrej Jirman regulator-min-microvolt = <1100000>; 25891f480d4SOndrej Jirman regulator-max-microvolt = <1100000>; 25991f480d4SOndrej Jirman regulator-name = "vdd-sys"; 26091f480d4SOndrej Jirman}; 26191f480d4SOndrej Jirman 26291f480d4SOndrej Jirman®_dldo1 { 26391f480d4SOndrej Jirman regulator-min-microvolt = <3300000>; 26491f480d4SOndrej Jirman regulator-max-microvolt = <3300000>; 26591f480d4SOndrej Jirman regulator-name = "vcc-dsi-sensor"; 26691f480d4SOndrej Jirman}; 26791f480d4SOndrej Jirman 26891f480d4SOndrej Jirman®_dldo2 { 26991f480d4SOndrej Jirman regulator-min-microvolt = <1800000>; 27091f480d4SOndrej Jirman regulator-max-microvolt = <1800000>; 27191f480d4SOndrej Jirman regulator-name = "vcc-mipi-io"; 27291f480d4SOndrej Jirman}; 27391f480d4SOndrej Jirman 27491f480d4SOndrej Jirman®_dldo3 { 27591f480d4SOndrej Jirman regulator-min-microvolt = <2800000>; 27691f480d4SOndrej Jirman regulator-max-microvolt = <2800000>; 27791f480d4SOndrej Jirman regulator-name = "avdd-csi"; 27891f480d4SOndrej Jirman}; 27991f480d4SOndrej Jirman 28091f480d4SOndrej Jirman®_dldo4 { 28191f480d4SOndrej Jirman regulator-min-microvolt = <1800000>; 28291f480d4SOndrej Jirman regulator-max-microvolt = <3300000>; 28391f480d4SOndrej Jirman regulator-name = "vcc-wifi-io"; 28491f480d4SOndrej Jirman}; 28591f480d4SOndrej Jirman 28691f480d4SOndrej Jirman®_eldo1 { 28791f480d4SOndrej Jirman regulator-always-on; 28891f480d4SOndrej Jirman regulator-min-microvolt = <1800000>; 28991f480d4SOndrej Jirman regulator-max-microvolt = <1800000>; 29091f480d4SOndrej Jirman regulator-name = "vcc-lpddr"; 29191f480d4SOndrej Jirman}; 29291f480d4SOndrej Jirman 29391f480d4SOndrej Jirman®_eldo3 { 29491f480d4SOndrej Jirman regulator-min-microvolt = <1800000>; 29591f480d4SOndrej Jirman regulator-max-microvolt = <1800000>; 29691f480d4SOndrej Jirman regulator-name = "dvdd-1v8-csi"; 29791f480d4SOndrej Jirman}; 29891f480d4SOndrej Jirman 29991f480d4SOndrej Jirman®_fldo1 { 30091f480d4SOndrej Jirman regulator-min-microvolt = <1200000>; 30191f480d4SOndrej Jirman regulator-max-microvolt = <1200000>; 30291f480d4SOndrej Jirman regulator-name = "vcc-1v2-hsic"; 30391f480d4SOndrej Jirman}; 30491f480d4SOndrej Jirman 30591f480d4SOndrej Jirman®_fldo2 { 30691f480d4SOndrej Jirman regulator-always-on; 30791f480d4SOndrej Jirman regulator-min-microvolt = <1100000>; 30891f480d4SOndrej Jirman regulator-max-microvolt = <1100000>; 30991f480d4SOndrej Jirman regulator-name = "vdd-cpus"; 31091f480d4SOndrej Jirman}; 31191f480d4SOndrej Jirman 31291f480d4SOndrej Jirman®_ldo_io0 { 31391f480d4SOndrej Jirman regulator-min-microvolt = <3300000>; 31491f480d4SOndrej Jirman regulator-max-microvolt = <3300000>; 31591f480d4SOndrej Jirman regulator-name = "vcc-lcd-ctp-stk"; 31691f480d4SOndrej Jirman status = "okay"; 31791f480d4SOndrej Jirman}; 31891f480d4SOndrej Jirman 31991f480d4SOndrej Jirman®_ldo_io1 { 32091f480d4SOndrej Jirman regulator-min-microvolt = <1800000>; 32191f480d4SOndrej Jirman regulator-max-microvolt = <1800000>; 32291f480d4SOndrej Jirman regulator-name = "vcc-1v8-typec"; 32391f480d4SOndrej Jirman status = "okay"; 32491f480d4SOndrej Jirman}; 32591f480d4SOndrej Jirman 32691f480d4SOndrej Jirman®_rtc_ldo { 32791f480d4SOndrej Jirman regulator-name = "vcc-rtc"; 32891f480d4SOndrej Jirman}; 32991f480d4SOndrej Jirman 33091f480d4SOndrej Jirman&sound { 33191f480d4SOndrej Jirman status = "okay"; 33291f480d4SOndrej Jirman simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>; 33391f480d4SOndrej Jirman simple-audio-card,widgets = "Microphone", "Headset Microphone", 33491f480d4SOndrej Jirman "Microphone", "Internal Microphone", 33591f480d4SOndrej Jirman "Headphone", "Headphone Jack", 33691f480d4SOndrej Jirman "Speaker", "Internal Earpiece", 33791f480d4SOndrej Jirman "Speaker", "Internal Speaker"; 33891f480d4SOndrej Jirman simple-audio-card,routing = 33991f480d4SOndrej Jirman "Headphone Jack", "HP", 34091f480d4SOndrej Jirman "Internal Earpiece", "EARPIECE", 34191f480d4SOndrej Jirman "Internal Speaker", "Speaker Amp OUTL", 34291f480d4SOndrej Jirman "Internal Speaker", "Speaker Amp OUTR", 34391f480d4SOndrej Jirman "Speaker Amp INL", "LINEOUT", 34491f480d4SOndrej Jirman "Speaker Amp INR", "LINEOUT", 34591f480d4SOndrej Jirman "Left DAC", "AIF1 Slot 0 Left", 34691f480d4SOndrej Jirman "Right DAC", "AIF1 Slot 0 Right", 34791f480d4SOndrej Jirman "AIF1 Slot 0 Left ADC", "Left ADC", 34891f480d4SOndrej Jirman "AIF1 Slot 0 Right ADC", "Right ADC", 34991f480d4SOndrej Jirman "Internal Microphone", "MBIAS", 35091f480d4SOndrej Jirman "MIC1", "Internal Microphone", 35191f480d4SOndrej Jirman "Headset Microphone", "HBIAS", 35291f480d4SOndrej Jirman "MIC2", "Headset Microphone"; 35391f480d4SOndrej Jirman}; 35491f480d4SOndrej Jirman 35591f480d4SOndrej Jirman&uart0 { 35691f480d4SOndrej Jirman pinctrl-names = "default"; 35791f480d4SOndrej Jirman pinctrl-0 = <&uart0_pb_pins>; 35891f480d4SOndrej Jirman status = "okay"; 35991f480d4SOndrej Jirman}; 36091f480d4SOndrej Jirman 36191f480d4SOndrej Jirman/* Connected to the modem (hardware flow control can't be used) */ 36291f480d4SOndrej Jirman&uart3 { 36391f480d4SOndrej Jirman pinctrl-names = "default"; 36491f480d4SOndrej Jirman pinctrl-0 = <&uart3_pins>; 36591f480d4SOndrej Jirman status = "okay"; 36691f480d4SOndrej Jirman}; 36791f480d4SOndrej Jirman 36891f480d4SOndrej Jirman&usb_otg { 36991f480d4SOndrej Jirman dr_mode = "peripheral"; 37091f480d4SOndrej Jirman status = "okay"; 37191f480d4SOndrej Jirman}; 37291f480d4SOndrej Jirman 37391f480d4SOndrej Jirman&usb_power_supply { 37491f480d4SOndrej Jirman status = "okay"; 37591f480d4SOndrej Jirman}; 37691f480d4SOndrej Jirman 37791f480d4SOndrej Jirman&usbphy { 37891f480d4SOndrej Jirman status = "okay"; 37991f480d4SOndrej Jirman}; 380