@@ -2156,6 +2156,14 @@ static int pl330_config(struct dma_chan *chan,
return 0;
}
+static int pl330_quirks(struct dma_chan *chan)
+{
+ struct dma_pl330_chan *pch = to_pchan(chan);
+ struct pl330_dmac *pl330 = pch->dmac;
+
+ return pl330->quirks;
+}
+
static int pl330_terminate_all(struct dma_chan *chan)
{
struct dma_pl330_chan *pch = to_pchan(chan);
@@ -2928,6 +2936,7 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
pd->device_tx_status = pl330_tx_status;
pd->device_prep_slave_sg = pl330_prep_slave_sg;
pd->device_config = pl330_config;
+ pd->device_get_quirks = pl330_quirks;
pd->device_pause = pl330_pause;
pd->device_terminate_all = pl330_terminate_all;
pd->device_issue_pending = pl330_issue_pending;
By adding this function, slave device can query quirks from pl330 if they need special settings for dmaengine. Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com> --- Changes in v5: None Changes in v4: None Changes in v3: None Changes in v2: None Changes in v1: None drivers/dma/pl330.c | 9 +++++++++ 1 file changed, 9 insertions(+)