Commit 9b810181 authored by Geert Uytterhoeven's avatar Geert Uytterhoeven

arm64: dts: renesas: rcar-gen3: Convert EtherAVB to explicit delay handling

Some EtherAVB variants support internal clock delay configuration, which
can add larger delays than the delays that are typically supported by
the PHY (using an "rgmii-*id" PHY mode, and/or "[rt]xc-skew-ps"
properties).

Historically, the EtherAVB driver configured these delays based on the
"rgmii-*id" PHY mode.  This was wrong, as these are meant solely for the
PHY, not for the MAC.  Hence properties were introduced for explicit
configuration of these delays.

Convert the R-Car Gen3 DTS files from the old to the new scheme:
  - Add default "rx-internal-delay-ps" and "tx-internal-delay-ps"
    properties to the SoC .dtsi files, to be overridden by board files
    where needed,
  - Convert board files from "rgmii-*id" PHY modes to "rgmii", adding
    the appropriate "rx-internal-delay-ps" and/or "tx-internal-delay-ps"
    overrides.

Notes:
  - R-Car E3 and D3 do not support TX internal delay handling,
  - On R-Car D3, TX internal delay handling must always be enabled,
    hence this fixes a bug on Draak,
  - On R-Car V3H, RX internal delay handling must always be enabled.
Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20200819134344.27813-7-geert+renesas@glider.be
parent 92494cea
...@@ -1250,6 +1250,8 @@ avb: ethernet@e6800000 { ...@@ -1250,6 +1250,8 @@ avb: ethernet@e6800000 {
power-domains = <&sysc R8A7795_PD_ALWAYS_ON>; power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
resets = <&cpg 812>; resets = <&cpg 812>;
phy-mode = "rgmii"; phy-mode = "rgmii";
rx-internal-delay-ps = <0>;
tx-internal-delay-ps = <0>;
iommus = <&ipmmu_ds0 16>; iommus = <&ipmmu_ds0 16>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
......
...@@ -1126,6 +1126,8 @@ avb: ethernet@e6800000 { ...@@ -1126,6 +1126,8 @@ avb: ethernet@e6800000 {
power-domains = <&sysc R8A7796_PD_ALWAYS_ON>; power-domains = <&sysc R8A7796_PD_ALWAYS_ON>;
resets = <&cpg 812>; resets = <&cpg 812>;
phy-mode = "rgmii"; phy-mode = "rgmii";
rx-internal-delay-ps = <0>;
tx-internal-delay-ps = <0>;
iommus = <&ipmmu_ds0 16>; iommus = <&ipmmu_ds0 16>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
......
...@@ -1012,6 +1012,8 @@ avb: ethernet@e6800000 { ...@@ -1012,6 +1012,8 @@ avb: ethernet@e6800000 {
power-domains = <&sysc R8A77961_PD_ALWAYS_ON>; power-domains = <&sysc R8A77961_PD_ALWAYS_ON>;
resets = <&cpg 812>; resets = <&cpg 812>;
phy-mode = "rgmii"; phy-mode = "rgmii";
rx-internal-delay-ps = <0>;
tx-internal-delay-ps = <0>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
status = "disabled"; status = "disabled";
......
...@@ -988,6 +988,8 @@ avb: ethernet@e6800000 { ...@@ -988,6 +988,8 @@ avb: ethernet@e6800000 {
power-domains = <&sysc R8A77965_PD_ALWAYS_ON>; power-domains = <&sysc R8A77965_PD_ALWAYS_ON>;
resets = <&cpg 812>; resets = <&cpg 812>;
phy-mode = "rgmii"; phy-mode = "rgmii";
rx-internal-delay-ps = <0>;
tx-internal-delay-ps = <0>;
iommus = <&ipmmu_ds0 16>; iommus = <&ipmmu_ds0 16>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
......
...@@ -81,7 +81,8 @@ &avb { ...@@ -81,7 +81,8 @@ &avb {
renesas,no-ether-link; renesas,no-ether-link;
phy-handle = <&phy0>; phy-handle = <&phy0>;
phy-mode = "rgmii-id"; rx-internal-delay-ps = <1800>;
tx-internal-delay-ps = <2000>;
status = "okay"; status = "okay";
phy0: ethernet-phy@0 { phy0: ethernet-phy@0 {
......
...@@ -102,7 +102,8 @@ &avb { ...@@ -102,7 +102,8 @@ &avb {
renesas,no-ether-link; renesas,no-ether-link;
phy-handle = <&phy0>; phy-handle = <&phy0>;
phy-mode = "rgmii-id"; rx-internal-delay-ps = <1800>;
tx-internal-delay-ps = <2000>;
status = "okay"; status = "okay";
phy0: ethernet-phy@0 { phy0: ethernet-phy@0 {
......
...@@ -615,6 +615,8 @@ avb: ethernet@e6800000 { ...@@ -615,6 +615,8 @@ avb: ethernet@e6800000 {
power-domains = <&sysc R8A77970_PD_ALWAYS_ON>; power-domains = <&sysc R8A77970_PD_ALWAYS_ON>;
resets = <&cpg 812>; resets = <&cpg 812>;
phy-mode = "rgmii"; phy-mode = "rgmii";
rx-internal-delay-ps = <0>;
tx-internal-delay-ps = <0>;
iommus = <&ipmmu_rt 3>; iommus = <&ipmmu_rt 3>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
......
...@@ -667,6 +667,8 @@ avb: ethernet@e6800000 { ...@@ -667,6 +667,8 @@ avb: ethernet@e6800000 {
power-domains = <&sysc R8A77980_PD_ALWAYS_ON>; power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
resets = <&cpg 812>; resets = <&cpg 812>;
phy-mode = "rgmii"; phy-mode = "rgmii";
rx-internal-delay-ps = <0>;
tx-internal-delay-ps = <2000>;
iommus = <&ipmmu_ds1 33>; iommus = <&ipmmu_ds1 33>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
......
...@@ -938,6 +938,7 @@ avb: ethernet@e6800000 { ...@@ -938,6 +938,7 @@ avb: ethernet@e6800000 {
power-domains = <&sysc R8A77990_PD_ALWAYS_ON>; power-domains = <&sysc R8A77990_PD_ALWAYS_ON>;
resets = <&cpg 812>; resets = <&cpg 812>;
phy-mode = "rgmii"; phy-mode = "rgmii";
rx-internal-delay-ps = <0>;
iommus = <&ipmmu_ds0 16>; iommus = <&ipmmu_ds0 16>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
......
...@@ -628,6 +628,7 @@ avb: ethernet@e6800000 { ...@@ -628,6 +628,7 @@ avb: ethernet@e6800000 {
power-domains = <&sysc R8A77995_PD_ALWAYS_ON>; power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
resets = <&cpg 812>; resets = <&cpg 812>;
phy-mode = "rgmii"; phy-mode = "rgmii";
rx-internal-delay-ps = <1800>;
iommus = <&ipmmu_ds0 16>; iommus = <&ipmmu_ds0 16>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
......
...@@ -324,7 +324,7 @@ &avb { ...@@ -324,7 +324,7 @@ &avb {
pinctrl-0 = <&avb_pins>; pinctrl-0 = <&avb_pins>;
pinctrl-names = "default"; pinctrl-names = "default";
phy-handle = <&phy0>; phy-handle = <&phy0>;
phy-mode = "rgmii-txid"; tx-internal-delay-ps = <2000>;
status = "okay"; status = "okay";
phy0: ethernet-phy@0 { phy0: ethernet-phy@0 {
......
...@@ -144,7 +144,7 @@ &avb { ...@@ -144,7 +144,7 @@ &avb {
pinctrl-0 = <&avb_pins>; pinctrl-0 = <&avb_pins>;
pinctrl-names = "default"; pinctrl-names = "default";
phy-handle = <&phy0>; phy-handle = <&phy0>;
phy-mode = "rgmii-txid"; tx-internal-delay-ps = <2000>;
status = "okay"; status = "okay";
phy0: ethernet-phy@0 { phy0: ethernet-phy@0 {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment