Re: [PATCH v3 2/3] dmaengine: add peripheral configuration
From: Vinod Koul <vkoul@kernel.org>
Date: 2020-10-07 11:28:14
Also in:
dmaengine, linux-arm-msm, lkml
From: Vinod Koul <vkoul@kernel.org>
Date: 2020-10-07 11:28:14
Also in:
dmaengine, linux-arm-msm, lkml
Hi Peter, On 02-10-20, 11:48, Peter Ujfalusi wrote:
It depends which is best for the use case. I see the metadata useful when you need to send different metadata/configuration with each transfer. It can be also useful when you need it seldom, but for your use case and setup the dma_slave_config extended with enum dmaengine_peripheral peripheral_type; void *peripheral_config; would be a bit more explicit. I would then deal with the peripheral config in this way: when the DMA driver's device_config is called, I would take the parameters and set a flag that the config needs to be processed as it has changed. In the next prep_slave_sg() then I would prepare the TREs with the config and clear the flag that the next transfer does not need the configuration anymore. In this way each dmaengine_slave_config() will trigger at the next prep_slave_sg time configuration update for the peripheral to be included in the TREs. The set_config would be internal to the DMA driver, clients just need to update the configuration when they need to and everything is taken care of.
Ok I am going to drop the dmaengine_peripheral and make
peripheral_config as as you proposed.
So will add following to dma_slave_config:
void *peripheral_config;
Driver can define the config they would like and use.
We can eventually look at common implementations and try to unify once
we have more users
--
~Vinod