Merge branch 'asoc-5.2' into asoc-5.3
[linux-2.6-microblaze.git] / sound / soc / sof / intel / hda.c
index 8f5c688..bb5f02f 100644 (file)
@@ -492,7 +492,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");
                /*
@@ -504,7 +506,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;
@@ -544,13 +548,9 @@ int hda_dsp_probe(struct snd_sof_dev *sdev)
        if (ret < 0)
                goto free_ipc_irq;
 
-       /* enable DSP features */
-       snd_sof_dsp_update_bits(sdev, HDA_DSP_PP_BAR, SOF_HDA_REG_PP_PPCTL,
-                               SOF_HDA_PPCTL_GPROCEN, SOF_HDA_PPCTL_GPROCEN);
-
-       /* enable DSP IRQ */
-       snd_sof_dsp_update_bits(sdev, HDA_DSP_PP_BAR, SOF_HDA_REG_PP_PPCTL,
-                               SOF_HDA_PPCTL_PIE, SOF_HDA_PPCTL_PIE);
+       /* enable ppcap interrupt */
+       hda_dsp_ctrl_ppcap_enable(sdev, true);
+       hda_dsp_ctrl_ppcap_int_enable(sdev, true);
 
        /* initialize waitq for code loading */
        init_waitqueue_head(&sdev->waitq);
@@ -565,8 +565,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 */
@@ -581,7 +583,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)
@@ -610,8 +611,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)