soundwire: intel_init: add implementation of sdw_intel_enable_irq()
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Thu, 16 Jul 2020 15:09:43 +0000 (23:09 +0800)
committerVinod Koul <vkoul@kernel.org>
Tue, 21 Jul 2020 10:35:40 +0000 (16:05 +0530)
This function is required to enable all interrupts across all links.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20200716150947.22119-6-yung-chuan.liao@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/soundwire/intel_init.c

index f50a931..d8f0c14 100644 (file)
@@ -142,6 +142,30 @@ sdw_intel_scan_controller(struct sdw_intel_acpi_info *info)
        return 0;
 }
 
+#define HDA_DSP_REG_ADSPIC2             (0x10)
+#define HDA_DSP_REG_ADSPIS2             (0x14)
+#define HDA_DSP_REG_ADSPIC2_SNDW        BIT(5)
+
+/**
+ * sdw_intel_enable_irq() - enable/disable Intel SoundWire IRQ
+ * @mmio_base: The mmio base of the control register
+ * @enable: true if enable
+ */
+void sdw_intel_enable_irq(void __iomem *mmio_base, bool enable)
+{
+       u32 val;
+
+       val = readl(mmio_base + HDA_DSP_REG_ADSPIC2);
+
+       if (enable)
+               val |= HDA_DSP_REG_ADSPIC2_SNDW;
+       else
+               val &= ~HDA_DSP_REG_ADSPIC2_SNDW;
+
+       writel(val, mmio_base + HDA_DSP_REG_ADSPIC2);
+}
+EXPORT_SYMBOL(sdw_intel_enable_irq);
+
 static struct sdw_intel_ctx
 *sdw_intel_probe_controller(struct sdw_intel_res *res)
 {