RE: [PATCH RESEND net-next 18/18] net: phy: adin: remove the use of the .ack_interrupt()

From: Ardelean, Alexandru
Date: Sat Nov 14 2020 - 01:42:07 EST




> -----Original Message-----
> From: Ioana Ciornei <ciorneiioana@xxxxxxxxx>
> Sent: Friday, November 13, 2020 6:52 PM
> To: Andrew Lunn <andrew@xxxxxxx>; Heiner Kallweit <hkallweit1@xxxxxxxxx>;
> Russell King <linux@xxxxxxxxxxxxxxx>; Florian Fainelli <f.fainelli@xxxxxxxxx>;
> Jakub Kicinski <kuba@xxxxxxxxxx>; netdev@xxxxxxxxxxxxxxx; linux-
> kernel@xxxxxxxxxxxxxxx
> Cc: Ioana Ciornei <ioana.ciornei@xxxxxxx>; Ardelean, Alexandru
> <alexandru.Ardelean@xxxxxxxxxx>
> Subject: [PATCH RESEND net-next 18/18] net: phy: adin: remove the use of the
> .ack_interrupt()
>
> [External]
>
> From: Ioana Ciornei <ioana.ciornei@xxxxxxx>
>
> 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@xxxxxxxxxx>

> Cc: Alexandru Ardelean <alexandru.ardelean@xxxxxxxxxx>
> Signed-off-by: Ioana Ciornei <ioana.ciornei@xxxxxxx>
> ---
> 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