summaryrefslogtreecommitdiff
path: root/drivers/mcb/mcb-pci.c
diff options
context:
space:
mode:
authorJohannes Thumshirn <johannes.thumshirn@men.de>2014-04-24 14:35:25 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-05-27 17:38:11 -0700
commit4ec65b77c64504e178d75aaba6ac96f68837416c (patch)
tree573c968f454b51209892fd0ede0c1d56d63f5649 /drivers/mcb/mcb-pci.c
parent2e1c951f5da23faaa60224628f44b100ab212d46 (diff)
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.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/mcb/mcb-pci.c b/drivers/mcb/mcb-pci.c
index 99c742cbfb5b..b59181965643 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)