Skip to content

Commit

Permalink
SPI: designware: pci: Switch over to MSI interrupts
Browse files Browse the repository at this point in the history
Some devices support MSI interrupts. Let's at least try to use them in
platforms that provide MSI capability.

Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Link: https://lore.kernel.org/r/20191001081405.764161-1-felipe.balbi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
Felipe Balbi authored and Mark Brown committed Oct 1, 2019
1 parent 16c3e05 commit 8f5c285
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions drivers/spi/spi-dw-pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,18 @@ static int spi_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)

/* Get basic io resource and map it */
dws->paddr = pci_resource_start(pdev, pci_bar);
pci_set_master(pdev);

ret = pcim_iomap_regions(pdev, 1 << pci_bar, pci_name(pdev));
if (ret)
return ret;

ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES);
if (ret < 0)
return ret;

dws->regs = pcim_iomap_table(pdev)[pci_bar];
dws->irq = pdev->irq;
dws->irq = pci_irq_vector(pdev, 0);

/*
* Specific handling for platforms, like dma setup,
Expand All @@ -80,12 +85,15 @@ static int spi_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
return ret;
}
} else {
pci_free_irq_vectors(pdev);
return -ENODEV;
}

ret = dw_spi_add_host(&pdev->dev, dws);
if (ret)
if (ret) {
pci_free_irq_vectors(pdev);
return ret;
}

/* PCI hook and SPI hook use the same drv data */
pci_set_drvdata(pdev, dws);
Expand All @@ -101,6 +109,7 @@ static void spi_pci_remove(struct pci_dev *pdev)
struct dw_spi *dws = pci_get_drvdata(pdev);

dw_spi_remove_host(dws);
pci_free_irq_vectors(pdev);
}

#ifdef CONFIG_PM_SLEEP
Expand Down

0 comments on commit 8f5c285

Please sign in to comment.