On 28-12-18, 14:36, h00249924 wrote: > From: Youlin Wang <wwx575822@xxxxxxxxxxxxxxxxxxxx> > > There is an new "hisi-pcm-asp-dma-1.0" device added in > "arch/arm64/boot/dts/hisilicon/hi3660.dtsi". > So we have to add a matching id in the driver file: > "{ .compatible = "hisilicon,hisi-pcm-asp-dma-1.0", }" > > And also hisi-pcm-asp dma device needs no setting to the clock. > So we skip this by "if" sentence on id string matching: > "if (strcasecmp((of_id->compatible), (k3_pdma_dt_ids[0].compatible)) == 0)" > > After above this driver will support both k3 and hisi_asp dma hardware. > > Signed-off-by: Youlin Wang <wwx575822@xxxxxxxxxxxxxxxxxxxx> > Signed-off-by: Tanglei Han <hantanglei@xxxxxxxxxx> > Cc: Dan Williams <dan.j.williams@xxxxxxxxx> > Cc: Vinod Koul <vkoul@xxxxxxxxxx> > --- > drivers/dma/k3dma.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/drivers/dma/k3dma.c b/drivers/dma/k3dma.c > index fdec2b6..10eecc2 100644 > --- a/drivers/dma/k3dma.c > +++ b/drivers/dma/k3dma.c > @@ -792,6 +792,7 @@ static int k3_dma_transfer_resume(struct dma_chan *chan) > > static const struct of_device_id k3_pdma_dt_ids[] = { > { .compatible = "hisilicon,k3-dma-1.0", }, > + { .compatible = "hisilicon,hisi-pcm-asp-dma-1.0", }, The binding doc patch should precede this.. > {} > }; > MODULE_DEVICE_TABLE(of, k3_pdma_dt_ids); > @@ -835,10 +836,12 @@ static int k3_dma_probe(struct platform_device *op) > "dma-requests", &d->dma_requests); > } > > - d->clk = devm_clk_get(&op->dev, NULL); > - if (IS_ERR(d->clk)) { > - dev_err(&op->dev, "no dma clk\n"); > - return PTR_ERR(d->clk); > + if (strcasecmp((of_id->compatible), (k3_pdma_dt_ids[0].compatible)) == 0) { > + d->clk = devm_clk_get(&op->dev, NULL); who provides clk in this case? how does this scale if you have another compatible in future for newer version of controller? > + if (IS_ERR(d->clk)) { > + dev_err(&op->dev, "no dma clk\n"); > + return PTR_ERR(d->clk); > + } > } > > irq = platform_get_irq(op, 0); > -- > 1.9.1 -- ~Vinod