On Mon, Nov 11, 2019 at 05:18:23PM +0800, Shengjiu Wang wrote:
There are two asrc module in imx8qm, each module has different clock configuration, and the DMA type is EDMA.
So in this patch, we define the new clocks, refine the clock map, and include struct fsl_asrc_soc_data for different soc usage.
The EDMA channel is fixed with each dma request, one dma request corresponding to one dma channel. So we need to request dma channel with dma request of asrc module.
Signed-off-by: Shengjiu Wang shengjiu.wang@nxp.com
Two small comments inline. Once they are addressed,
Acked-by: Nicolin Chen nicoleotsuka@gmail.com
changes in v2
- use !use_edma to wrap code in fsl_asrc_dma
- add Acked-by: Nicolin Chen
changes in v3
- remove the acked-by for commit is updated
- read "fsl,asrc-clk-map" property, and update table clk_map_imx8qm.
sound/soc/fsl/fsl_asrc.c | 112 ++++++++++++++++++++++++++++------- sound/soc/fsl/fsl_asrc.h | 64 +++++++++++++++++++- sound/soc/fsl/fsl_asrc_dma.c | 42 +++++++++---- 3 files changed, 183 insertions(+), 35 deletions(-)
diff --git a/sound/soc/fsl/fsl_asrc.c b/sound/soc/fsl/fsl_asrc.c index a3cfceea7d2f..03de33de8633 100644 --- a/sound/soc/fsl/fsl_asrc.c +++ b/sound/soc/fsl/fsl_asrc.c @@ -964,14 +1001,33 @@ static int fsl_asrc_probe(struct platform_device *pdev)
- } else if (of_device_is_compatible(np, "fsl,imx8qm-asrc")) {
ret = of_property_read_u32(np, "fsl,asrc-clk-map",
&map_idx);
This seems to fit a single line?
diff --git a/sound/soc/fsl/fsl_asrc_dma.c b/sound/soc/fsl/fsl_asrc_dma.c index d6146de9acd2..f871fdb9d1c6 100644 --- a/sound/soc/fsl/fsl_asrc_dma.c +++ b/sound/soc/fsl/fsl_asrc_dma.c @@ -197,21 +197,37 @@ static int fsl_asrc_dma_hw_params(struct snd_soc_component *component,
- /*
* For EDMA DEV_TO_DEV channel, we don't need to configure
* dma_request and dma_request2, we can get dma channel through
* dma_request_slave_channel directly.
* Compare with SDMA channel, EDMA channel is bound with dma
* request event of each peripheral, and it is fixed. Not like SDMA,
* the channel is allocated dynamically. So when DMA is EDMA, we
* can only get EDMA channel through dma-names of Front-End device.
*/
Just trying to make it concise :)
+ /* + * An EDMA DEV_TO_DEV channel is fixed and bound with DMA event of each + * peripheral, unlike SDMA channel that is allocated dynamically. So no + * need to configure dma_request and dma_request2, but get dma_chan via + * dma_request_slave_channel directly with dma name of Front-End device + */