From 1607f679dab49bf5434f0e758247feaca92a50d5 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Wed, 21 May 2014 13:38:10 +0200 Subject: net: phy: genphy: Make it work with of_set_phy_supported phys start with features initialized from the phy driver and are eventually limited by of_set_phy_supported. This does not work with the genphy driver which starts with no features and overwrites phydev->supported with the values read from hardware in config_init. This overwrites the features adjusted by of_set_phy_supported. To fix this let the genphy driver start with full features which are then only limited in config_init, but never extended. Signed-off-by: Sascha Hauer --- drivers/net/phy/phy.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'drivers/net/phy/phy.c') diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index e214c13210..517ed583bf 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -805,8 +805,8 @@ static int genphy_config_init(struct phy_device *phydev) features |= SUPPORTED_1000baseT_Half; } - phydev->supported = features; - phydev->advertising = features; + phydev->supported &= features; + phydev->advertising &= features; return 0; } @@ -858,7 +858,9 @@ static struct phy_driver genphy_driver = { .drv.name = "Generic PHY", .phy_id = PHY_ANY_UID, .phy_id_mask = PHY_ANY_UID, - .features = 0, + .features = PHY_GBIT_FEATURES | SUPPORTED_MII | + SUPPORTED_AUI | SUPPORTED_FIBRE | + SUPPORTED_BNC, }; static int generic_phy_register(void) -- cgit v1.2.3