[alsa-devel] [RFC 09/11] ALSA: hda - moved interrupt handler to controller library
Takashi Iwai
tiwai at suse.de
Mon Apr 13 14:01:48 CEST 2015
At Sun, 12 Apr 2015 18:06:16 +0530,
Subhransu S. Prusty wrote:
>
> From: Jeeja KP <jeeja.kp at intel.com>
>
> This will be used by controller legacy and SKL driver
>
> Signed-off-by: Jeeja KP <jeeja.kp at intel.com>
> Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty at intel.com>
> Signed-off-by: Vinod Koul <vinod.koul at 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
More information about the Alsa-devel
mailing list