diff options
author | Andrew Lunn <andrew@lunn.ch> | 2018-03-17 22:21:09 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-03-18 03:24:48 +0300 |
commit | 76f38f1f3cf8f81be3c18ecb7a65dd74afb05851 (patch) | |
tree | 1ddca2290901908a6afd8ed03150824b064d7cdb /drivers/net/dsa | |
parent | 3661daa66f07b06bccfbf48c8608dd5ceb7f30b1 (diff) | |
download | linux-76f38f1f3cf8f81be3c18ecb7a65dd74afb05851.tar.xz |
net: dsa: mv88e6xxx: Fix IRQ when loading module
Handle polled interrupts correctly when loading the module.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Fixes: 294d711ee8c0 ("net: dsa: mv88e6xxx: Poll when no interrupt defined")
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/dsa')
-rw-r--r-- | drivers/net/dsa/mv88e6xxx/chip.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c index bd3ee84770c7..41f872d4ba3c 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -4204,15 +4204,18 @@ static void mv88e6xxx_remove(struct mdio_device *mdiodev) mv88e6xxx_unregister_switch(chip); mv88e6xxx_mdios_unregister(chip); - if (chip->irq > 0) { - mv88e6xxx_g1_vtu_prob_irq_free(chip); - mv88e6xxx_g1_atu_prob_irq_free(chip); - if (chip->info->g2_irqs > 0) - mv88e6xxx_g2_irq_free(chip); - mutex_lock(&chip->reg_lock); + mv88e6xxx_g1_vtu_prob_irq_free(chip); + mv88e6xxx_g1_atu_prob_irq_free(chip); + + if (chip->info->g2_irqs > 0) + mv88e6xxx_g2_irq_free(chip); + + mutex_lock(&chip->reg_lock); + if (chip->irq > 0) mv88e6xxx_g1_irq_free(chip); - mutex_unlock(&chip->reg_lock); - } + else + mv88e6xxx_irq_poll_free(chip); + mutex_unlock(&chip->reg_lock); } static const struct of_device_id mv88e6xxx_of_match[] = { |