diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c
index 9919627f699c2b95b1e556614d4aa30565d535d8..972015764d888b168b35c3324eb7540543bae8e7 100644
--- a/drivers/net/phy/dp83867.c
+++ b/drivers/net/phy/dp83867.c
@@ -521,13 +521,13 @@ static int dp83867_of_init(struct phy_device *phydev)
 	}
 
 	if(of_property_read_u32(of_node, "ti,leds-conf", &dp83867->leds_conf))
-		dp83867->leds_conf = 0;
+		dp83867->leds_conf = -1;
 
 	if(of_property_read_u32(of_node, "ti,leds-polarity", &dp83867->leds_polarity))
-		dp83867->leds_polarity = 0;
+		dp83867->leds_polarity = -1;
 
 	if(of_property_read_u32(of_node, "ti,gpio0-conf", &dp83867->gpio0_conf))
-		dp83867->gpio0_conf = 0;
+		dp83867->gpio0_conf = -1;
 
 	if (of_property_read_bool(of_node, "ti,max-output-impedance"))
 		dp83867->io_impedance = DP83867_IO_MUX_CFG_IO_IMPEDANCE_MAX;
@@ -697,24 +697,23 @@ static int dp83867_config_init(struct phy_device *phydev)
 		if (ret)
 			return ret;
 
-		/* LEDs */
-		if(dp83867->gpio0_conf) {
+		/* GPIOs */
+		if(dp83867->gpio0_conf != -1) {
 			ret = phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_GPIO_MUX_CTRL, dp83867->gpio0_conf);
-					if (ret)
-							return ret;
+			if (ret)
+				return ret;
 		}
 
-		if(dp83867->leds_conf) {
-			ret = phy_write(phydev, DP83867_LEDCR1,dp83867->leds_conf);
-					if (ret)
-						return ret;
+		/* LEDs */
+		if(dp83867->leds_conf != -1) {
+			ret = phy_write(phydev, DP83867_LEDCR1, dp83867->leds_conf);
+			if (ret)
+				return ret;
 		}
-		if(dp83867->leds_polarity) {
-			val = phy_read(phydev, DP83867_LEDCR2);
-			val = val & ~(dp83867->leds_polarity);
-			ret = phy_write(phydev, DP83867_LEDCR2,val);
-				if (ret)
-					return ret;
+		if(dp83867->leds_polarity != -1) {
+			ret = phy_write(phydev, DP83867_LEDCR2, dp83867->leds_polarity);
+			if (ret)
+				return ret;
 		}
 
 		/* If rgmii mode with no internal delay is selected, we do NOT use