1cabbaed7SClément Péron// SPDX-License-Identifier: (GPL-2.0 OR MIT) 2cabbaed7SClément Péron// Copyright (C) Harald Geyer <harald@ccbib.org> 3cabbaed7SClément Péron// based on sun50i-a64-olinuxino.dts by Jagan Teki <jteki@openedev.com> 4c916eb95SHarald Geyer 5c916eb95SHarald Geyer/dts-v1/; 6c916eb95SHarald Geyer 7c916eb95SHarald Geyer#include "sun50i-a64.dtsi" 8ac904843SVasily Khoruzhick#include "sun50i-a64-cpu-opp.dtsi" 9c916eb95SHarald Geyer 10c916eb95SHarald Geyer#include <dt-bindings/gpio/gpio.h> 11c916eb95SHarald Geyer#include <dt-bindings/input/input.h> 12c916eb95SHarald Geyer#include <dt-bindings/pwm/pwm.h> 13c916eb95SHarald Geyer 14c916eb95SHarald Geyer/ { 15c916eb95SHarald Geyer model = "Olimex A64 Teres-I"; 16c916eb95SHarald Geyer compatible = "olimex,a64-teres-i", "allwinner,sun50i-a64"; 17c916eb95SHarald Geyer 18c916eb95SHarald Geyer aliases { 19c916eb95SHarald Geyer serial0 = &uart0; 20c916eb95SHarald Geyer }; 21c916eb95SHarald Geyer 2224bd5d2cSHarald Geyer backlight: backlight { 2324bd5d2cSHarald Geyer compatible = "pwm-backlight"; 2424bd5d2cSHarald Geyer pwms = <&pwm 0 50000 0>; 2524bd5d2cSHarald Geyer power-supply = <®_dcdc1>; 2624bd5d2cSHarald Geyer brightness-levels = <0 5 7 10 14 20 28 40 56 80 112>; 2724bd5d2cSHarald Geyer default-brightness-level = <5>; 2824bd5d2cSHarald Geyer enable-gpios = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD23 */ 2924bd5d2cSHarald Geyer }; 3024bd5d2cSHarald Geyer 31c916eb95SHarald Geyer chosen { 32c916eb95SHarald Geyer stdout-path = "serial0:115200n8"; 33c916eb95SHarald Geyer 34c916eb95SHarald Geyer framebuffer-lcd { 35c916eb95SHarald Geyer eDP25-supply = <®_dldo2>; 36c916eb95SHarald Geyer eDP12-supply = <®_dldo3>; 37c916eb95SHarald Geyer }; 38c916eb95SHarald Geyer }; 39c916eb95SHarald Geyer 40c916eb95SHarald Geyer gpio-keys { 41c916eb95SHarald Geyer compatible = "gpio-keys"; 42c916eb95SHarald Geyer 43c916eb95SHarald Geyer lid-switch { 44c916eb95SHarald Geyer label = "Lid Switch"; 45c916eb95SHarald Geyer gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */ 46c916eb95SHarald Geyer linux,input-type = <EV_SW>; 47c916eb95SHarald Geyer linux,code = <SW_LID>; 4848f3e7bfSIcenowy Zheng wakeup-source; 49c916eb95SHarald Geyer }; 50c916eb95SHarald Geyer }; 51c916eb95SHarald Geyer 52c916eb95SHarald Geyer leds { 53c916eb95SHarald Geyer compatible = "gpio-leds"; 54c916eb95SHarald Geyer 55*e299e6ddSMaxime Ripard led-0 { 56c916eb95SHarald Geyer label = "teres-i:green:capslock"; 57c916eb95SHarald Geyer gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */ 58c916eb95SHarald Geyer }; 59c916eb95SHarald Geyer 60*e299e6ddSMaxime Ripard led-1 { 61c916eb95SHarald Geyer label = "teres-i:green:numlock"; 62c916eb95SHarald Geyer gpios = <&pio 2 4 GPIO_ACTIVE_HIGH>; /* PC4 */ 63c916eb95SHarald Geyer }; 64c916eb95SHarald Geyer }; 65c916eb95SHarald Geyer 66c916eb95SHarald Geyer reg_usb1_vbus: usb1-vbus { 67c916eb95SHarald Geyer compatible = "regulator-fixed"; 68c916eb95SHarald Geyer regulator-name = "usb1-vbus"; 69c916eb95SHarald Geyer regulator-min-microvolt = <5000000>; 70c916eb95SHarald Geyer regulator-max-microvolt = <5000000>; 71c916eb95SHarald Geyer enable-active-high; 72c916eb95SHarald Geyer gpio = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */ 73c916eb95SHarald Geyer status = "okay"; 74c916eb95SHarald Geyer }; 75c916eb95SHarald Geyer 76c916eb95SHarald Geyer wifi_pwrseq: wifi_pwrseq { 77c916eb95SHarald Geyer compatible = "mmc-pwrseq-simple"; 78c916eb95SHarald Geyer reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ 79c916eb95SHarald Geyer }; 80439152aeSHarald Geyer 81439152aeSHarald Geyer speaker_amp: audio-amplifier { 82439152aeSHarald Geyer compatible = "simple-audio-amplifier"; 83439152aeSHarald Geyer enable-gpios = <&r_pio 0 12 GPIO_ACTIVE_HIGH>; /* PL12 */ 84439152aeSHarald Geyer sound-name-prefix = "Speaker Amp"; 85439152aeSHarald Geyer }; 86439152aeSHarald Geyer}; 87439152aeSHarald Geyer 88439152aeSHarald Geyer&codec { 89439152aeSHarald Geyer status = "okay"; 90439152aeSHarald Geyer}; 91439152aeSHarald Geyer 92439152aeSHarald Geyer&codec_analog { 93439152aeSHarald Geyer cpvdd-supply = <®_eldo1>; 94439152aeSHarald Geyer status = "okay"; 95439152aeSHarald Geyer}; 96439152aeSHarald Geyer 97439152aeSHarald Geyer&dai { 98439152aeSHarald Geyer status = "okay"; 99c916eb95SHarald Geyer}; 100c916eb95SHarald Geyer 10179bc02f1STorsten Duwe&de { 10279bc02f1STorsten Duwe status = "okay"; 10379bc02f1STorsten Duwe}; 10479bc02f1STorsten Duwe 105ac904843SVasily Khoruzhick&cpu0 { 106ac904843SVasily Khoruzhick cpu-supply = <®_dcdc2>; 107ac904843SVasily Khoruzhick}; 108ac904843SVasily Khoruzhick 109ac904843SVasily Khoruzhick&cpu1 { 110ac904843SVasily Khoruzhick cpu-supply = <®_dcdc2>; 111ac904843SVasily Khoruzhick}; 112ac904843SVasily Khoruzhick 113ac904843SVasily Khoruzhick&cpu2 { 114ac904843SVasily Khoruzhick cpu-supply = <®_dcdc2>; 115ac904843SVasily Khoruzhick}; 116ac904843SVasily Khoruzhick 117ac904843SVasily Khoruzhick&cpu3 { 118ac904843SVasily Khoruzhick cpu-supply = <®_dcdc2>; 119ac904843SVasily Khoruzhick}; 120ac904843SVasily Khoruzhick 121c916eb95SHarald Geyer&ehci1 { 122c916eb95SHarald Geyer status = "okay"; 123c916eb95SHarald Geyer}; 124c916eb95SHarald Geyer 125c916eb95SHarald Geyer 126c916eb95SHarald Geyer&i2c0 { 127c916eb95SHarald Geyer clock-frequency = <100000>; 128c916eb95SHarald Geyer status = "okay"; 12979bc02f1STorsten Duwe 13079bc02f1STorsten Duwe anx6345: anx6345@38 { 13179bc02f1STorsten Duwe compatible = "analogix,anx6345"; 13279bc02f1STorsten Duwe reg = <0x38>; 13379bc02f1STorsten Duwe reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */ 13479bc02f1STorsten Duwe dvdd25-supply = <®_dldo2>; 13579bc02f1STorsten Duwe dvdd12-supply = <®_dldo3>; 13679bc02f1STorsten Duwe 13779bc02f1STorsten Duwe ports { 13879bc02f1STorsten Duwe #address-cells = <1>; 13979bc02f1STorsten Duwe #size-cells = <0>; 14079bc02f1STorsten Duwe 14179bc02f1STorsten Duwe port@0 { 14279bc02f1STorsten Duwe anx6345_in: endpoint { 14379bc02f1STorsten Duwe remote-endpoint = <&tcon0_out_anx6345>; 14479bc02f1STorsten Duwe }; 14579bc02f1STorsten Duwe }; 14679bc02f1STorsten Duwe }; 14779bc02f1STorsten Duwe }; 14879bc02f1STorsten Duwe}; 14979bc02f1STorsten Duwe 15079bc02f1STorsten Duwe&mixer0 { 15179bc02f1STorsten Duwe status = "okay"; 152c916eb95SHarald Geyer}; 153c916eb95SHarald Geyer 154c916eb95SHarald Geyer&mmc0 { 155c916eb95SHarald Geyer pinctrl-names = "default"; 156c916eb95SHarald Geyer pinctrl-0 = <&mmc0_pins>; 157c916eb95SHarald Geyer vmmc-supply = <®_dcdc1>; 158c916eb95SHarald Geyer cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; 159c916eb95SHarald Geyer disable-wp; 160c916eb95SHarald Geyer bus-width = <4>; 161c916eb95SHarald Geyer status = "okay"; 162c916eb95SHarald Geyer}; 163c916eb95SHarald Geyer 164c916eb95SHarald Geyer&mmc1 { 165c916eb95SHarald Geyer pinctrl-names = "default"; 166c916eb95SHarald Geyer pinctrl-0 = <&mmc1_pins>; 167c916eb95SHarald Geyer vmmc-supply = <®_aldo2>; 168c916eb95SHarald Geyer vqmmc-supply = <®_dldo4>; 169c916eb95SHarald Geyer mmc-pwrseq = <&wifi_pwrseq>; 170c916eb95SHarald Geyer bus-width = <4>; 171c916eb95SHarald Geyer non-removable; 172c916eb95SHarald Geyer status = "okay"; 173c916eb95SHarald Geyer 174c916eb95SHarald Geyer rtl8723bs: wifi@1 { 175c916eb95SHarald Geyer reg = <1>; 176c916eb95SHarald Geyer interrupt-parent = <&r_pio>; 177c916eb95SHarald Geyer interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */ 178c916eb95SHarald Geyer interrupt-names = "host-wake"; 179c916eb95SHarald Geyer }; 180c916eb95SHarald Geyer}; 181c916eb95SHarald Geyer 182c916eb95SHarald Geyer&mmc2 { 183c916eb95SHarald Geyer pinctrl-names = "default"; 184c916eb95SHarald Geyer pinctrl-0 = <&mmc2_pins>; 185c916eb95SHarald Geyer vmmc-supply = <®_dcdc1>; 186c916eb95SHarald Geyer vqmmc-supply = <®_dcdc1>; 187c916eb95SHarald Geyer bus-width = <8>; 188c916eb95SHarald Geyer non-removable; 189c916eb95SHarald Geyer cap-mmc-hw-reset; 190c916eb95SHarald Geyer status = "okay"; 191c916eb95SHarald Geyer}; 192c916eb95SHarald Geyer 193c916eb95SHarald Geyer&ohci1 { 194c916eb95SHarald Geyer status = "okay"; 195c916eb95SHarald Geyer}; 196c916eb95SHarald Geyer 19724bd5d2cSHarald Geyer&pwm { 19824bd5d2cSHarald Geyer status = "okay"; 19924bd5d2cSHarald Geyer}; 20024bd5d2cSHarald Geyer 201c916eb95SHarald Geyer&r_rsb { 202c916eb95SHarald Geyer status = "okay"; 203c916eb95SHarald Geyer 204c916eb95SHarald Geyer axp803: pmic@3a3 { 205c916eb95SHarald Geyer compatible = "x-powers,axp803"; 206c916eb95SHarald Geyer reg = <0x3a3>; 207c916eb95SHarald Geyer interrupt-parent = <&r_intc>; 208c916eb95SHarald Geyer interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 209c916eb95SHarald Geyer wakeup-source; 210c916eb95SHarald Geyer }; 211c916eb95SHarald Geyer}; 212c916eb95SHarald Geyer 213c916eb95SHarald Geyer#include "axp803.dtsi" 214c916eb95SHarald Geyer 21525f6f54fSHarald Geyer&ac_power_supply { 21625f6f54fSHarald Geyer status = "okay"; 21725f6f54fSHarald Geyer}; 21825f6f54fSHarald Geyer 21925f6f54fSHarald Geyer&battery_power_supply { 22025f6f54fSHarald Geyer status = "okay"; 22125f6f54fSHarald Geyer}; 22225f6f54fSHarald Geyer 223c916eb95SHarald Geyer®_aldo1 { 224c916eb95SHarald Geyer regulator-always-on; 225c916eb95SHarald Geyer regulator-min-microvolt = <2800000>; 226c916eb95SHarald Geyer regulator-max-microvolt = <2800000>; 227c916eb95SHarald Geyer regulator-name = "vcc-pe"; 228c916eb95SHarald Geyer}; 229c916eb95SHarald Geyer 230c916eb95SHarald Geyer®_aldo2 { 231c916eb95SHarald Geyer regulator-always-on; 232c916eb95SHarald Geyer regulator-min-microvolt = <3300000>; 233c916eb95SHarald Geyer regulator-max-microvolt = <3300000>; 234c916eb95SHarald Geyer regulator-name = "vcc-pl"; 235c916eb95SHarald Geyer}; 236c916eb95SHarald Geyer 237c916eb95SHarald Geyer®_aldo3 { 238c916eb95SHarald Geyer regulator-always-on; 239c916eb95SHarald Geyer regulator-min-microvolt = <3000000>; 240c916eb95SHarald Geyer regulator-max-microvolt = <3000000>; 241c916eb95SHarald Geyer regulator-name = "vcc-pll-avcc"; 242c916eb95SHarald Geyer}; 243c916eb95SHarald Geyer 244c916eb95SHarald Geyer®_dcdc1 { 245c916eb95SHarald Geyer regulator-always-on; 246c916eb95SHarald Geyer regulator-min-microvolt = <3300000>; 247c916eb95SHarald Geyer regulator-max-microvolt = <3300000>; 248c916eb95SHarald Geyer regulator-name = "vcc-3v3"; 249c916eb95SHarald Geyer}; 250c916eb95SHarald Geyer 251c916eb95SHarald Geyer®_dcdc2 { 252c916eb95SHarald Geyer regulator-always-on; 253c916eb95SHarald Geyer regulator-min-microvolt = <1040000>; 254c916eb95SHarald Geyer regulator-max-microvolt = <1300000>; 255c916eb95SHarald Geyer regulator-name = "vdd-cpux"; 256c916eb95SHarald Geyer}; 257c916eb95SHarald Geyer 258c916eb95SHarald Geyer/* DCDC3 is polyphased with DCDC2 */ 259c916eb95SHarald Geyer 260c916eb95SHarald Geyer®_dcdc5 { 261c916eb95SHarald Geyer regulator-always-on; 262c916eb95SHarald Geyer regulator-min-microvolt = <1500000>; 263c916eb95SHarald Geyer regulator-max-microvolt = <1500000>; 264c916eb95SHarald Geyer regulator-name = "vcc-ddr3"; 265c916eb95SHarald Geyer}; 266c916eb95SHarald Geyer 267c916eb95SHarald Geyer®_dcdc6 { 268c916eb95SHarald Geyer regulator-always-on; 269c916eb95SHarald Geyer regulator-min-microvolt = <1100000>; 270c916eb95SHarald Geyer regulator-max-microvolt = <1100000>; 271c916eb95SHarald Geyer regulator-name = "vdd-sys"; 272c916eb95SHarald Geyer}; 273c916eb95SHarald Geyer 274c916eb95SHarald Geyer®_dldo1 { 275c916eb95SHarald Geyer regulator-min-microvolt = <3300000>; 276c916eb95SHarald Geyer regulator-max-microvolt = <3300000>; 277c916eb95SHarald Geyer regulator-name = "vcc-hdmi"; 278c916eb95SHarald Geyer}; 279c916eb95SHarald Geyer 280c916eb95SHarald Geyer®_dldo2 { 281c916eb95SHarald Geyer regulator-min-microvolt = <2500000>; 282c916eb95SHarald Geyer regulator-max-microvolt = <2500000>; 283c916eb95SHarald Geyer regulator-name = "vcc-pd"; 284c916eb95SHarald Geyer}; 285c916eb95SHarald Geyer 286c916eb95SHarald Geyer®_dldo3 { 287c916eb95SHarald Geyer regulator-min-microvolt = <1200000>; 288c916eb95SHarald Geyer regulator-max-microvolt = <1200000>; 289e4357c82SIcenowy Zheng regulator-name = "vdd-edp"; 290c916eb95SHarald Geyer}; 291c916eb95SHarald Geyer 292c916eb95SHarald Geyer®_dldo4 { 293c916eb95SHarald Geyer regulator-min-microvolt = <3300000>; 294c916eb95SHarald Geyer regulator-max-microvolt = <3300000>; 295c916eb95SHarald Geyer regulator-name = "vcc-wifi-io"; 296c916eb95SHarald Geyer}; 297c916eb95SHarald Geyer 298c916eb95SHarald Geyer®_eldo1 { 299c916eb95SHarald Geyer regulator-min-microvolt = <1800000>; 300c916eb95SHarald Geyer regulator-max-microvolt = <1800000>; 301c916eb95SHarald Geyer regulator-name = "cpvdd"; 302c916eb95SHarald Geyer}; 303c916eb95SHarald Geyer 304c916eb95SHarald Geyer®_eldo2 { 305c916eb95SHarald Geyer regulator-min-microvolt = <1800000>; 306c916eb95SHarald Geyer regulator-max-microvolt = <1800000>; 307c916eb95SHarald Geyer regulator-name = "vcc-dvdd-csi"; 308c916eb95SHarald Geyer}; 309c916eb95SHarald Geyer 310c916eb95SHarald Geyer®_fldo1 { 311c916eb95SHarald Geyer regulator-min-microvolt = <1200000>; 312c916eb95SHarald Geyer regulator-max-microvolt = <1200000>; 313c916eb95SHarald Geyer regulator-name = "vcc-1v2-hsic"; 314c916eb95SHarald Geyer}; 315c916eb95SHarald Geyer 316c916eb95SHarald Geyer/* 317062904f2SJonathan Neuschäfer * The A64 chip cannot work with this regulator off, although 318c916eb95SHarald Geyer * it seems to be only driving the AR100 core. 319c916eb95SHarald Geyer * Maybe we don't still know well about CPUs domain. 320c916eb95SHarald Geyer */ 321c916eb95SHarald Geyer®_fldo2 { 322c916eb95SHarald Geyer regulator-always-on; 323c916eb95SHarald Geyer regulator-min-microvolt = <1100000>; 324c916eb95SHarald Geyer regulator-max-microvolt = <1100000>; 325c916eb95SHarald Geyer regulator-name = "vdd-cpus"; 326c916eb95SHarald Geyer}; 327c916eb95SHarald Geyer 328c916eb95SHarald Geyer®_rtc_ldo { 329c916eb95SHarald Geyer regulator-name = "vcc-rtc"; 330c916eb95SHarald Geyer}; 331c916eb95SHarald Geyer 3325cbef9f9SIcenowy Zheng&simplefb_hdmi { 3335cbef9f9SIcenowy Zheng vcc-hdmi-supply = <®_dldo1>; 3345cbef9f9SIcenowy Zheng}; 3355cbef9f9SIcenowy Zheng 336439152aeSHarald Geyer&sound { 337439152aeSHarald Geyer simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>; 338439152aeSHarald Geyer simple-audio-card,widgets = "Headphone", "Headphone Jack", 339439152aeSHarald Geyer "Microphone", "Headset Microphone", 340439152aeSHarald Geyer "Microphone", "Internal Microphone", 341439152aeSHarald Geyer "Speaker", "Internal Speaker"; 342439152aeSHarald Geyer simple-audio-card,routing = 343631e6a35SSamuel Holland "Left DAC", "DACL", 344631e6a35SSamuel Holland "Right DAC", "DACR", 345631e6a35SSamuel Holland "ADCL", "Left ADC", 346631e6a35SSamuel Holland "ADCR", "Right ADC", 347439152aeSHarald Geyer "Headphone Jack", "HP", 348439152aeSHarald Geyer "Speaker Amp INL", "LINEOUT", 349439152aeSHarald Geyer "Speaker Amp INR", "LINEOUT", 350439152aeSHarald Geyer "Internal Speaker", "Speaker Amp OUTL", 351439152aeSHarald Geyer "Internal Speaker", "Speaker Amp OUTR", 352439152aeSHarald Geyer "Internal Microphone", "MBIAS", 353439152aeSHarald Geyer "MIC1", "Internal Microphone", 354439152aeSHarald Geyer "Headset Microphone", "HBIAS", 355439152aeSHarald Geyer "MIC2", "Headset Microphone"; 356439152aeSHarald Geyer status = "okay"; 357439152aeSHarald Geyer}; 358439152aeSHarald Geyer 35979bc02f1STorsten Duwe&tcon0 { 36079bc02f1STorsten Duwe pinctrl-names = "default"; 36179bc02f1STorsten Duwe pinctrl-0 = <&lcd_rgb666_pins>; 36279bc02f1STorsten Duwe 36379bc02f1STorsten Duwe status = "okay"; 36479bc02f1STorsten Duwe}; 36579bc02f1STorsten Duwe 36679bc02f1STorsten Duwe&tcon0_out { 36779bc02f1STorsten Duwe tcon0_out_anx6345: endpoint@0 { 36879bc02f1STorsten Duwe reg = <0>; 36979bc02f1STorsten Duwe remote-endpoint = <&anx6345_in>; 37079bc02f1STorsten Duwe }; 37179bc02f1STorsten Duwe}; 37279bc02f1STorsten Duwe 373c916eb95SHarald Geyer&uart0 { 374c916eb95SHarald Geyer pinctrl-names = "default"; 375d91ebb95SChen-Yu Tsai pinctrl-0 = <&uart0_pb_pins>; 376c916eb95SHarald Geyer status = "okay"; 377c916eb95SHarald Geyer}; 378c916eb95SHarald Geyer 379c916eb95SHarald Geyer&usbphy { 380c916eb95SHarald Geyer usb1_vbus-supply = <®_usb1_vbus>; 381c916eb95SHarald Geyer status = "okay"; 382c916eb95SHarald Geyer}; 383