On 14.02.2023 23:26, Mark Brown wrote:Can't you just set `start_dma_last` on the `mchp_pdmc_dai_component`? In your code you iterate over all the components of the link and if any of them has it set the DMA is started last.
On Tue, Feb 14, 2023 at 10:14:28AM -0800, Lars-Peter Clausen wrote:OK, I will try that and return with a new patch.
On 2/14/23 08:14, Claudiu Beznea wrote:Right, if we need to modify it we either need to select which of
@@ -450,6 +450,8 @@ int snd_dmaengine_pcm_register(struct device *dev,This will break if you have multiple sound cards in the system.
else
driver = &dmaengine_pcm_component;
+ driver->start_dma_last = config->start_dma_last;
dmaengine_pcm_component must stay const.
multiple const structs to register or to take a copy and modify
that. I've not looked at the actual changes yet.
On the other hand do you think the other solution presented in cover letter
would be better? From the cover letter:
"The other solution that was identified for this was to extend the already
existing mechanism around struct snd_soc_dai_link::stop_dma_first. The downside
of this was that a potential struct snd_soc_dai_link::start_dma_last
would have to be populated on sound card driver thus, had to be taken
into account in all sound card drivers. At the moment, the mchp-pdmc is
used only with simple-audio-card. In case of simple-audio-card a new DT
binding would had to be introduced to specify this action on dai-link
descriptions (as of my investigation)."