Let the PHY generate the RX and TX delay on the Odroid-C1 and MXIII Plus. Previously we did not know that these boards used an RX delay. We assumed that setting the TX delay on the MAC side It turns out that these boards also require an RX delay of 2ns (verified on Odroid-C1, but the u-boot code uses the same setup on both boards). Ethernet only worked because u-boot added this RX delay on the MAC side. The 4ns TX delay was also wrong and the result of using an unsupported RGMII TX clock divider setting. This has been fixed in the driver with commit bd6f48546b9cb7 ("net: stmmac: dwmac-meson8b: Fix the RGMII TX delay on Meson8b/8m2 SoCs"). Switch to phy-mode "rgmii-id" to let the PHY side handle all the delays, (as recommended by the Ethernet maintainers anyways) to correctly describe the need for a 2ns RX as well as 2ns TX delay on these boards. This fixes the Ethernet performance on Odroid-C1 where there was a huge amount of packet loss when transmitting data due to the incorrect TX delay. Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com> Signed-off-by: Kevin Hilman <khilman@baylibre.com> Link: https://lore.kernel.org/r/20200512215148.540322-3-martin.blumenstingl@googlemail.com
253 lines
4.5 KiB
Plaintext
253 lines
4.5 KiB
Plaintext
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
|
/*
|
|
* Copyright (c) 2018 Oleg Ivanov <balbes-150@yandex.ru>
|
|
* Copyright (c) 2018 Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
|
*/
|
|
|
|
/dts-v1/;
|
|
|
|
#include "meson8m2.dtsi"
|
|
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
#include <dt-bindings/input/input.h>
|
|
|
|
/ {
|
|
model = "Tronsmart MXIII Plus";
|
|
compatible = "tronsmart,mxiii-plus", "amlogic,meson8m2";
|
|
|
|
aliases {
|
|
ethernet0 = ðmac;
|
|
i2c0 = &i2c_AO;
|
|
serial0 = &uart_AO;
|
|
serial1 = &uart_A;
|
|
mmc0 = &sd_card_slot;
|
|
};
|
|
|
|
chosen {
|
|
stdout-path = "serial0:115200n8";
|
|
};
|
|
|
|
memory {
|
|
device_type = "memory";
|
|
reg = <0x40000000 0x80000000>;
|
|
};
|
|
|
|
adc-keys {
|
|
compatible = "adc-keys";
|
|
io-channels = <&saradc 0>;
|
|
io-channel-names = "buttons";
|
|
keyup-threshold-microvolt = <1710000>;
|
|
|
|
button-function {
|
|
label = "Function";
|
|
linux,code = <KEY_FN>;
|
|
press-threshold-microvolt = <10000>;
|
|
};
|
|
};
|
|
|
|
iio-hwmon {
|
|
compatible = "iio-hwmon";
|
|
io-channels = <&saradc 8>;
|
|
};
|
|
|
|
vcc_3v3: regulator-vcc3v3 {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "VCC3V3";
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
};
|
|
};
|
|
|
|
&cpu0 {
|
|
cpu-supply = <&vcck>;
|
|
};
|
|
|
|
ðmac {
|
|
status = "okay";
|
|
|
|
pinctrl-0 = <ð_rgmii_pins>;
|
|
pinctrl-names = "default";
|
|
|
|
phy-handle = <ð_phy0>;
|
|
phy-mode = "rgmii-id";
|
|
|
|
mdio {
|
|
compatible = "snps,dwmac-mdio";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
eth_phy0: ethernet-phy@0 {
|
|
/* Realtek RTL8211F (0x001cc916) */
|
|
reg = <0>;
|
|
|
|
reset-assert-us = <10000>;
|
|
reset-deassert-us = <30000>;
|
|
reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>;
|
|
};
|
|
};
|
|
};
|
|
|
|
&ir_receiver {
|
|
status = "okay";
|
|
pinctrl-0 = <&ir_recv_pins>;
|
|
pinctrl-names = "default";
|
|
};
|
|
|
|
&i2c_AO {
|
|
status = "okay";
|
|
pinctrl-0 = <&i2c_ao_pins>;
|
|
pinctrl-names = "default";
|
|
|
|
pmic@32 {
|
|
compatible = "ricoh,rn5t618";
|
|
reg = <0x32>;
|
|
system-power-controller;
|
|
|
|
regulators {
|
|
vcck: DCDC1 {
|
|
regulator-name = "VCCK";
|
|
regulator-min-microvolt = <825000>;
|
|
regulator-max-microvolt = <1150000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vddee: DCDC2 {
|
|
/* the output is also used as VDDAO */
|
|
regulator-name = "VDD_EE";
|
|
regulator-min-microvolt = <950000>;
|
|
regulator-max-microvolt = <1150000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
DCDC3 {
|
|
regulator-name = "VDD_DDR";
|
|
regulator-min-microvolt = <1500000>;
|
|
regulator-max-microvolt = <1500000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
LDO1 {
|
|
regulator-name = "VDDIO_AO28";
|
|
regulator-min-microvolt = <2900000>;
|
|
regulator-max-microvolt = <2900000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vddio_ao1v8: LDO2 {
|
|
regulator-name = "VDDIO_AO18";
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
LDO3 {
|
|
regulator-name = "VCC1V8";
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
LDO4 {
|
|
regulator-name = "VCC2V8";
|
|
regulator-min-microvolt = <2850000>;
|
|
regulator-max-microvolt = <2850000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
LDO5 {
|
|
regulator-name = "AVDD1V8";
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
LDORTC1 {
|
|
regulator-name = "VDD_LDO";
|
|
regulator-min-microvolt = <2700000>;
|
|
regulator-max-microvolt = <2700000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
LDORTC2 {
|
|
regulator-name = "RTC_0V9";
|
|
regulator-min-microvolt = <900000>;
|
|
regulator-max-microvolt = <900000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
&mali {
|
|
mali-supply = <&vddee>;
|
|
};
|
|
|
|
&saradc {
|
|
status = "okay";
|
|
vref-supply = <&vddio_ao1v8>;
|
|
};
|
|
|
|
&sdio {
|
|
status = "okay";
|
|
|
|
pinctrl-0 = <&sd_b_pins>;
|
|
pinctrl-names = "default";
|
|
|
|
/* SD card */
|
|
sd_card_slot: slot@1 {
|
|
compatible = "mmc-slot";
|
|
reg = <1>;
|
|
status = "okay";
|
|
|
|
bus-width = <4>;
|
|
no-sdio;
|
|
cap-mmc-highspeed;
|
|
cap-sd-highspeed;
|
|
disable-wp;
|
|
|
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
|
|
|
vmmc-supply = <&vcc_3v3>;
|
|
};
|
|
};
|
|
|
|
/* connected to the Bluetooth module */
|
|
&uart_A {
|
|
status = "okay";
|
|
pinctrl-0 = <&uart_a1_pins>, <&uart_a1_cts_rts_pins>;
|
|
pinctrl-names = "default";
|
|
uart-has-rtscts;
|
|
};
|
|
|
|
&uart_AO {
|
|
status = "okay";
|
|
pinctrl-0 = <&uart_ao_a_pins>;
|
|
pinctrl-names = "default";
|
|
};
|
|
|
|
&usb0 {
|
|
status = "okay";
|
|
};
|
|
|
|
&usb1 {
|
|
status = "okay";
|
|
};
|
|
|
|
&usb0_phy {
|
|
status = "okay";
|
|
};
|
|
|
|
&usb1_phy {
|
|
status = "okay";
|
|
};
|