Unverified Commit e13ef82a authored by Pierre-Louis Bossart's avatar Pierre-Louis Bossart Committed by Mark Brown
Browse files

ASoC: SOF: add COMPILE_TEST for PCI options



Add COMPILE_TEST and use IS_ENABLED(CONFIG_PCI) to sort out
cross-compilation issues.

Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 8fe751d8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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
+11 −2
Original line number Diff line number Diff line
@@ -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)
+4 −0
Original line number Diff line number Diff line
@@ -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");