At Tue, 14 Apr 2015 10:13:56 +0530, Vinod Koul wrote:
On Mon, Apr 13, 2015 at 02:01:48PM +0200, Takashi Iwai wrote:
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.
Hmmm, but most of this is based on HDA spec and not doing much wrt driver. Moving to ASoC is fine too... WIll move
The assumption of threaded IRQ alone is driver-specific :)
Takashi