Allow an interrupt number to be passed in the platform data. The
driver will then use it if not zero, otherwise it will poll for
interrupts.

Signed-off-by: Andrew Lunn <and...@lunn.ch>
---
 drivers/net/dsa/mv88e6xxx/chip.c        | 13 +++++++++----
 include/linux/platform_data/mv88e6xxx.h |  1 +
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 46020fe1b5e7..bad30be699bf 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -4894,12 +4894,17 @@ static int mv88e6xxx_probe(struct mdio_device *mdiodev)
        if (err)
                goto out;
 
-       chip->irq = of_irq_get(np, 0);
-       if (chip->irq == -EPROBE_DEFER) {
-               err = chip->irq;
-               goto out;
+       if (np) {
+               chip->irq = of_irq_get(np, 0);
+               if (chip->irq == -EPROBE_DEFER) {
+                       err = chip->irq;
+                       goto out;
+               }
        }
 
+       if (pdata)
+               chip->irq = pdata->irq;
+
        /* Has to be performed before the MDIO bus is created, because
         * the PHYs will link their interrupts to these interrupt
         * controllers
diff --git a/include/linux/platform_data/mv88e6xxx.h 
b/include/linux/platform_data/mv88e6xxx.h
index 963730b44aea..21452a9365e1 100644
--- a/include/linux/platform_data/mv88e6xxx.h
+++ b/include/linux/platform_data/mv88e6xxx.h
@@ -13,6 +13,7 @@ struct dsa_mv88e6xxx_pdata {
        unsigned int enabled_ports;
        struct net_device *netdev;
        u32 eeprom_len;
+       int irq;
 };
 
 #endif
-- 
2.20.1

Reply via email to