Messages in this thread | | | From | "Ardelean, Alexandru" <> | Subject | RE: [PATCH RESEND net-next 18/18] net: phy: adin: remove the use of the .ack_interrupt() | Date | Sat, 14 Nov 2020 06:38:34 +0000 |
| |
> -----Original Message----- > From: Ioana Ciornei <ciorneiioana@gmail.com> > Sent: Friday, November 13, 2020 6:52 PM > To: Andrew Lunn <andrew@lunn.ch>; Heiner Kallweit <hkallweit1@gmail.com>; > Russell King <linux@armlinux.org.uk>; Florian Fainelli <f.fainelli@gmail.com>; > Jakub Kicinski <kuba@kernel.org>; netdev@vger.kernel.org; linux- > kernel@vger.kernel.org > Cc: Ioana Ciornei <ioana.ciornei@nxp.com>; Ardelean, Alexandru > <alexandru.Ardelean@analog.com> > Subject: [PATCH RESEND net-next 18/18] net: phy: adin: remove the use of the > .ack_interrupt() > > [External] > > From: Ioana Ciornei <ioana.ciornei@nxp.com> > > In preparation of removing the .ack_interrupt() callback, we must replace its > occurrences (aka phy_clear_interrupt), from the 2 places where it is called from > (phy_enable_interrupts and phy_disable_interrupts), with equivalent > functionality. > > This means that clearing interrupts now becomes something that the PHY driver > is responsible of doing, before enabling interrupts and after clearing them. Make > this driver follow the new contract. >
Acked-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
> Cc: Alexandru Ardelean <alexandru.ardelean@analog.com> > Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com> > --- > drivers/net/phy/adin.c | 25 ++++++++++++++++++------- > 1 file changed, 18 insertions(+), 7 deletions(-) > > diff --git a/drivers/net/phy/adin.c b/drivers/net/phy/adin.c index > ba24434b867d..55a0b91816e2 100644 > --- a/drivers/net/phy/adin.c > +++ b/drivers/net/phy/adin.c > @@ -471,12 +471,25 @@ static int adin_phy_ack_intr(struct phy_device > *phydev) > > static int adin_phy_config_intr(struct phy_device *phydev) { > - if (phydev->interrupts == PHY_INTERRUPT_ENABLED) > - return phy_set_bits(phydev, ADIN1300_INT_MASK_REG, > - ADIN1300_INT_MASK_EN); > + int err; > + > + if (phydev->interrupts == PHY_INTERRUPT_ENABLED) { > + err = adin_phy_ack_intr(phydev); > + if (err) > + return err; > + > + err = phy_set_bits(phydev, ADIN1300_INT_MASK_REG, > + ADIN1300_INT_MASK_EN); > + } else { > + err = phy_clear_bits(phydev, ADIN1300_INT_MASK_REG, > + ADIN1300_INT_MASK_EN); > + if (err) > + return err; > + > + err = adin_phy_ack_intr(phydev); > + } > > - return phy_clear_bits(phydev, ADIN1300_INT_MASK_REG, > - ADIN1300_INT_MASK_EN); > + return err; > } > > static irqreturn_t adin_phy_handle_interrupt(struct phy_device *phydev) @@ - > 895,7 +908,6 @@ static struct phy_driver adin_driver[] = { > .read_status = adin_read_status, > .get_tunable = adin_get_tunable, > .set_tunable = adin_set_tunable, > - .ack_interrupt = adin_phy_ack_intr, > .config_intr = adin_phy_config_intr, > .handle_interrupt = adin_phy_handle_interrupt, > .get_sset_count = adin_get_sset_count, > @@ -919,7 +931,6 @@ static struct phy_driver adin_driver[] = { > .read_status = adin_read_status, > .get_tunable = adin_get_tunable, > .set_tunable = adin_set_tunable, > - .ack_interrupt = adin_phy_ack_intr, > .config_intr = adin_phy_config_intr, > .handle_interrupt = adin_phy_handle_interrupt, > .get_sset_count = adin_get_sset_count, > -- > 2.28.0
| |