On 28/05/2020 11:57, EastL wrote: > This patch add dma mask for capability. > > Change-Id: I31f4622f9541d769702029532e5f5f185815dda2 No Change-Id in the commit message please. > Signed-off-by: EastL <EastL.Lee@xxxxxxxxxxxx> > --- > drivers/dma/mediatek/mtk-cqdma.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/drivers/dma/mediatek/mtk-cqdma.c b/drivers/dma/mediatek/mtk-cqdma.c > index bca7118..1805a76 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; > }; > @@ -549,6 +551,7 @@ static void mtk_cqdma_hw_deinit(struct mtk_cqdma_device *cqdma) > }; > MODULE_DEVICE_TABLE(of, mtk_cqdma_match); > > +static u64 cqdma_dmamask; > static int mtk_cqdma_probe(struct platform_device *pdev) > { > struct mtk_cqdma_device *cqdma; > @@ -607,6 +610,16 @@ static int mtk_cqdma_probe(struct platform_device *pdev) > cqdma->dma_channels = MTK_CQDMA_NR_PCHANS; > } > > + if (pdev->dev.of_node && of_property_read_u32(pdev->dev.of_node, > + "dma-channel-mask", > + &cqdma->dma_mask)) { I'd prefer: if (pdev->dev.of_node) ret = of_property_read_u32(pdev->dev.of_node, "dma-channel-mask", &cqdma->dma_mask)) if (ret) { dev_warn(&pdev->dev, "Using 0 as missing dma-channel-mask property\n"); cqdma->dma_mask = 0; } > + dev_info(&pdev->dev, > + "Using 0 as missing dma-channel-mask property\n"); dev_warn should be OK. > + } else { > + cqdma_dmamask = DMA_BIT_MASK(cqdma->dma_mask); > + pdev->dev.dma_mask = &cqdma_dmamask; if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(cqdma->dma_mask)) { /* error out */ } > + } > + > cqdma->pc = devm_kcalloc(&pdev->dev, cqdma->dma_channels, > sizeof(*cqdma->pc), GFP_KERNEL); > if (!cqdma->pc) >