* [PATCH v2 1/2] ALSA: hda: fix the missing ptr initialization
@ 2016-05-05 5:54 Vinod Koul
2016-05-05 5:54 ` [PATCH v2 2/2] ALSA: hda: fix to wait for RIRB & CORB DMA to set Vinod Koul
2016-05-08 9:43 ` [PATCH v2 1/2] ALSA: hda: fix the missing ptr initialization Takashi Iwai
0 siblings, 2 replies; 5+ messages in thread
From: Vinod Koul @ 2016-05-05 5:54 UTC (permalink / raw)
To: alsa-devel
Cc: tiwai, patches.audio, liam.r.girdwood, Vinod Koul, broonie,
Jeeja KP
ebus is a member of extended device and was never initialized, so
do this at device creation.
Signed-off-by: Jeeja KP <jeeja.kp@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
---
sound/hda/ext/hdac_ext_bus.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/sound/hda/ext/hdac_ext_bus.c b/sound/hda/ext/hdac_ext_bus.c
index 2433f7c81472..64de0a3d6d93 100644
--- a/sound/hda/ext/hdac_ext_bus.c
+++ b/sound/hda/ext/hdac_ext_bus.c
@@ -144,6 +144,7 @@ int snd_hdac_ext_bus_device_init(struct hdac_ext_bus *ebus, int addr)
if (!edev)
return -ENOMEM;
hdev = &edev->hdac;
+ edev->ebus = ebus;
snprintf(name, sizeof(name), "ehdaudio%dD%d", ebus->idx, addr);
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v2 2/2] ALSA: hda: fix to wait for RIRB & CORB DMA to set
2016-05-05 5:54 [PATCH v2 1/2] ALSA: hda: fix the missing ptr initialization Vinod Koul
@ 2016-05-05 5:54 ` Vinod Koul
2016-05-08 9:45 ` Takashi Iwai
2016-05-08 9:43 ` [PATCH v2 1/2] ALSA: hda: fix the missing ptr initialization Takashi Iwai
1 sibling, 1 reply; 5+ messages in thread
From: Vinod Koul @ 2016-05-05 5:54 UTC (permalink / raw)
To: alsa-devel
Cc: tiwai, patches.audio, liam.r.girdwood, Vinod Koul, broonie,
Jeeja KP
From: Jeeja KP <jeeja.kp@intel.com>
If the DMAs are not being quiesced properly, it may lead to
stability issues, so the recommendation is to wait till DMAs are
stopped.
After setting the stop bit of RIRB/CORB DMA, we should wait for
stop bit to be set.
Signed-off-by: Jeeja KP <jeeja.kp@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
---
changes in v2:
- use common wait routine as suggested by Takashi
sound/hda/hdac_controller.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/sound/hda/hdac_controller.c b/sound/hda/hdac_controller.c
index 8c486235c905..9fee464e5d49 100644
--- a/sound/hda/hdac_controller.c
+++ b/sound/hda/hdac_controller.c
@@ -80,6 +80,22 @@ void snd_hdac_bus_init_cmd_io(struct hdac_bus *bus)
}
EXPORT_SYMBOL_GPL(snd_hdac_bus_init_cmd_io);
+/* wait for cmd dmas till they are stopped */
+static void hdac_wait_for_cmd_dmas(struct hdac_bus *bus)
+{
+ unsigned long timeout;
+
+ timeout = jiffies + msecs_to_jiffies(100);
+ while ((snd_hdac_chip_readb(bus, RIRBCTL) & AZX_RBCTL_DMA_EN)
+ && time_before(jiffies, timeout))
+ udelay(10);
+
+ timeout = jiffies + msecs_to_jiffies(100);
+ while ((snd_hdac_chip_readb(bus, CORBCTL) & AZX_CORBCTL_RUN)
+ && time_before(jiffies, timeout))
+ udelay(10);
+}
+
/**
* snd_hdac_bus_stop_cmd_io - clean up CORB/RIRB buffers
* @bus: HD-audio core bus
@@ -90,6 +106,7 @@ void snd_hdac_bus_stop_cmd_io(struct hdac_bus *bus)
/* disable ringbuffer DMAs */
snd_hdac_chip_writeb(bus, RIRBCTL, 0);
snd_hdac_chip_writeb(bus, CORBCTL, 0);
+ hdac_wait_for_cmd_dmas(bus);
/* disable unsolicited responses */
snd_hdac_chip_updatel(bus, GCTL, AZX_GCTL_UNSOL, 0);
spin_unlock_irq(&bus->reg_lock);
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 1/2] ALSA: hda: fix the missing ptr initialization
2016-05-05 5:54 [PATCH v2 1/2] ALSA: hda: fix the missing ptr initialization Vinod Koul
2016-05-05 5:54 ` [PATCH v2 2/2] ALSA: hda: fix to wait for RIRB & CORB DMA to set Vinod Koul
@ 2016-05-08 9:43 ` Takashi Iwai
1 sibling, 0 replies; 5+ messages in thread
From: Takashi Iwai @ 2016-05-08 9:43 UTC (permalink / raw)
To: Vinod Koul; +Cc: liam.r.girdwood, patches.audio, alsa-devel, broonie, Jeeja KP
On Thu, 05 May 2016 07:54:42 +0200,
Vinod Koul wrote:
>
> ebus is a member of extended device and was never initialized, so
> do this at device creation.
>
> Signed-off-by: Jeeja KP <jeeja.kp@intel.com>
> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Applied, thanks.
Takashi
> ---
> sound/hda/ext/hdac_ext_bus.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/sound/hda/ext/hdac_ext_bus.c b/sound/hda/ext/hdac_ext_bus.c
> index 2433f7c81472..64de0a3d6d93 100644
> --- a/sound/hda/ext/hdac_ext_bus.c
> +++ b/sound/hda/ext/hdac_ext_bus.c
> @@ -144,6 +144,7 @@ int snd_hdac_ext_bus_device_init(struct hdac_ext_bus *ebus, int addr)
> if (!edev)
> return -ENOMEM;
> hdev = &edev->hdac;
> + edev->ebus = ebus;
>
> snprintf(name, sizeof(name), "ehdaudio%dD%d", ebus->idx, addr);
>
> --
> 1.9.1
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2 2/2] ALSA: hda: fix to wait for RIRB & CORB DMA to set
2016-05-05 5:54 ` [PATCH v2 2/2] ALSA: hda: fix to wait for RIRB & CORB DMA to set Vinod Koul
@ 2016-05-08 9:45 ` Takashi Iwai
2016-05-09 4:38 ` Vinod Koul
0 siblings, 1 reply; 5+ messages in thread
From: Takashi Iwai @ 2016-05-08 9:45 UTC (permalink / raw)
To: Vinod Koul; +Cc: liam.r.girdwood, patches.audio, alsa-devel, broonie, Jeeja KP
On Thu, 05 May 2016 07:54:43 +0200,
Vinod Koul wrote:
>
> From: Jeeja KP <jeeja.kp@intel.com>
>
> If the DMAs are not being quiesced properly, it may lead to
> stability issues, so the recommendation is to wait till DMAs are
> stopped.
>
> After setting the stop bit of RIRB/CORB DMA, we should wait for
> stop bit to be set.
>
> Signed-off-by: Jeeja KP <jeeja.kp@intel.com>
> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
> ---
> changes in v2:
> - use common wait routine as suggested by Takashi
>
> sound/hda/hdac_controller.c | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
> diff --git a/sound/hda/hdac_controller.c b/sound/hda/hdac_controller.c
> index 8c486235c905..9fee464e5d49 100644
> --- a/sound/hda/hdac_controller.c
> +++ b/sound/hda/hdac_controller.c
> @@ -80,6 +80,22 @@ void snd_hdac_bus_init_cmd_io(struct hdac_bus *bus)
> }
> EXPORT_SYMBOL_GPL(snd_hdac_bus_init_cmd_io);
>
> +/* wait for cmd dmas till they are stopped */
> +static void hdac_wait_for_cmd_dmas(struct hdac_bus *bus)
> +{
> + unsigned long timeout;
> +
> + timeout = jiffies + msecs_to_jiffies(100);
> + while ((snd_hdac_chip_readb(bus, RIRBCTL) & AZX_RBCTL_DMA_EN)
> + && time_before(jiffies, timeout))
> + udelay(10);
> +
> + timeout = jiffies + msecs_to_jiffies(100);
> + while ((snd_hdac_chip_readb(bus, CORBCTL) & AZX_CORBCTL_RUN)
> + && time_before(jiffies, timeout))
> + udelay(10);
This will end up with doubled timeout. But it doesn't matter so much
in practice. So I applied the patch as is.
thanks,
Takashi
> +}
> +
> /**
> * snd_hdac_bus_stop_cmd_io - clean up CORB/RIRB buffers
> * @bus: HD-audio core bus
> @@ -90,6 +106,7 @@ void snd_hdac_bus_stop_cmd_io(struct hdac_bus *bus)
> /* disable ringbuffer DMAs */
> snd_hdac_chip_writeb(bus, RIRBCTL, 0);
> snd_hdac_chip_writeb(bus, CORBCTL, 0);
> + hdac_wait_for_cmd_dmas(bus);
> /* disable unsolicited responses */
> snd_hdac_chip_updatel(bus, GCTL, AZX_GCTL_UNSOL, 0);
> spin_unlock_irq(&bus->reg_lock);
> --
> 1.9.1
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2 2/2] ALSA: hda: fix to wait for RIRB & CORB DMA to set
2016-05-08 9:45 ` Takashi Iwai
@ 2016-05-09 4:38 ` Vinod Koul
0 siblings, 0 replies; 5+ messages in thread
From: Vinod Koul @ 2016-05-09 4:38 UTC (permalink / raw)
To: Takashi Iwai
Cc: liam.r.girdwood, patches.audio, alsa-devel, broonie, Jeeja KP
On Sun, May 08, 2016 at 11:45:50AM +0200, Takashi Iwai wrote:
> > +/* wait for cmd dmas till they are stopped */
> > +static void hdac_wait_for_cmd_dmas(struct hdac_bus *bus)
> > +{
> > + unsigned long timeout;
> > +
> > + timeout = jiffies + msecs_to_jiffies(100);
> > + while ((snd_hdac_chip_readb(bus, RIRBCTL) & AZX_RBCTL_DMA_EN)
> > + && time_before(jiffies, timeout))
> > + udelay(10);
> > +
> > + timeout = jiffies + msecs_to_jiffies(100);
> > + while ((snd_hdac_chip_readb(bus, CORBCTL) & AZX_CORBCTL_RUN)
> > + && time_before(jiffies, timeout))
> > + udelay(10);
>
> This will end up with doubled timeout. But it doesn't matter so much
> in practice. So I applied the patch as is.
Thanks Takashi
--
~Vinod
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-05-09 4:32 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-05 5:54 [PATCH v2 1/2] ALSA: hda: fix the missing ptr initialization Vinod Koul
2016-05-05 5:54 ` [PATCH v2 2/2] ALSA: hda: fix to wait for RIRB & CORB DMA to set Vinod Koul
2016-05-08 9:45 ` Takashi Iwai
2016-05-09 4:38 ` Vinod Koul
2016-05-08 9:43 ` [PATCH v2 1/2] ALSA: hda: fix the missing ptr initialization Takashi Iwai
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).