// SPDX-License-Identifier: (GPL-2.0 OR MIT) // Copyright (C) Harald Geyer <harald@ccbib.org> // based on sun50i-a64-olinuxino.dts by Jagan Teki <jteki@openedev.com> /dts-v1/; #include "sun50i-a64.dtsi" #include "sun50i-a64-cpu-opp.dtsi" #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/input/input.h> #include <dt-bindings/pwm/pwm.h> / { model = "Olimex A64 Teres-I"; compatible = "olimex,a64-teres-i", "allwinner,sun50i-a64"; chassis-type = "laptop"; aliases { serial0 = &uart0; }; backlight: backlight { compatible = "pwm-backlight"; pwms = <&pwm 0 50000 0>; power-supply = <®_dcdc1>; brightness-levels = <0 5 7 10 14 20 28 40 56 80 112>; default-brightness-level = <5>; enable-gpios = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD23 */ }; chosen { stdout-path = "serial0:115200n8"; framebuffer-lcd { eDP25-supply = <®_dldo2>; eDP12-supply = <®_dldo3>; }; }; gpio-keys { compatible = "gpio-keys"; lid-switch { label = "Lid Switch"; gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */ linux,input-type = <EV_SW>; linux,code = <SW_LID>; wakeup-source; }; }; leds { compatible = "gpio-leds"; led-0 { label = "teres-i:green:capslock"; gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */ }; led-1 { label = "teres-i:green:numlock"; gpios = <&pio 2 4 GPIO_ACTIVE_HIGH>; /* PC4 */ }; }; reg_usb1_vbus: usb1-vbus { compatible = "regulator-fixed"; regulator-name = "usb1-vbus"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; enable-active-high; gpio = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */ status = "okay"; }; wifi_pwrseq: wifi_pwrseq { compatible = "mmc-pwrseq-simple"; reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ }; speaker_amp: audio-amplifier { compatible = "simple-audio-amplifier"; enable-gpios = <&r_pio 0 12 GPIO_ACTIVE_HIGH>; /* PL12 */ sound-name-prefix = "Speaker Amp"; }; }; &codec { status = "okay"; }; &codec_analog { cpvdd-supply = <®_eldo1>; status = "okay"; }; &dai { status = "okay"; }; &de { status = "okay"; }; &cpu0 { cpu-supply = <®_dcdc2>; }; &cpu1 { cpu-supply = <®_dcdc2>; }; &cpu2 { cpu-supply = <®_dcdc2>; }; &cpu3 { cpu-supply = <®_dcdc2>; }; &ehci1 { status = "okay"; }; &i2c0 { clock-frequency = <100000>; status = "okay"; anx6345: anx6345@38 { compatible = "analogix,anx6345"; reg = <0x38>; reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */ dvdd25-supply = <®_dldo2>; dvdd12-supply = <®_dldo3>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; anx6345_in: endpoint { remote-endpoint = <&tcon0_out_anx6345>; }; }; }; }; }; &mixer0 { status = "okay"; }; &mmc0 { pinctrl-names = "default"; pinctrl-0 = <&mmc0_pins>; vmmc-supply = <®_dcdc1>; cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; disable-wp; bus-width = <4>; status = "okay"; }; &mmc1 { pinctrl-names = "default"; pinctrl-0 = <&mmc1_pins>; vmmc-supply = <®_aldo2>; vqmmc-supply = <®_dldo4>; mmc-pwrseq = <&wifi_pwrseq>; bus-width = <4>; non-removable; status = "okay"; rtl8723bs: wifi@1 { reg = <1>; interrupt-parent = <&r_pio>; interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */ interrupt-names = "host-wake"; }; }; &mmc2 { pinctrl-names = "default"; pinctrl-0 = <&mmc2_pins>; vmmc-supply = <®_dcdc1>; vqmmc-supply = <®_dcdc1>; bus-width = <8>; non-removable; cap-mmc-hw-reset; status = "okay"; }; &ohci1 { status = "okay"; }; &pio { vcc-pc-supply = <®_dcdc1>; vcc-pd-supply = <®_dldo2>; vcc-pe-supply = <®_aldo1>; vcc-pf-supply = <®_dcdc1>; /* No dedicated supply-pin for this */ vcc-pg-supply = <®_aldo2>; }; &pwm { status = "okay"; }; &r_rsb { status = "okay"; axp803: pmic@3a3 { compatible = "x-powers,axp803"; reg = <0x3a3>; interrupt-parent = <&r_intc>; interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>; }; }; #include "axp803.dtsi" &ac_power_supply { status = "okay"; }; &battery_power_supply { status = "okay"; }; ®_aldo1 { regulator-always-on; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; regulator-name = "vcc-pe"; }; ®_aldo2 { regulator-always-on; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-name = "vcc-pl"; }; ®_aldo3 { regulator-always-on; regulator-min-microvolt = <3000000>; regulator-max-microvolt = <3000000>; regulator-name = "vcc-pll-avcc"; }; ®_dcdc1 { regulator-always-on; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-name = "vcc-3v3"; }; ®_dcdc2 { regulator-always-on; regulator-min-microvolt = <1040000>; regulator-max-microvolt = <1300000>; regulator-name = "vdd-cpux"; }; /* DCDC3 is polyphased with DCDC2 */ ®_dcdc5 { regulator-always-on; regulator-min-microvolt = <1500000>; regulator-max-microvolt = <1500000>; regulator-name = "vcc-ddr3"; }; ®_dcdc6 { regulator-always-on; regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1100000>; regulator-name = "vdd-sys"; }; ®_dldo1 { regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-name = "vcc-hdmi"; }; ®_dldo2 { regulator-min-microvolt = <2500000>; regulator-max-microvolt = <2500000>; regulator-name = "vcc-pd"; }; ®_dldo3 { regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; regulator-name = "vdd-edp"; }; ®_dldo4 { regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-name = "vcc-wifi-io"; }; ®_eldo1 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-name = "cpvdd"; }; ®_eldo2 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-name = "vcc-dvdd-csi"; }; ®_fldo1 { regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; regulator-name = "vcc-1v2-hsic"; }; /* * The A64 chip cannot work with this regulator off, although * it seems to be only driving the AR100 core. * Maybe we don't still know well about CPUs domain. */ ®_fldo2 { regulator-always-on; regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1100000>; regulator-name = "vdd-cpus"; }; ®_rtc_ldo { regulator-name = "vcc-rtc"; }; &simplefb_hdmi { vcc-hdmi-supply = <®_dldo1>; }; &sound { simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>; simple-audio-card,widgets = "Headphone", "Headphone Jack", "Microphone", "Headset Microphone", "Microphone", "Internal Microphone", "Speaker", "Internal Speaker"; simple-audio-card,routing = "Left DAC", "DACL", "Right DAC", "DACR", "ADCL", "Left ADC", "ADCR", "Right ADC", "Headphone Jack", "HP", "Speaker Amp INL", "LINEOUT", "Speaker Amp INR", "LINEOUT", "Internal Speaker", "Speaker Amp OUTL", "Internal Speaker", "Speaker Amp OUTR", "Internal Microphone", "MBIAS", "MIC1", "Internal Microphone", "Headset Microphone", "HBIAS", "MIC2", "Headset Microphone"; status = "okay"; }; &tcon0 { pinctrl-names = "default"; pinctrl-0 = <&lcd_rgb666_pins>; status = "okay"; }; &tcon0_out { tcon0_out_anx6345: endpoint@0 { reg = <0>; remote-endpoint = <&anx6345_in>; }; }; &uart0 { pinctrl-names = "default"; pinctrl-0 = <&uart0_pb_pins>; status = "okay"; }; &usbphy { usb1_vbus-supply = <®_usb1_vbus>; status = "okay"; };