On 2021-07-30 8:20 PM, Takashi Iwai wrote:
On Fri, 30 Jul 2021 15:59:54 +0200, Cezary Rojewski wrote:
...
Thanks for the input, Takashi. While I welcome the change, have two quick questions:
- Does this impact hw_support_mmap() and its user behavior? i.e. is
there some implicit behavior change that skylake-users may experience along the way?
hw_support_mmap() must return true for this case as long as you've set up the buffer in the right way (either preallocation or managed).
hw_support_mmap() has an 'if' checking substream->ops->mmap. ASoC framework won't assign snd_soc_pcm_component_mmap as mmap-ops in soc_new_pcm() if component_driver didn't provided custom handler.
This makes me believe function's behavior may change but I might as well be missing something here.
- Since snd_pcm_mmap_data() defaults to snd_pcm_lib_default_mmap()
why not update ops assignment - snd_pcm_set_ops() - in such a way that if/else is no longer needed in the former?
Simply put: when the buffer is allocated via snd_pcm_set_managed_buffer*(), you can omit the mmap callback. The only case you need the mmap callback is only when a special buffer is used or it needs a special way of mmap itself.
Comment of my was more of a suggestion i.e. snd_pcm_mmap_data() has an if-statement:
if (substream->ops->mmap) err = substream->ops->mmap(substream, area); else err = snd_pcm_lib-default_mmap(substream, area);
I believe this could be replaced by one-liner with snd_pcm_set_ops() modified: do the validity check + default assignment there instead.
Czarek