From: Takashi Iwai <tiwai@suse.de>
To: jeeja.kp@intel.com
Cc: alsa-devel@alsa-project.org,
Dharageswari R <dharageswari.r@intel.com>,
patches.audio@intel.com, Hardik T Shah <hardik.t.shah@intel.com>,
broonie@kernel.org, liam.r.girdwood@intel.com
Subject: Re: [PATCH v2 09/11] ASoC: Intel: Skylake: Fix DMA position reporting for capture stream
Date: Fri, 24 Mar 2017 19:38:19 +0100 [thread overview]
Message-ID: <s5hpoh6ed0k.wl-tiwai@suse.de> (raw)
In-Reply-To: <1490377234-30257-10-git-send-email-jeeja.kp@intel.com>
On Fri, 24 Mar 2017 18:40:32 +0100,
jeeja.kp@intel.com wrote:
>
> From: Hardik T Shah <hardik.t.shah@intel.com>
>
> As per hardware recommendation, for every capture stream completion
> following operations need to be done in order to reflect the actual
> data that is received in position buffer.
>
> 1. Wait for 20us before reading the DMA position in buffer once the
> interrupt is generated for stream completion.
> 2. Read any of the register to flush the DMA position value. This is
> dummy read operation.
Are these workarounds needed for the legacy driver?
If yes, which chips require it?
thanks,
Takashi
>
> Signed-off-by: Dharageswari R <dharageswari.r@intel.com>
> Signed-off-by: Hardik T Shah <hardik.t.shah@intel.com>
> Signed-off-by: Jeeja KP <jeeja.kp@intel.com>
> ---
> sound/soc/intel/skylake/skl-pcm.c | 23 +++++++++++++++++++++--
> 1 file changed, 21 insertions(+), 2 deletions(-)
>
> diff --git a/sound/soc/intel/skylake/skl-pcm.c b/sound/soc/intel/skylake/skl-pcm.c
> index ef440d8..1823197 100644
> --- a/sound/soc/intel/skylake/skl-pcm.c
> +++ b/sound/soc/intel/skylake/skl-pcm.c
> @@ -21,6 +21,7 @@
>
> #include <linux/pci.h>
> #include <linux/pm_runtime.h>
> +#include <linux/delay.h>
> #include <sound/pcm_params.h>
> #include <sound/soc.h>
> #include "skl.h"
> @@ -1063,13 +1064,31 @@ static snd_pcm_uframes_t skl_platform_pcm_pointer
> * HAD space reflects the actual data that is transferred.
> * Use the position buffer for capture, as DPIB write gets
> * completed earlier than the actual data written to the DDR.
> + *
> + * For capture stream following workaround is required to fix the
> + * incorrect position reporting.
> + *
> + * 1. Wait for 20us before reading the DMA position in buffer once
> + * the interrupt is generated for stream completion as update happens
> + * on the HDA frame boundary i.e. 20.833uSec.
> + * 2. Read DPIB register to flush the DMA position value. This dummy
> + * read is required to flush DMA position value.
> + * 3. Read the DMA Position-in-Buffer. This value now will be equal to
> + * or greater than period boundary.
> */
> - if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
> +
> + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
> pos = readl(ebus->bus.remap_addr + AZX_REG_VS_SDXDPIB_XBASE +
> (AZX_REG_VS_SDXDPIB_XINTERVAL *
> hdac_stream(hstream)->index));
> - else
> + } else {
> + udelay(20);
> + readl(ebus->bus.remap_addr +
> + AZX_REG_VS_SDXDPIB_XBASE +
> + (AZX_REG_VS_SDXDPIB_XINTERVAL *
> + hdac_stream(hstream)->index));
> pos = snd_hdac_stream_get_pos_posbuf(hdac_stream(hstream));
> + }
>
> if (pos >= hdac_stream(hstream)->bufsize)
> pos = 0;
> --
> 2.5.0
>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
next prev parent reply other threads:[~2017-03-24 18:38 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-24 17:40 [PATCH v2 00/11] ASoC: Intel: Skylake: More driver updates jeeja.kp
2017-03-24 17:40 ` [PATCH v2 01/11] ALSA: hda: Fix LLCH register read jeeja.kp
2017-03-24 18:37 ` Takashi Iwai
2017-03-24 17:40 ` [PATCH v2 02/11] ASoC: Intel: Skylake: Use the sig_bits to define dai bps capability jeeja.kp
2017-03-24 17:40 ` [PATCH v2 03/11] ASoC: hdac_hdmi: Update sig_bits based on converter capability jeeja.kp
2017-03-24 17:40 ` [PATCH v2 04/11] ASoC: Intel: Skylake: Add 16-bit constraint to FE bxt_rt298 machine jeeja.kp
2017-03-24 17:40 ` [PATCH v2 05/11] ASoC: Intel: Skylake: Don't unload module when in use jeeja.kp
2017-03-24 17:40 ` [PATCH v2 06/11] ASoC: Intel: Skylake: Remove redundant vmixer handler jeeja.kp
2017-03-24 17:40 ` [PATCH v2 07/11] ASoC: Intel: Skylake: remove hard coded ACPI path jeeja.kp
2017-03-24 17:40 ` [PATCH v2 08/11] ASoC: Intel: Skylake: Rearrangement of code to cleanup SKL SST library jeeja.kp
2017-03-24 17:40 ` [PATCH v2 09/11] ASoC: Intel: Skylake: Fix DMA position reporting for capture stream jeeja.kp
2017-03-24 18:38 ` Takashi Iwai [this message]
2017-03-24 18:43 ` Ughreja, Rakesh A
2017-03-24 18:49 ` Takashi Iwai
2017-03-24 20:51 ` Ughreja, Rakesh A
2017-03-27 10:29 ` Vinod Koul
2017-03-27 13:12 ` Takashi Iwai
2017-03-28 8:45 ` Vinod Koul
2017-03-29 11:54 ` Applied "ASoC: Intel: Skylake: Fix DMA position reporting for capture stream" to the asoc tree Mark Brown
2017-03-24 17:40 ` [PATCH v2 10/11] ASoC: Intel: Skylake: Fix module state after unbind and delete jeeja.kp
2017-03-24 17:40 ` [PATCH v2 11/11] ASoC: Intel: Skylake: Add support for deferred DSP module bind jeeja.kp
2017-03-27 10:31 ` [PATCH v2 00/11] ASoC: Intel: Skylake: More driver updates Vinod Koul
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=s5hpoh6ed0k.wl-tiwai@suse.de \
--to=tiwai@suse.de \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=dharageswari.r@intel.com \
--cc=hardik.t.shah@intel.com \
--cc=jeeja.kp@intel.com \
--cc=liam.r.girdwood@intel.com \
--cc=patches.audio@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.