Given there're default values mentioned in the PHY datasheet
fall-back gracefully to them instead of silently return an error
through the whole call-chain.

This allows to use minimalistic description in DT if no special
features are required.

Signed-off-by: Alexey Brodkin <[email protected]>
Cc: Murali Karicheri <[email protected]>
Cc: Sekhar Nori <[email protected]>
Cc: David S. Miller <[email protected]>
Cc: Grygorii Strashko <[email protected]>
Cc: Florian Fainelli <[email protected]>
Cc: Mugunthan V N <[email protected]>
Cc: Andrew Lunn <[email protected]>
---
 drivers/net/phy/dp83867.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c
index ca1b462..5d8c5ec 100644
--- a/drivers/net/phy/dp83867.c
+++ b/drivers/net/phy/dp83867.c
@@ -135,17 +135,20 @@ static int dp83867_of_init(struct phy_device *phydev)
        if (ret &&
            (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID ||
             phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID))
-               return ret;
+               dp83867->rx_id_delay = DP83867_RGMIIDCTL_2_00_NS;
 
        ret = of_property_read_u32(of_node, "ti,tx-internal-delay",
                                   &dp83867->tx_id_delay);
        if (ret &&
            (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID ||
             phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID))
-               return ret;
+               dp83867->tx_id_delay = DP83867_RGMIIDCTL_2_00_NS;
 
-       return of_property_read_u32(of_node, "ti,fifo-depth",
-                                  &dp83867->fifo_depth);
+       ret = of_property_read_u32(of_node, "ti,fifo-depth", 
&dp83867->fifo_depth);
+       if (ret)
+               dp83867->fifo_depth = DP83867_PHYCR_FIFO_DEPTH_4_B_NIB;
+
+       return 0;
 }
 #else
 static int dp83867_of_init(struct phy_device *phydev)
-- 
2.10.2

Reply via email to