1// SPDX-License-Identifier: (GPL-2.0 OR MIT) 2// Copyright (C) Harald Geyer <harald@ccbib.org> 3// based on sun50i-a64-olinuxino.dts by Jagan Teki <jteki@openedev.com> 4 5/dts-v1/; 6 7#include "sun50i-a64.dtsi" 8#include "sun50i-a64-cpu-opp.dtsi" 9 10#include <dt-bindings/gpio/gpio.h> 11#include <dt-bindings/input/input.h> 12#include <dt-bindings/pwm/pwm.h> 13 14/ { 15 model = "Olimex A64 Teres-I"; 16 compatible = "olimex,a64-teres-i", "allwinner,sun50i-a64"; 17 chassis-type = "laptop"; 18 19 aliases { 20 serial0 = &uart0; 21 }; 22 23 backlight: backlight { 24 compatible = "pwm-backlight"; 25 pwms = <&pwm 0 50000 0>; 26 power-supply = <®_dcdc1>; 27 brightness-levels = <0 5 7 10 14 20 28 40 56 80 112>; 28 default-brightness-level = <5>; 29 enable-gpios = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD23 */ 30 }; 31 32 chosen { 33 stdout-path = "serial0:115200n8"; 34 35 framebuffer-lcd { 36 eDP25-supply = <®_dldo2>; 37 eDP12-supply = <®_dldo3>; 38 }; 39 }; 40 41 gpio-keys { 42 compatible = "gpio-keys"; 43 44 lid-switch { 45 label = "Lid Switch"; 46 gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */ 47 linux,input-type = <EV_SW>; 48 linux,code = <SW_LID>; 49 wakeup-source; 50 }; 51 }; 52 53 leds { 54 compatible = "gpio-leds"; 55 56 led-0 { 57 label = "teres-i:green:capslock"; 58 gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */ 59 }; 60 61 led-1 { 62 label = "teres-i:green:numlock"; 63 gpios = <&pio 2 4 GPIO_ACTIVE_HIGH>; /* PC4 */ 64 }; 65 }; 66 67 reg_usb1_vbus: usb1-vbus { 68 compatible = "regulator-fixed"; 69 regulator-name = "usb1-vbus"; 70 regulator-min-microvolt = <5000000>; 71 regulator-max-microvolt = <5000000>; 72 enable-active-high; 73 gpio = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */ 74 status = "okay"; 75 }; 76 77 wifi_pwrseq: pwrseq { 78 compatible = "mmc-pwrseq-simple"; 79 reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ 80 }; 81 82 speaker_amp: audio-amplifier { 83 compatible = "simple-audio-amplifier"; 84 enable-gpios = <&r_pio 0 12 GPIO_ACTIVE_HIGH>; /* PL12 */ 85 sound-name-prefix = "Speaker Amp"; 86 }; 87}; 88 89&codec { 90 status = "okay"; 91}; 92 93&codec_analog { 94 cpvdd-supply = <®_eldo1>; 95 status = "okay"; 96}; 97 98&dai { 99 status = "okay"; 100}; 101 102&de { 103 status = "okay"; 104}; 105 106&cpu0 { 107 cpu-supply = <®_dcdc2>; 108}; 109 110&cpu1 { 111 cpu-supply = <®_dcdc2>; 112}; 113 114&cpu2 { 115 cpu-supply = <®_dcdc2>; 116}; 117 118&cpu3 { 119 cpu-supply = <®_dcdc2>; 120}; 121 122&ehci1 { 123 status = "okay"; 124}; 125 126 127&i2c0 { 128 clock-frequency = <100000>; 129 status = "okay"; 130 131 anx6345: anx6345@38 { 132 compatible = "analogix,anx6345"; 133 reg = <0x38>; 134 reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */ 135 dvdd25-supply = <®_dldo2>; 136 dvdd12-supply = <®_dldo3>; 137 138 ports { 139 #address-cells = <1>; 140 #size-cells = <0>; 141 142 port@0 { 143 reg = <0>; 144 145 anx6345_in: endpoint { 146 remote-endpoint = <&tcon0_out_anx6345>; 147 }; 148 }; 149 }; 150 }; 151}; 152 153&mixer0 { 154 status = "okay"; 155}; 156 157&mmc0 { 158 pinctrl-names = "default"; 159 pinctrl-0 = <&mmc0_pins>; 160 vmmc-supply = <®_dcdc1>; 161 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; 162 disable-wp; 163 bus-width = <4>; 164 status = "okay"; 165}; 166 167&mmc1 { 168 pinctrl-names = "default"; 169 pinctrl-0 = <&mmc1_pins>; 170 vmmc-supply = <®_aldo2>; 171 vqmmc-supply = <®_dldo4>; 172 mmc-pwrseq = <&wifi_pwrseq>; 173 bus-width = <4>; 174 non-removable; 175 status = "okay"; 176 177 rtl8723bs: wifi@1 { 178 reg = <1>; 179 interrupt-parent = <&r_pio>; 180 interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */ 181 interrupt-names = "host-wake"; 182 }; 183}; 184 185&mmc2 { 186 pinctrl-names = "default"; 187 pinctrl-0 = <&mmc2_pins>; 188 vmmc-supply = <®_dcdc1>; 189 vqmmc-supply = <®_dcdc1>; 190 bus-width = <8>; 191 non-removable; 192 cap-mmc-hw-reset; 193 status = "okay"; 194}; 195 196&ohci1 { 197 status = "okay"; 198}; 199 200&pio { 201 vcc-pc-supply = <®_dcdc1>; 202 vcc-pd-supply = <®_dldo2>; 203 vcc-pe-supply = <®_aldo1>; 204 vcc-pf-supply = <®_dcdc1>; /* No dedicated supply-pin for this */ 205 vcc-pg-supply = <®_aldo2>; 206}; 207 208&pwm { 209 status = "okay"; 210}; 211 212&r_rsb { 213 status = "okay"; 214 215 axp803: pmic@3a3 { 216 compatible = "x-powers,axp803"; 217 reg = <0x3a3>; 218 interrupt-parent = <&r_intc>; 219 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>; 220 }; 221}; 222 223#include "axp803.dtsi" 224 225&ac_power_supply { 226 status = "okay"; 227}; 228 229&battery_power_supply { 230 status = "okay"; 231}; 232 233®_aldo1 { 234 regulator-always-on; 235 regulator-min-microvolt = <2800000>; 236 regulator-max-microvolt = <2800000>; 237 regulator-name = "vcc-pe"; 238}; 239 240®_aldo2 { 241 regulator-always-on; 242 regulator-min-microvolt = <3300000>; 243 regulator-max-microvolt = <3300000>; 244 regulator-name = "vcc-pl"; 245}; 246 247®_aldo3 { 248 regulator-always-on; 249 regulator-min-microvolt = <3000000>; 250 regulator-max-microvolt = <3000000>; 251 regulator-name = "vcc-pll-avcc"; 252}; 253 254®_dcdc1 { 255 regulator-always-on; 256 regulator-min-microvolt = <3300000>; 257 regulator-max-microvolt = <3300000>; 258 regulator-name = "vcc-3v3"; 259}; 260 261®_dcdc2 { 262 regulator-always-on; 263 regulator-min-microvolt = <1040000>; 264 regulator-max-microvolt = <1300000>; 265 regulator-name = "vdd-cpux"; 266}; 267 268/* DCDC3 is polyphased with DCDC2 */ 269 270®_dcdc5 { 271 regulator-always-on; 272 regulator-min-microvolt = <1500000>; 273 regulator-max-microvolt = <1500000>; 274 regulator-name = "vcc-ddr3"; 275}; 276 277®_dcdc6 { 278 regulator-always-on; 279 regulator-min-microvolt = <1100000>; 280 regulator-max-microvolt = <1100000>; 281 regulator-name = "vdd-sys"; 282}; 283 284®_dldo1 { 285 regulator-min-microvolt = <3300000>; 286 regulator-max-microvolt = <3300000>; 287 regulator-name = "vcc-hdmi"; 288}; 289 290®_dldo2 { 291 regulator-min-microvolt = <2500000>; 292 regulator-max-microvolt = <2500000>; 293 regulator-name = "vcc-pd"; 294}; 295 296®_dldo3 { 297 regulator-min-microvolt = <1200000>; 298 regulator-max-microvolt = <1200000>; 299 regulator-name = "vdd-edp"; 300}; 301 302®_dldo4 { 303 regulator-min-microvolt = <3300000>; 304 regulator-max-microvolt = <3300000>; 305 regulator-name = "vcc-wifi-io"; 306}; 307 308®_eldo1 { 309 regulator-min-microvolt = <1800000>; 310 regulator-max-microvolt = <1800000>; 311 regulator-name = "cpvdd"; 312}; 313 314®_eldo2 { 315 regulator-min-microvolt = <1800000>; 316 regulator-max-microvolt = <1800000>; 317 regulator-name = "vcc-dvdd-csi"; 318}; 319 320®_fldo1 { 321 regulator-min-microvolt = <1200000>; 322 regulator-max-microvolt = <1200000>; 323 regulator-name = "vcc-1v2-hsic"; 324}; 325 326/* 327 * The A64 chip cannot work with this regulator off, although 328 * it seems to be only driving the AR100 core. 329 * Maybe we don't still know well about CPUs domain. 330 */ 331®_fldo2 { 332 regulator-always-on; 333 regulator-min-microvolt = <1100000>; 334 regulator-max-microvolt = <1100000>; 335 regulator-name = "vdd-cpus"; 336}; 337 338®_rtc_ldo { 339 regulator-name = "vcc-rtc"; 340}; 341 342&simplefb_hdmi { 343 vcc-hdmi-supply = <®_dldo1>; 344}; 345 346&sound { 347 simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>; 348 simple-audio-card,widgets = "Headphone", "Headphone Jack", 349 "Microphone", "Headset Microphone", 350 "Microphone", "Internal Microphone", 351 "Speaker", "Internal Speaker"; 352 simple-audio-card,routing = 353 "Left DAC", "DACL", 354 "Right DAC", "DACR", 355 "ADCL", "Left ADC", 356 "ADCR", "Right ADC", 357 "Headphone Jack", "HP", 358 "Speaker Amp INL", "LINEOUT", 359 "Speaker Amp INR", "LINEOUT", 360 "Internal Speaker", "Speaker Amp OUTL", 361 "Internal Speaker", "Speaker Amp OUTR", 362 "Internal Microphone", "MBIAS", 363 "MIC1", "Internal Microphone", 364 "Headset Microphone", "HBIAS", 365 "MIC2", "Headset Microphone"; 366 status = "okay"; 367}; 368 369&tcon0 { 370 pinctrl-names = "default"; 371 pinctrl-0 = <&lcd_rgb666_pins>; 372 373 status = "okay"; 374}; 375 376&tcon0_out { 377 tcon0_out_anx6345: endpoint@0 { 378 reg = <0>; 379 remote-endpoint = <&anx6345_in>; 380 }; 381}; 382 383&uart0 { 384 pinctrl-names = "default"; 385 pinctrl-0 = <&uart0_pb_pins>; 386 status = "okay"; 387}; 388 389&usbphy { 390 usb1_vbus-supply = <®_usb1_vbus>; 391 status = "okay"; 392}; 393