On 16.02.2023 15:53, Lars-Peter Clausen wrote:
EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
On 2/16/23 01:49, Claudiu.Beznea@microchip.com wrote:
On 14.02.2023 23:26, Mark Brown wrote:
On Tue, Feb 14, 2023 at 10:14:28AM -0800, Lars-Peter Clausen wrote:
On 2/14/23 08:14, Claudiu Beznea wrote:
@@ -450,6 +450,8 @@ int snd_dmaengine_pcm_register(struct device *dev, else driver = &dmaengine_pcm_component; + driver->start_dma_last = config->start_dma_last;
This will break if you have multiple sound cards in the system. dmaengine_pcm_component must stay const.
Right, if we need to modify it we either need to select which of multiple const structs to register or to take a copy and modify that. I've not looked at the actual changes yet.
OK, I will try that and return with a new patch.
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)."
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.
Yes, that is also working.
In this patch I chose to have it on DMA component as the operation is specific to DMA... It looked better to me this way. But is true that having it on mchp_pdmc_dai_component wouldn't affect the behavior.
Thank you, Claudiu