The DWMAC binding never supported having the Ethernet PHY node as a direct child to the controller, nor did it support the "phy" property as a way to specify which Ethernet PHY to use. What seemed to work was simply the implementation ignoring the "phy" property and instead probing all addresses on the MDIO bus and using the first available one. The recent switch from "phy" to "phy-handle" breaks the assumptions of the implementation, and does not match what the binding requires. The binding requires that if an MDIO bus is described, it shall be a sub-node with the "snps,dwmac-mdio" compatible string. Add a device node for the MDIO bus, and move the Ethernet PHY node under it. Also fix up the #address-cells and #size-cells properties where needed. Fixes: de332de26d19 ("ARM: dts: sunxi: Switch from phy to phy-handle") Signed-off-by: Chen-Yu Tsai <wens@csie.org> Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
327 lines
5.1 KiB
Plaintext
327 lines
5.1 KiB
Plaintext
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
|
/*
|
|
* Device Tree Source for A20-SOM204-EVB Board
|
|
*
|
|
* Copyright (C) 2018 Olimex Ltd.
|
|
* Author: Stefan Mavrodiev <stefan@olimex.com>
|
|
*/
|
|
|
|
/dts-v1/;
|
|
#include "sun7i-a20.dtsi"
|
|
#include "sunxi-common-regulators.dtsi"
|
|
|
|
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
#include <dt-bindings/pwm/pwm.h>
|
|
|
|
/ {
|
|
model = "Olimex A20-SOM204-EVB";
|
|
compatible = "olimex,a20-olimex-som204-evb", "allwinner,sun7i-a20";
|
|
|
|
aliases {
|
|
serial0 = &uart0;
|
|
serial1 = &uart4;
|
|
serial2 = &uart7;
|
|
spi0 = &spi1;
|
|
spi1 = &spi2;
|
|
ethernet1 = &rtl8723bs;
|
|
};
|
|
|
|
chosen {
|
|
stdout-path = "serial0:115200n8";
|
|
};
|
|
|
|
hdmi-connector {
|
|
compatible = "hdmi-connector";
|
|
type = "a";
|
|
|
|
port {
|
|
hdmi_con_in: endpoint {
|
|
remote-endpoint = <&hdmi_out_con>;
|
|
};
|
|
};
|
|
};
|
|
|
|
leds {
|
|
compatible = "gpio-leds";
|
|
|
|
stat {
|
|
label = "a20-som204-evb:green:stat";
|
|
gpios = <&pio 8 0 GPIO_ACTIVE_HIGH>;
|
|
default-state = "on";
|
|
};
|
|
|
|
led1 {
|
|
label = "a20-som204-evb:green:led1";
|
|
gpios = <&pio 8 10 GPIO_ACTIVE_HIGH>;
|
|
default-state = "on";
|
|
};
|
|
|
|
led2 {
|
|
label = "a20-som204-evb:yellow:led2";
|
|
gpios = <&pio 8 11 GPIO_ACTIVE_HIGH>;
|
|
default-state = "on";
|
|
};
|
|
};
|
|
|
|
rtl_pwrseq: rtl_pwrseq {
|
|
compatible = "mmc-pwrseq-simple";
|
|
reset-gpios = <&pio 6 9 GPIO_ACTIVE_LOW>;
|
|
};
|
|
};
|
|
|
|
&ahci {
|
|
target-supply = <®_ahci_5v>;
|
|
status = "okay";
|
|
};
|
|
|
|
&can0 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&can_ph_pins>;
|
|
status = "okay";
|
|
};
|
|
|
|
&codec {
|
|
status = "okay";
|
|
};
|
|
|
|
&cpu0 {
|
|
cpu-supply = <®_dcdc2>;
|
|
};
|
|
|
|
&de {
|
|
status = "okay";
|
|
};
|
|
|
|
&ehci0 {
|
|
status = "okay";
|
|
};
|
|
|
|
&ehci1 {
|
|
status = "okay";
|
|
};
|
|
|
|
&gmac {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&gmac_rgmii_pins>;
|
|
phy-handle = <&phy3>;
|
|
phy-mode = "rgmii";
|
|
phy-supply = <®_vcc3v3>;
|
|
status = "okay";
|
|
};
|
|
|
|
&hdmi {
|
|
status = "okay";
|
|
};
|
|
|
|
&hdmi_out {
|
|
hdmi_out_con: endpoint {
|
|
remote-endpoint = <&hdmi_con_in>;
|
|
};
|
|
};
|
|
|
|
&i2c0 {
|
|
status = "okay";
|
|
|
|
axp209: pmic@34 {
|
|
reg = <0x34>;
|
|
interrupt-parent = <&nmi_intc>;
|
|
interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
|
|
};
|
|
};
|
|
|
|
/* Exposed to UEXT1 */
|
|
&i2c1 {
|
|
status = "okay";
|
|
|
|
eeprom: eeprom@50 {
|
|
compatible = "atmel,24c16";
|
|
reg = <0x50>;
|
|
pagesize = <16>;
|
|
};
|
|
};
|
|
|
|
/* Exposed to UEXT2 */
|
|
&i2c2 {
|
|
status = "okay";
|
|
};
|
|
|
|
&ir0 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&ir0_rx_pin>;
|
|
status = "okay";
|
|
};
|
|
|
|
&gmac_mdio {
|
|
phy3: ethernet-phy@3 {
|
|
reg = <3>;
|
|
reset-gpios = <&pio 0 17 GPIO_ACTIVE_LOW>; /* PA17 */
|
|
reset-assert-us = <10000>;
|
|
/* wait 1s after reset, otherwise fail to read phy id */
|
|
reset-deassert-us = <1000000>;
|
|
};
|
|
};
|
|
|
|
&mmc0 {
|
|
vmmc-supply = <®_vcc3v3>;
|
|
bus-width = <4>;
|
|
cd-gpios = <&pio 7 1 GPIO_ACTIVE_LOW>;
|
|
status = "okay";
|
|
};
|
|
|
|
&mmc3 {
|
|
vmmc-supply = <®_vcc3v3>;
|
|
mmc-pwrseq = <&rtl_pwrseq>;
|
|
bus-width = <4>;
|
|
non-removable;
|
|
status = "okay";
|
|
|
|
rtl8723bs: sdio_wifi@1 {
|
|
reg = <1>;
|
|
};
|
|
};
|
|
|
|
&ohci0 {
|
|
status = "okay";
|
|
};
|
|
|
|
&ohci1 {
|
|
status = "okay";
|
|
};
|
|
|
|
&otg_sram {
|
|
status = "okay";
|
|
};
|
|
|
|
&pio {
|
|
uart3_rts_pin: uart3-rts-pin {
|
|
pins = "PG8";
|
|
function = "uart3";
|
|
};
|
|
};
|
|
|
|
#include "axp209.dtsi"
|
|
|
|
&ac_power_supply {
|
|
status = "okay";
|
|
};
|
|
|
|
&battery_power_supply {
|
|
status = "okay";
|
|
};
|
|
|
|
®_ahci_5v {
|
|
gpio = <&pio 2 3 GPIO_ACTIVE_HIGH>;
|
|
status = "okay";
|
|
};
|
|
|
|
®_dcdc2 {
|
|
regulator-always-on;
|
|
regulator-min-microvolt = <1000000>;
|
|
regulator-max-microvolt = <1400000>;
|
|
regulator-name = "vdd-cpu";
|
|
};
|
|
|
|
®_dcdc3 {
|
|
regulator-always-on;
|
|
regulator-min-microvolt = <1000000>;
|
|
regulator-max-microvolt = <1400000>;
|
|
regulator-name = "vdd-int-dll";
|
|
};
|
|
|
|
®_ldo1 {
|
|
regulator-always-on;
|
|
regulator-min-microvolt = <1300000>;
|
|
regulator-max-microvolt = <1300000>;
|
|
regulator-name = "vdd-rtc";
|
|
};
|
|
|
|
®_ldo2 {
|
|
regulator-always-on;
|
|
regulator-min-microvolt = <3000000>;
|
|
regulator-max-microvolt = <3000000>;
|
|
regulator-name = "avcc";
|
|
};
|
|
|
|
®_ldo4 {
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
regulator-name = "vcc-pg";
|
|
};
|
|
|
|
®_usb0_vbus {
|
|
gpio = <&pio 2 17 GPIO_ACTIVE_HIGH>;
|
|
status = "okay";
|
|
};
|
|
|
|
®_usb1_vbus {
|
|
status = "okay";
|
|
};
|
|
|
|
®_usb2_vbus {
|
|
status = "okay";
|
|
};
|
|
|
|
/* Exposed to UEXT1 */
|
|
&spi1 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&spi1_pi_pins>,
|
|
<&spi1_cs0_pi_pin>;
|
|
status = "okay";
|
|
};
|
|
|
|
/* Exposed to UEXT2 */
|
|
&spi2 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&spi2_pc_pins>,
|
|
<&spi2_cs0_pc_pin>;
|
|
status = "okay";
|
|
};
|
|
|
|
&uart0 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&uart0_pb_pins>;
|
|
status = "okay";
|
|
};
|
|
|
|
/* Used for RTL8723BS bluetooth */
|
|
&uart3 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&uart3_pg_pins>, <&uart3_rts_pin>;
|
|
status = "okay";
|
|
};
|
|
|
|
/* Exposed to UEXT1 */
|
|
&uart4 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&uart4_pg_pins>;
|
|
status = "okay";
|
|
};
|
|
|
|
/* Exposed to UEXT2 */
|
|
&uart7 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&uart7_pi_pins>;
|
|
status = "okay";
|
|
};
|
|
|
|
&usb_otg {
|
|
dr_mode = "otg";
|
|
status = "okay";
|
|
};
|
|
|
|
&usb_power_supply {
|
|
status = "okay";
|
|
};
|
|
|
|
&usbphy {
|
|
usb0_id_det-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
|
|
usb0_vbus_det-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
|
|
usb0_vbus_power-supply = <&usb_power_supply>;
|
|
usb0_vbus-supply = <®_usb0_vbus>;
|
|
usb1_vbus-supply = <®_usb1_vbus>;
|
|
usb2_vbus-supply = <®_usb2_vbus>;
|
|
status = "okay";
|
|
};
|