Hello!

On 5/14/2018 11:22 AM, Marco Felsch wrote:

From: Markus Niebel <[email protected]>

handle errata #2 for KSZ9031: force 1000Base-T master

Attention: enabling the workaround will cause no link to
other GIGE master.

Signed-off-by: Markus Niebel <[email protected]>
[[email protected]: move dt binding to the KSZ9031 entry]
Signed-off-by: Marco Felsch <[email protected]>
[...]
@@ -573,6 +575,22 @@ static int ksz9031_config_init(struct phy_device *phydev)
                ksz9031_of_load_skew_values(phydev, of_node,
                                MII_KSZ9031RN_TX_DATA_PAD_SKEW, 4,
                                tx_data_skews, 4);
+
+               /* force master mode -> errata #2
+                * attention: Master <-> Master will not work
+                */
+               if (of_property_read_bool(of_node, "force-master")) {
+                       rc = phy_read(phydev, MII_CTRL1000);
+                       if (rc >= 0) {
+                               val = (u16)rc;
+                               /* enable master mode, config &
+                                * prefer master
+                                */
+                               val |= (CTL1000_ENABLE_MASTER |
+                                       CTL1000_AS_MASTER);

  Parens not needed.

+                               phy_write(phydev, MII_CTRL1000, val);
+                       }
+               }
        }
return ksz9031_center_flp_timing(phydev);


MBR, Sergei

Reply via email to