Commit 72b59174 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'net-fsl-fman-address-erratum-A011043'



Madalin Bucur says:

====================
net: fsl/fman: address erratum A011043

This addresses a HW erratum on some QorIQ DPAA devices.

MDIO reads to internal PCS registers may result in having
the MDIO_CFG[MDIO_RD_ER] bit set, even when there is no
error and read data (MDIO_DATA[MDIO_DATA]) is correct.
Software may get false read error when reading internal
PCS registers through MDIO. As a workaround, all internal
MDIO accesses should ignore the MDIO_CFG[MDIO_RD_ER] bit.
When the issue was present, one could see such errors
during boot:

  mdio_bus ffe4e5000: Error while reading PHY0 reg at 3.3
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 22e98449 1d3ca681
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -403,6 +403,19 @@ PROPERTIES
		The settings and programming routines for internal/external
		MDIO are different. Must be included for internal MDIO.

- fsl,erratum-a011043
		Usage: optional
		Value type: <boolean>
		Definition: Indicates the presence of the A011043 erratum
		describing that the MDIO_CFG[MDIO_RD_ER] bit may be falsely
		set when reading internal PCS registers. MDIO reads to
		internal PCS registers may result in having the
		MDIO_CFG[MDIO_RD_ER] bit set, even when there is no error and
		read data (MDIO_DATA[MDIO_DATA]) is correct.
		Software may get false read error when reading internal
		PCS registers through MDIO. As a workaround, all internal
		MDIO accesses should ignore the MDIO_CFG[MDIO_RD_ER] bit.

For internal PHY device on internal mdio bus, a PHY node should be created.
See the definition of the PHY node in booting-without-of.txt for an
example of how to define a PHY (Internal PHY has no interrupt line).
+1 −0
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ fman@400000 {
		#size-cells = <0>;
		compatible = "fsl,fman-memac-mdio", "fsl,fman-xmdio";
		reg = <0xe1000 0x1000>;
		fsl,erratum-a011043; /* must ignore read errors */

		pcsphy0: ethernet-phy@0 {
			reg = <0x0>;
+1 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ fman@400000 {
		#size-cells = <0>;
		compatible = "fsl,fman-memac-mdio", "fsl,fman-xmdio";
		reg = <0xf1000 0x1000>;
		fsl,erratum-a011043; /* must ignore read errors */

		pcsphy6: ethernet-phy@0 {
			reg = <0x0>;
+1 −0
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ fman@400000 {
		#size-cells = <0>;
		compatible = "fsl,fman-memac-mdio", "fsl,fman-xmdio";
		reg = <0xe3000 0x1000>;
		fsl,erratum-a011043; /* must ignore read errors */

		pcsphy1: ethernet-phy@0 {
			reg = <0x0>;
+1 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ fman@400000 {
		#size-cells = <0>;
		compatible = "fsl,fman-memac-mdio", "fsl,fman-xmdio";
		reg = <0xf3000 0x1000>;
		fsl,erratum-a011043; /* must ignore read errors */

		pcsphy7: ethernet-phy@0 {
			reg = <0x0>;
Loading