Message ID | 20200908112520.3439-2-m.felsch@pengutronix.de |
---|---|
State | Changes Requested |
Delegated to: | David Miller |
Headers | show |
Series | SMSC: Cleanups and clock setup | expand |
On 9/8/2020 4:25 AM, Marco Felsch wrote: > Don't enable the interrupt if the platform disable the energy detection > by "smsc,disable-energy-detect". > > Signed-off-by: Marco Felsch <m.felsch@pengutronix.de> > Reviewed-by: Andrew Lunn <andrew@lunn.ch> > --- > v2: > - Add Andrew's tag > > drivers/net/phy/smsc.c | 15 +++++++++++---- > 1 file changed, 11 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c > index 74568ae16125..fa539a867de6 100644 > --- a/drivers/net/phy/smsc.c > +++ b/drivers/net/phy/smsc.c > @@ -37,10 +37,17 @@ struct smsc_phy_priv { > > static int smsc_phy_config_intr(struct phy_device *phydev) > { > - int rc = phy_write (phydev, MII_LAN83C185_IM, > - ((PHY_INTERRUPT_ENABLED == phydev->interrupts) > - ? MII_LAN83C185_ISF_INT_PHYLIB_EVENTS > - : 0)); > + struct smsc_phy_priv *priv = phydev->priv; > + u16 intmask = 0; > + int rc; > + > + if (phydev->interrupts) { Not that it changes the code functionally, but it would be nice to preserve the phydev->interrupts == PHY_INTERRUPT_ENABLED. > + intmask = MII_LAN83C185_ISF_INT4 | MII_LAN83C185_ISF_INT6; > + if (priv->energy_enable) > + intmask |= MII_LAN83C185_ISF_INT7; > + } Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
On 20-09-08 18:58, Florian Fainelli wrote: > > > On 9/8/2020 4:25 AM, Marco Felsch wrote: > > Don't enable the interrupt if the platform disable the energy detection > > by "smsc,disable-energy-detect". > > > > Signed-off-by: Marco Felsch <m.felsch@pengutronix.de> > > Reviewed-by: Andrew Lunn <andrew@lunn.ch> > > --- > > v2: > > - Add Andrew's tag > > > > drivers/net/phy/smsc.c | 15 +++++++++++---- > > 1 file changed, 11 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c > > index 74568ae16125..fa539a867de6 100644 > > --- a/drivers/net/phy/smsc.c > > +++ b/drivers/net/phy/smsc.c > > @@ -37,10 +37,17 @@ struct smsc_phy_priv { > > static int smsc_phy_config_intr(struct phy_device *phydev) > > { > > - int rc = phy_write (phydev, MII_LAN83C185_IM, > > - ((PHY_INTERRUPT_ENABLED == phydev->interrupts) > > - ? MII_LAN83C185_ISF_INT_PHYLIB_EVENTS > > - : 0)); > > + struct smsc_phy_priv *priv = phydev->priv; > > + u16 intmask = 0; > > + int rc; > > + > > + if (phydev->interrupts) { > > Not that it changes the code functionally, but it would be nice to preserve > the phydev->interrupts == PHY_INTERRUPT_ENABLED. Okay, I will apply this and add your reviewed-by tag. Thanks, Marco > > > + intmask = MII_LAN83C185_ISF_INT4 | MII_LAN83C185_ISF_INT6; > > + if (priv->energy_enable) > > + intmask |= MII_LAN83C185_ISF_INT7; > > + } > > Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> > -- > Florian > >
diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c index 74568ae16125..fa539a867de6 100644 --- a/drivers/net/phy/smsc.c +++ b/drivers/net/phy/smsc.c @@ -37,10 +37,17 @@ struct smsc_phy_priv { static int smsc_phy_config_intr(struct phy_device *phydev) { - int rc = phy_write (phydev, MII_LAN83C185_IM, - ((PHY_INTERRUPT_ENABLED == phydev->interrupts) - ? MII_LAN83C185_ISF_INT_PHYLIB_EVENTS - : 0)); + struct smsc_phy_priv *priv = phydev->priv; + u16 intmask = 0; + int rc; + + if (phydev->interrupts) { + intmask = MII_LAN83C185_ISF_INT4 | MII_LAN83C185_ISF_INT6; + if (priv->energy_enable) + intmask |= MII_LAN83C185_ISF_INT7; + } + + rc = phy_write(phydev, MII_LAN83C185_IM, intmask); return rc < 0 ? rc : 0; }