diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c index ff4dd51f6cb0..1a9d6f83a023 100644 --- a/drivers/net/dsa/microchip/ksz_common.c +++ b/drivers/net/dsa/microchip/ksz_common.c @@ -2419,14 +2419,14 @@ static void ksz_irq_unmask(struct irq_data *d) kirq->masked &= ~BIT(d->hwirq); } -static void ksz_irq_bus_lock(struct irq_data *d) +void ksz_irq_bus_lock(struct irq_data *d) { struct ksz_irq *kirq = irq_data_get_irq_chip_data(d); mutex_lock(&kirq->dev->lock_irq); } -static void ksz_irq_bus_sync_unlock(struct irq_data *d) +void ksz_irq_bus_sync_unlock(struct irq_data *d) { struct ksz_irq *kirq = irq_data_get_irq_chip_data(d); struct ksz_device *dev = kirq->dev; @@ -2504,14 +2504,15 @@ static irqreturn_t ksz_irq_thread_fn(int irq, void *dev_id) return (nhandled > 0 ? IRQ_HANDLED : IRQ_NONE); } -static int ksz_irq_common_setup(struct ksz_device *dev, struct ksz_irq *kirq) +int ksz_irq_common_setup(struct ksz_device *dev, struct ksz_irq *kirq, + const struct irq_domain_ops *ops) { int ret, n; kirq->dev = dev; - kirq->domain = irq_domain_create_simple(dev_fwnode(dev->dev), kirq->nirqs, 0, - &ksz_irq_domain_ops, kirq); + kirq->domain = irq_domain_create_simple(dev_fwnode(dev->dev), + kirq->nirqs, 0, ops, kirq); if (!kirq->domain) return -ENOMEM; @@ -2543,7 +2544,7 @@ int ksz_girq_setup(struct ksz_device *dev) girq->irq_num = dev->irq; - return ksz_irq_common_setup(dev, girq); + return ksz_irq_common_setup(dev, girq, &ksz_irq_domain_ops); } int ksz_pirq_setup(struct ksz_device *dev, u8 p) @@ -2560,7 +2561,7 @@ int ksz_pirq_setup(struct ksz_device *dev, u8 p) if (!pirq->irq_num) return -EINVAL; - return ksz_irq_common_setup(dev, pirq); + return ksz_irq_common_setup(dev, pirq, &ksz_irq_domain_ops); } void ksz_teardown(struct dsa_switch *ds) diff --git a/drivers/net/dsa/microchip/ksz_common.h b/drivers/net/dsa/microchip/ksz_common.h index acaf70e6f393..0f2abb22ca91 100644 --- a/drivers/net/dsa/microchip/ksz_common.h +++ b/drivers/net/dsa/microchip/ksz_common.h @@ -8,6 +8,7 @@ #define __KSZ_COMMON_H #include +#include #include #include #include @@ -508,6 +509,10 @@ int ksz_sw_mdio_write(struct mii_bus *bus, int addr, int regnum, u16 val); int ksz_parent_mdio_read(struct mii_bus *bus, int addr, int regnum); int ksz_parent_mdio_write(struct mii_bus *bus, int addr, int regnum, u16 val); int ksz_mdio_register(struct ksz_device *dev); +void ksz_irq_bus_lock(struct irq_data *d); +void ksz_irq_bus_sync_unlock(struct irq_data *d); +int ksz_irq_common_setup(struct ksz_device *dev, struct ksz_irq *kirq, + const struct irq_domain_ops *ops); int ksz_pirq_setup(struct ksz_device *dev, u8 p); int ksz_girq_setup(struct ksz_device *dev); void ksz_irq_free(struct ksz_irq *kirq);