Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: phy: use boolean dt properties for eee broken modes

The patches regarding eee-broken-modes was merged before all people
involved could find an agreement on the best way to move forward.

While we agreed on having a DT property to mark particular modes as broken,
the value used for eee-broken-modes mapped the phy register in very direct
way. Because of this, the concern is that it could be used to implement
configuration policies instead of describing a broken HW.

In the end, having a boolean property for each mode seems to be preferred
over one bit field value mapping the register (too) directly.

Cc: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

jbrunet and committed by
David S. Miller
57f39862 3bb9ab63

+15 -3
+15 -3
drivers/net/phy/phy_device.c
··· 1665 1665 static void of_set_phy_eee_broken(struct phy_device *phydev) 1666 1666 { 1667 1667 struct device_node *node = phydev->mdio.dev.of_node; 1668 - u32 broken; 1668 + u32 broken = 0; 1669 1669 1670 1670 if (!IS_ENABLED(CONFIG_OF_MDIO)) 1671 1671 return; ··· 1673 1673 if (!node) 1674 1674 return; 1675 1675 1676 - if (!of_property_read_u32(node, "eee-broken-modes", &broken)) 1677 - phydev->eee_broken_modes = broken; 1676 + if (of_property_read_bool(node, "eee-broken-100tx")) 1677 + broken |= MDIO_EEE_100TX; 1678 + if (of_property_read_bool(node, "eee-broken-1000t")) 1679 + broken |= MDIO_EEE_1000T; 1680 + if (of_property_read_bool(node, "eee-broken-10gt")) 1681 + broken |= MDIO_EEE_10GT; 1682 + if (of_property_read_bool(node, "eee-broken-1000kx")) 1683 + broken |= MDIO_EEE_1000KX; 1684 + if (of_property_read_bool(node, "eee-broken-10gkx4")) 1685 + broken |= MDIO_EEE_10GKX4; 1686 + if (of_property_read_bool(node, "eee-broken-10gkr")) 1687 + broken |= MDIO_EEE_10GKR; 1688 + 1689 + phydev->eee_broken_modes = broken; 1678 1690 } 1679 1691 1680 1692 /**