On 19/06/2020 10:05, EastL wrote: > This patch add dma mask for capability. > > Signed-off-by: EastL <EastL.Lee@xxxxxxxxxxxx> > --- > drivers/dma/mediatek/mtk-cqdma.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/drivers/dma/mediatek/mtk-cqdma.c b/drivers/dma/mediatek/mtk-cqdma.c > index 905bbcb..ed33c64 100644 > --- a/drivers/dma/mediatek/mtk-cqdma.c > +++ b/drivers/dma/mediatek/mtk-cqdma.c > @@ -117,6 +117,7 @@ struct mtk_cqdma_vchan { > * @clk: The clock that device internal is using > * @dma_requests: The number of VCs the device supports to > * @dma_channels: The number of PCs the device supports to > + * @dma_mask: A mask for DMA capability > * @vc: The pointer to all available VCs > * @pc: The pointer to all the underlying PCs > */ > @@ -126,6 +127,7 @@ struct mtk_cqdma_device { > > u32 dma_requests; > u32 dma_channels; > + u32 dma_mask; > struct mtk_cqdma_vchan *vc; > struct mtk_cqdma_pchan **pc; > }; > @@ -607,6 +609,21 @@ static int mtk_cqdma_probe(struct platform_device *pdev) > cqdma->dma_channels = MTK_CQDMA_NR_PCHANS; > } > > + if (pdev->dev.of_node) > + err = of_property_read_u32(pdev->dev.of_node, > + "dma-channel-mask", > + &cqdma->dma_mask); > + if (err) { > + dev_warn(&pdev->dev, > + "Using 0 as missing dma-channel-mask property\n"); > + cqdma->dma_mask = 0; > + } > + > + if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(cqdma->dma_mask))) { > + dev_warn(&pdev->dev, "DMA set mask fail\n"); fail -> failed With this: Reviewed-by: Matthias Brugger <matthias.bgg@xxxxxxxxx> > + return -EINVAL; > + } > + > cqdma->pc = devm_kcalloc(&pdev->dev, cqdma->dma_channels, > sizeof(*cqdma->pc), GFP_KERNEL); > if (!cqdma->pc) >