From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey Brodkin Date: Mon, 11 Jan 2016 09:45:15 +0000 Subject: [U-Boot] [PATCH] net: phy: genphy: Allow overwriting features In-Reply-To: <1450889081-21717-1-git-send-email-abrodkin@synopsys.com> References: <1450889081-21717-1-git-send-email-abrodkin@synopsys.com> Message-ID: <1452505515.3277.6.camel@synopsys.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Joe, On Wed, 2015-12-23 at 19:44 +0300, Alexey Brodkin wrote: > From: Sascha Hauer > > of_set_phy_supported allows overwiting hardware capabilities of > a phy with values from the devicetree. This does not work with > the genphy driver though because the genphys config_init function > will overwrite all values adjusted by of_set_phy_supported. Fix > this by initialising the genphy features in the phy_driver struct > and in config_init just limit the features to the ones the hardware > can actually support. The resulting features are a subset of the > devicetree specified features and the hardware features. > > This is a copy of the patch from Linux kernel, see > http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c242a47238fa2a6a54af8a16e62b54e6e031d4bc > > Signed-off-by: Sascha Hauer > Signed-off-by: Alexey Brodkin > Cc: Joe Hershberger > --- > drivers/net/phy/phy.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c > index 084276f..ec9be6b 100644 > --- a/drivers/net/phy/phy.c > +++ b/drivers/net/phy/phy.c > @@ -380,8 +380,6 @@ int genphy_config(struct phy_device *phydev) > int val; > u32 features; > > - /* For now, I'll claim that the generic driver supports > - * all possible port types */ > features = (SUPPORTED_TP | SUPPORTED_MII > | SUPPORTED_AUI | SUPPORTED_FIBRE | > SUPPORTED_BNC); > @@ -420,8 +418,8 @@ int genphy_config(struct phy_device *phydev) > features |= SUPPORTED_1000baseX_Half; > } > > - phydev->supported = features; > - phydev->advertising = features; > + phydev->supported &= features; > + phydev->advertising &= features; > > genphy_config_aneg(phydev); > > @@ -445,7 +443,9 @@ static struct phy_driver genphy_driver = { > .uid = 0xffffffff, > .mask = 0xffffffff, > .name = "Generic PHY", > - .features = 0, > + .features = PHY_GBIT_FEATURES | SUPPORTED_MII | > + SUPPORTED_AUI | SUPPORTED_FIBRE | > + SUPPORTED_BNC, > .config = genphy_config, > .startup = genphy_startup, > .shutdown = genphy_shutdown, Any chance for that one to be applied? This patch is required to implement phy max speed limitation by subsequent patches. -Alexey