2019-12-14 14:26:41 +01:00
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2019-12-14 14:26:42 +01:00
// Copyright (C) 2017 Jagan Teki <jteki@openedev.com>
2017-08-14 16:16:04 +05:30
/dts-v1/;
#include "sun50i-a64.dtsi"
2020-01-07 20:20:18 -08:00
#include "sun50i-a64-cpu-opp.dtsi"
2017-08-14 16:16:04 +05:30
#include <dt-bindings/gpio/gpio.h>
/ {
model = "Olimex A64-Olinuxino";
compatible = "olimex,a64-olinuxino", "allwinner,sun50i-a64";
aliases {
2018-07-30 13:31:32 +01:00
ethernet0 = &emac;
2017-08-14 16:16:04 +05:30
serial0 = &uart0;
};
chosen {
stdout-path = "serial0:115200n8";
};
2017-12-04 10:23:06 +05:30
2018-09-25 14:19:40 +05:30
hdmi-connector {
compatible = "hdmi-connector";
type = "a";
port {
hdmi_con_in: endpoint {
remote-endpoint = <&hdmi_out_con>;
};
};
};
2020-03-25 21:59:24 +01:00
leds {
compatible = "gpio-leds";
led-0 {
label = "a64-olinuxino:red:user";
gpios = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */
};
};
2018-07-30 13:31:33 +01:00
reg_usb1_vbus: usb1-vbus {
compatible = "regulator-fixed";
regulator-name = "usb1-vbus";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
regulator-boot-on;
enable-active-high;
gpio = <&pio 6 9 GPIO_ACTIVE_HIGH>; /* PG9 */
status = "okay";
};
2017-12-04 10:23:06 +05:30
wifi_pwrseq: wifi_pwrseq {
compatible = "mmc-pwrseq-simple";
reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */
};
2017-08-14 16:16:04 +05:30
};
2020-01-07 20:20:18 -08:00
&cpu0 {
cpu-supply = <®_dcdc2>;
};
&cpu1 {
cpu-supply = <®_dcdc2>;
};
&cpu2 {
cpu-supply = <®_dcdc2>;
};
&cpu3 {
cpu-supply = <®_dcdc2>;
};
2018-09-25 14:19:40 +05:30
&de {
status = "okay";
};
2018-07-30 13:31:33 +01:00
&ehci0 {
status = "okay";
};
&ehci1 {
status = "okay";
};
2018-07-30 13:31:32 +01:00
&emac {
pinctrl-names = "default";
pinctrl-0 = <&rgmii_pins>;
phy-mode = "rgmii";
phy-handle = <&ext_rgmii_phy>;
phy-supply = <®_dcdc1>;
2018-09-26 19:48:24 +00:00
allwinner,tx-delay-ps = <600>;
2018-07-30 13:31:32 +01:00
status = "okay";
};
2018-09-25 14:19:40 +05:30
&hdmi {
hvcc-supply = <®_dldo1>;
status = "okay";
};
&hdmi_out {
hdmi_out_con: endpoint {
remote-endpoint = <&hdmi_con_in>;
};
};
2018-07-30 13:31:32 +01:00
&mdio {
ext_rgmii_phy: ethernet-phy@1 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <1>;
};
};
2017-08-14 16:16:04 +05:30
&mmc0 {
pinctrl-names = "default";
pinctrl-0 = <&mmc0_pins>;
vmmc-supply = <®_dcdc1>;
2017-12-22 22:57:38 +02:00
cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
2017-08-14 16:16:04 +05:30
disable-wp;
bus-width = <4>;
status = "okay";
};
2017-12-04 10:23:06 +05:30
&mmc1 {
pinctrl-names = "default";
pinctrl-0 = <&mmc1_pins>;
2019-11-29 13:39:41 +02:00
vmmc-supply = <®_dcdc1>;
2017-12-04 10:23:06 +05:30
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";
};
};
2018-07-30 13:31:33 +01:00
&ohci0 {
status = "okay";
};
&ohci1 {
status = "okay";
};
2019-11-29 13:39:40 +02:00
&pio {
vcc-pc-supply = <®_dcdc1>;
vcc-pd-supply = <®_dcdc1>;
vcc-pe-supply = <®_aldo1>;
vcc-pg-supply = <®_dldo4>;
};
&r_pio {
/*
* FIXME: We can't add that supply for now since it would
* create a circular dependency between pinctrl, the regulator
* and the RSB Bus.
*
* vcc-pl-supply = <®_aldo2>;
*/
};
2020-01-18 16:24:59 +01:00
&pio {
vcc-pa-supply = <®_dcdc1>;
vcc-pb-supply = <®_dcdc1>;
vcc-pc-supply = <®_dcdc1>;
vcc-pd-supply = <®_dcdc1>;
vcc-pe-supply = <®_aldo1>;
vcc-pf-supply = <®_dcdc1>;
vcc-pg-supply = <®_dldo4>;
vcc-ph-supply = <®_dcdc1>;
};
2017-08-14 16:16:04 +05:30
&r_rsb {
status = "okay";
axp803: pmic@3a3 {
compatible = "x-powers,axp803";
reg = <0x3a3>;
interrupt-parent = <&r_intc>;
2021-01-17 23:50:39 -06:00
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>;
2018-07-30 13:31:33 +01:00
x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */
2017-08-14 16:16:04 +05:30
};
};
2020-01-18 16:24:59 +01:00
/* VCC-PL is powered by aldo2 but we cannot add it as the RSB */
/* interface used to talk to the PMIC in on the PL pins */
/* &r_pio { */
/* vcc-pl-supply = <®_aldo2>; */
/* }; */
2017-08-14 16:16:04 +05:30
#include "axp803.dtsi"
2019-02-05 23:00:40 +08:00
&ac_power_supply {
status = "okay";
};
&battery_power_supply {
status = "okay";
};
2017-08-14 16:16:04 +05:30
®_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 */
2018-07-30 13:31:31 +01:00
/*
* The board uses DDR3L DRAM chips. 1.36V is the closest to the nominal
* 1.35V that the PMIC can drive.
*/
2017-08-14 16:16:04 +05:30
®_dcdc5 {
regulator-always-on;
2018-07-30 13:31:31 +01:00
regulator-min-microvolt = <1360000>;
regulator-max-microvolt = <1360000>;
2017-08-14 16:16:04 +05:30
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 = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-name = "vcc-mipi";
};
®_dldo3 {
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
regulator-name = "vcc-avdd-csi";
};
®_dldo4 {
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-name = "vcc-wifi-io";
};
2018-07-30 13:31:33 +01:00
®_drivevbus {
regulator-name = "usb0-vbus";
status = "okay";
};
2017-08-14 16:16:04 +05:30
®_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 without 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";
};
2018-06-22 21:05:24 +08:00
&simplefb_hdmi {
vcc-hdmi-supply = <®_dldo1>;
};
2017-08-14 16:16:04 +05:30
&uart0 {
pinctrl-names = "default";
2018-08-28 18:01:31 +08:00
pinctrl-0 = <&uart0_pb_pins>;
2017-08-14 16:16:04 +05:30
status = "okay";
};
2018-07-30 13:31:33 +01:00
&usb_otg {
dr_mode = "otg";
status = "okay";
};
&usbphy {
status = "okay";
usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */
usb0_vbus-supply = <®_drivevbus>;
usb1_vbus-supply = <®_usb1_vbus>;
};