* TODO: support interrupt mode selection with kernel parameter
* support msi multiple vectors
*/
-#if IS_ENABLED(CONFIG_PCI)
ret = pci_alloc_irq_vectors(pci, 1, 1, PCI_IRQ_MSI);
-#endif
if (ret < 0) {
dev_info(sdev->dev, "use legacy interrupt mode\n");
/*
sdev->msi_enabled = 0;
} else {
dev_info(sdev->dev, "use msi interrupt mode\n");
-#if IS_ENABLED(CONFIG_PCI)
hdev->irq = pci_irq_vector(pci, 0);
-#endif
/* ipc irq number is the same of hda irq */
sdev->ipc_irq = hdev->irq;
sdev->msi_enabled = 1;
free_hda_irq:
free_irq(hdev->irq, bus);
free_irq_vector:
-#if IS_ENABLED(CONFIG_PCI)
if (sdev->msi_enabled)
pci_free_irq_vectors(pci);
-#endif
free_streams:
hda_dsp_stream_free(sdev);
/* dsp_unmap: not currently used */
{
struct sof_intel_hda_dev *hda = sdev->pdata->hw_pdata;
struct hdac_bus *bus = sof_to_bus(sdev);
+ struct pci_dev *pci = to_pci_dev(sdev->dev);
const struct sof_intel_dsp_desc *chip = hda->desc;
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA)
free_irq(sdev->ipc_irq, sdev);
free_irq(hda->irq, bus);
-#if IS_ENABLED(CONFIG_PCI)
- if (sdev->msi_enabled) {
- struct pci_dev *pci = to_pci_dev(sdev->dev);
+ if (sdev->msi_enabled)
pci_free_irq_vectors(pci);
- }
-#endif
hda_dsp_stream_free(sdev);
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA)
if (!sof_pdata)
return -ENOMEM;
-#if IS_ENABLED(CONFIG_PCI)
ret = pcim_enable_device(pci);
if (ret < 0)
return ret;
-#endif
ret = pci_request_regions(pci, "Audio DSP");
if (ret < 0)
};
MODULE_DEVICE_TABLE(pci, sof_pci_ids);
-#if IS_ENABLED(CONFIG_PCI)
/* pci_driver definition */
static struct pci_driver snd_sof_pci_driver = {
.name = "sof-audio-pci",
},
};
module_pci_driver(snd_sof_pci_driver);
-#endif
MODULE_LICENSE("Dual BSD/GPL");