OSDN Git Service

ASoC: SOF: add COMPILE_TEST for PCI options
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Thu, 30 May 2019 11:50:15 +0000 (06:50 -0500)
committerMark Brown <broonie@kernel.org>
Thu, 30 May 2019 15:35:26 +0000 (16:35 +0100)
Add COMPILE_TEST and use IS_ENABLED(CONFIG_PCI) to sort out
cross-compilation issues.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/Kconfig
sound/soc/sof/intel/hda.c
sound/soc/sof/sof-pci-dev.c

index a9a1d50..ca3ad33 100644 (file)
@@ -10,7 +10,7 @@ if SND_SOC_SOF_TOPLEVEL
 
 config SND_SOC_SOF_PCI
        tristate "SOF PCI enumeration support"
-       depends on PCI
+       depends on PCI || COMPILE_TEST
        select SND_SOC_SOF
        select SND_SOC_ACPI if ACPI
        select SND_SOC_SOF_OPTIONS
index 7e3980a..5378d47 100644 (file)
@@ -506,7 +506,9 @@ int hda_dsp_probe(struct snd_sof_dev *sdev)
         * 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");
                /*
@@ -518,7 +520,9 @@ int hda_dsp_probe(struct snd_sof_dev *sdev)
                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;
@@ -622,8 +626,10 @@ free_ipc_irq:
 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 */
@@ -638,7 +644,6 @@ int hda_dsp_remove(struct snd_sof_dev *sdev)
 {
        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)
@@ -667,8 +672,12 @@ int hda_dsp_remove(struct snd_sof_dev *sdev)
 
        free_irq(sdev->ipc_irq, sdev);
        free_irq(hda->irq, bus);
-       if (sdev->msi_enabled)
+#if IS_ENABLED(CONFIG_PCI)
+       if (sdev->msi_enabled) {
+               struct pci_dev *pci = to_pci_dev(sdev->dev);
                pci_free_irq_vectors(pci);
+       }
+#endif
 
        hda_dsp_stream_free(sdev);
 #if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA)
index e2b1978..ab58d4f 100644 (file)
@@ -251,9 +251,11 @@ static int sof_pci_probe(struct pci_dev *pci,
        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)
@@ -386,6 +388,7 @@ static const struct pci_device_id sof_pci_ids[] = {
 };
 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",
@@ -397,5 +400,6 @@ static struct pci_driver snd_sof_pci_driver = {
        },
 };
 module_pci_driver(snd_sof_pci_driver);
+#endif
 
 MODULE_LICENSE("Dual BSD/GPL");