diff options
author | Johannes Thumshirn <johannes.thumshirn@men.de> | 2014-04-24 12:35:25 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-05-28 00:38:11 (GMT) |
commit | 4ec65b77c64504e178d75aaba6ac96f68837416c (patch) | |
tree | 573c968f454b51209892fd0ede0c1d56d63f5649 /drivers/mcb/mcb-pci.c | |
parent | 2e1c951f5da23faaa60224628f44b100ab212d46 (diff) | |
download | linux-4ec65b77c64504e178d75aaba6ac96f68837416c.tar.xz |
mcb: Add support for shared PCI IRQs
Add support for shared PCI IRQs to mcb and mcb-pci.
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@men.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/mcb/mcb-pci.c')
-rw-r--r-- | drivers/mcb/mcb-pci.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/mcb/mcb-pci.c b/drivers/mcb/mcb-pci.c index 99c742c..b591819 100644 --- a/drivers/mcb/mcb-pci.c +++ b/drivers/mcb/mcb-pci.c @@ -20,6 +20,15 @@ struct priv { void __iomem *base; }; +static int mcb_pci_get_irq(struct mcb_device *mdev) +{ + struct mcb_bus *mbus = mdev->bus; + struct device *dev = mbus->carrier; + struct pci_dev *pdev = to_pci_dev(dev); + + return pdev->irq; +} + static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) { struct priv *priv; @@ -67,7 +76,13 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) pci_set_drvdata(pdev, priv); - priv->bus = mcb_alloc_bus(); + priv->bus = mcb_alloc_bus(&pdev->dev); + if (IS_ERR(priv->bus)) { + ret = PTR_ERR(priv->bus); + goto err_drvdata; + } + + priv->bus->get_irq = mcb_pci_get_irq; ret = chameleon_parse_cells(priv->bus, mapbase, priv->base); if (ret < 0) |