From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: [RFC 09/11] ALSA: hda - moved interrupt handler to controller library Date: Mon, 13 Apr 2015 14:01:48 +0200 Message-ID: References: <1428842178-7105-1-git-send-email-subhransu.s.prusty@intel.com> <1428842178-7105-10-git-send-email-subhransu.s.prusty@intel.com> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by alsa0.perex.cz (Postfix) with ESMTP id 24353264F40 for ; Mon, 13 Apr 2015 14:01:50 +0200 (CEST) In-Reply-To: <1428842178-7105-10-git-send-email-subhransu.s.prusty@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: "Subhransu S. Prusty" Cc: alsa-devel@alsa-project.org, patches.audio@intel.com, lgirdwood@gmail.com, Vinod Koul , broonie@kernel.org, Jeeja KP List-Id: alsa-devel@alsa-project.org At Sun, 12 Apr 2015 18:06:16 +0530, Subhransu S. Prusty wrote: > > From: Jeeja KP > > This will be used by controller legacy and SKL driver > > Signed-off-by: Jeeja KP > Signed-off-by: Subhransu S. Prusty > Signed-off-by: Vinod Koul > --- > 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 > #include > #include > +#include > #include > #include > #include > @@ -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