![](https://secure.gravatar.com/avatar/5b19e9d0e834ea10ef75803718ad564b.jpg?s=120&d=mm&r=g)
On Thu, 19 Aug 2021 16:45:19 +0200, Hans de Goede wrote:
Hi,
On 8/19/21 4:42 PM, Hans de Goede wrote:
Hi All,
After rebasing a set of bytcr_rt5640 patches, on top of asoc/for-next I noticed that playing back audio would only generate random-noise / buzzing (I did not try recording any audio).
After poking at this for a while I've found the culprit:
2e6b836312a4 ("ASoC: intel: atom: Fix reference to PCM buffer address")
If I revert that single commit then audio on Intel Bay Trail and Cherry Trail devices works fine again with 5.14.
This is with a Fedora 34 userspace using pipewire as audiodaemon
I'm not sure what is going on here, but since the old code changed by the broken commit has worked fine for ages and given where we are in the devel-cycle I think it might be best to just revert 2e6b836312a4 again.
p.s. to be clear I noticed this after rebasing on top of asoc/for-next but the troublesome commit is actually in Linus tree now and thus will hit end users once 5.14 is released.
(the troublesome commit landed in 5.14-rc6 and my previous tests were with 5.14-rc5)
Ah, the commit might be problematic on 5.14 where dma_addr isn't set yet for the CONTINUOUS buffer type (which was fixed in sound.git for-next branch).
Could you try the patch below?
thanks,
Takashi
--- --- a/sound/soc/intel/atom/sst-mfld-platform-pcm.c +++ b/sound/soc/intel/atom/sst-mfld-platform-pcm.c @@ -127,7 +127,7 @@ static void sst_fill_alloc_params(struct snd_pcm_substream *substream, snd_pcm_uframes_t period_size; ssize_t periodbytes; ssize_t buffer_bytes = snd_pcm_lib_buffer_bytes(substream); - u32 buffer_addr = substream->runtime->dma_addr; + u32 buffer_addr = virt_to_phys(substream->runtime->dma_area);
channels = substream->runtime->channels; period_size = substream->runtime->period_size;