diff options
Diffstat (limited to 'drivers/dma/sh/rcar-hpbdma.c')
-rw-r--r-- | drivers/dma/sh/rcar-hpbdma.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/dma/sh/rcar-hpbdma.c b/drivers/dma/sh/rcar-hpbdma.c index ebad84591a6e..3083d901a414 100644 --- a/drivers/dma/sh/rcar-hpbdma.c +++ b/drivers/dma/sh/rcar-hpbdma.c | |||
@@ -60,6 +60,7 @@ | |||
60 | #define HPB_DMAE_DSTPR_DMSTP BIT(0) | 60 | #define HPB_DMAE_DSTPR_DMSTP BIT(0) |
61 | 61 | ||
62 | /* DMA status register (DSTSR) bits */ | 62 | /* DMA status register (DSTSR) bits */ |
63 | #define HPB_DMAE_DSTSR_DQSTS BIT(2) | ||
63 | #define HPB_DMAE_DSTSR_DMSTS BIT(0) | 64 | #define HPB_DMAE_DSTSR_DMSTS BIT(0) |
64 | 65 | ||
65 | /* DMA common registers */ | 66 | /* DMA common registers */ |
@@ -286,6 +287,9 @@ static void hpb_dmae_halt(struct shdma_chan *schan) | |||
286 | 287 | ||
287 | ch_reg_write(chan, HPB_DMAE_DCMDR_DQEND, HPB_DMAE_DCMDR); | 288 | ch_reg_write(chan, HPB_DMAE_DCMDR_DQEND, HPB_DMAE_DCMDR); |
288 | ch_reg_write(chan, HPB_DMAE_DSTPR_DMSTP, HPB_DMAE_DSTPR); | 289 | ch_reg_write(chan, HPB_DMAE_DSTPR_DMSTP, HPB_DMAE_DSTPR); |
290 | |||
291 | chan->plane_idx = 0; | ||
292 | chan->first_desc = true; | ||
289 | } | 293 | } |
290 | 294 | ||
291 | static const struct hpb_dmae_slave_config * | 295 | static const struct hpb_dmae_slave_config * |
@@ -385,7 +389,10 @@ static bool hpb_dmae_channel_busy(struct shdma_chan *schan) | |||
385 | struct hpb_dmae_chan *chan = to_chan(schan); | 389 | struct hpb_dmae_chan *chan = to_chan(schan); |
386 | u32 dstsr = ch_reg_read(chan, HPB_DMAE_DSTSR); | 390 | u32 dstsr = ch_reg_read(chan, HPB_DMAE_DSTSR); |
387 | 391 | ||
388 | return (dstsr & HPB_DMAE_DSTSR_DMSTS) == HPB_DMAE_DSTSR_DMSTS; | 392 | if (chan->xfer_mode == XFER_DOUBLE) |
393 | return dstsr & HPB_DMAE_DSTSR_DQSTS; | ||
394 | else | ||
395 | return dstsr & HPB_DMAE_DSTSR_DMSTS; | ||
389 | } | 396 | } |
390 | 397 | ||
391 | static int | 398 | static int |
@@ -510,6 +517,8 @@ static int hpb_dmae_chan_probe(struct hpb_dmae_device *hpbdev, int id) | |||
510 | } | 517 | } |
511 | 518 | ||
512 | schan = &new_hpb_chan->shdma_chan; | 519 | schan = &new_hpb_chan->shdma_chan; |
520 | schan->max_xfer_len = HPB_DMA_TCR_MAX; | ||
521 | |||
513 | shdma_chan_probe(sdev, schan, id); | 522 | shdma_chan_probe(sdev, schan, id); |
514 | 523 | ||
515 | if (pdev->id >= 0) | 524 | if (pdev->id >= 0) |