At Sun, 12 Apr 2015 18:06:16 +0530, Subhransu S. Prusty wrote:
From: Jeeja KP jeeja.kp@intel.com
This will be used by controller legacy and SKL driver
Signed-off-by: Jeeja KP jeeja.kp@intel.com Signed-off-by: Subhransu S. Prusty subhransu.s.prusty@intel.com Signed-off-by: Vinod Koul vinod.koul@intel.com
include/sound/hdaudio.h | 1 + sound/hda/hdac_controller.c | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+)
diff --git a/include/sound/hdaudio.h b/include/sound/hdaudio.h index 1f9f4ec..2d62410 100644 --- a/include/sound/hdaudio.h +++ b/include/sound/hdaudio.h @@ -293,6 +293,7 @@ void snd_hdac_bus_update_rirb(struct hdac_bus *bus); void snd_hdac_bus_handle_stream_irq(struct hdac_bus *bus, unsigned int status, void (*ack)(struct hdac_bus *, struct hdac_stream *)); +irqreturn_t snd_hdac_bus_interrupt(int irq, void *dev_id);
int snd_hdac_bus_alloc_stream_pages(struct hdac_bus *bus); void snd_hdac_bus_free_stream_pages(struct hdac_bus *bus); diff --git a/sound/hda/hdac_controller.c b/sound/hda/hdac_controller.c index 4d4e0d6..831cc0d 100644 --- a/sound/hda/hdac_controller.c +++ b/sound/hda/hdac_controller.c @@ -5,6 +5,7 @@ #include <linux/kernel.h> #include <linux/delay.h> #include <linux/export.h> +#include <linux/pm_runtime.h> #include <sound/core.h> #include <sound/hdaudio.h> #include <sound/hda_registers.h> @@ -381,6 +382,29 @@ EXPORT_SYMBOL_GPL(snd_hdac_bus_stop_chip); /*
- interrupt handler
*/ +irqreturn_t snd_hdac_bus_interrupt(int irq, void *dev_id) +{
- struct hdac_bus *chip = dev_id;
- u32 status;
+#ifdef CONFIG_PM
- if (!pm_runtime_active(chip->dev))
return IRQ_NONE;
+#endif
- spin_lock(&chip->reg_lock);
- status = azx_readl(chip, INTSTS);
- if (status == 0 || status == 0xffffffff) {
spin_unlock(&chip->reg_lock);
return IRQ_NONE;
- }
- spin_unlock(&chip->reg_lock);
- return IRQ_WAKE_THREAD;
+} +EXPORT_SYMBOL_GPL(snd_hdac_bus_interrupt);
Again, this is specific to ASoC driver, so let's keep it local.
thanks,
Takashi