From: Vivien Didelot Date: Wed, 28 Aug 2019 18:55:11 +0000 (-0400) Subject: net: dsa: mv88e6xxx: fix freeing unused SERDES IRQ X-Git-Tag: v5.4-rc1~131^2~121 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=42aa15cf05c0a47cc5807c21c7ff471b80cad371;p=platform%2Fkernel%2Flinux-rpi.git net: dsa: mv88e6xxx: fix freeing unused SERDES IRQ Now mv88e6xxx does not enable its ports at setup itself and let the DSA core handle this, unused ports are disabled without being powered on first. While that is expected, the SERDES powering code was assuming that a port was already set up before powering it down, resulting in freeing an unused IRQ. The patch fixes this assumption. Fixes: b759f528ca3d ("net: dsa: mv88e6xxx: enable SERDES after setup") Signed-off-by: Vivien Didelot Reviewed-by: Marek BehĂșn Tested-by: Andrew Lunn Signed-off-by: David S. Miller --- diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c index 6525075..c648f9f 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -2070,7 +2070,8 @@ static int mv88e6xxx_serdes_power(struct mv88e6xxx_chip *chip, int port, if (chip->info->ops->serdes_irq_setup) err = chip->info->ops->serdes_irq_setup(chip, port); } else { - if (chip->info->ops->serdes_irq_free) + if (chip->info->ops->serdes_irq_free && + chip->ports[port].serdes_irq) chip->info->ops->serdes_irq_free(chip, port); err = chip->info->ops->serdes_power(chip, port, false);