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@xxxxxxx> Two small comments inline. Once they are addressed, Acked-by: Nicolin Chen <nicoleotsuka@xxxxxxxxx> > --- > 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 + */