|
@@ -834,6 +834,17 @@ static void rcar_dmac_stop_all_chan(struct rcar_dmac *dmac)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+static int rcar_dmac_chan_pause(struct dma_chan *chan)
|
|
|
+{
|
|
|
+ unsigned long flags;
|
|
|
+ struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan);
|
|
|
+
|
|
|
+ spin_lock_irqsave(&rchan->lock, flags);
|
|
|
+ rcar_dmac_clear_chcr_de(rchan);
|
|
|
+ spin_unlock_irqrestore(&rchan->lock, flags);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
|
|
|
/* -----------------------------------------------------------------------------
|
|
|
* Descriptors preparation
|
|
@@ -1864,6 +1875,7 @@ static int rcar_dmac_probe(struct platform_device *pdev)
|
|
|
engine->device_prep_slave_sg = rcar_dmac_prep_slave_sg;
|
|
|
engine->device_prep_dma_cyclic = rcar_dmac_prep_dma_cyclic;
|
|
|
engine->device_config = rcar_dmac_device_config;
|
|
|
+ engine->device_pause = rcar_dmac_chan_pause;
|
|
|
engine->device_terminate_all = rcar_dmac_chan_terminate_all;
|
|
|
engine->device_tx_status = rcar_dmac_tx_status;
|
|
|
engine->device_issue_pending = rcar_dmac_issue_pending;
|