mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-29 23:53:32 +00:00
dmaengine fixes for 4.5-rc7
One minor fix on pxa driver to fix the cyclic dma tranfers -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJW2xUkAAoJEHwUBw8lI4NH8vEQANW6zbFFLya5/V7zM8uGDiyT lXFM9fYjuGQ625W+TxKvbQF9nwfYFMFaeGWM10DqhW+uDSMQHWNEmOLlBgVaG57M MRzKXGma6tGpPttANF0uIkv4kLz6FXnZ4RnzEzYaQeZKu1cyoJX0v1Il5KyRSD4S lIBs3PmtCNMeJikDLjPXsChx0hBuB5FXFIXpiD93wAZ8GVPDgIg67mLuCRGO5TuZ mKvRxBlr4AF8XXvEmCOkExADwbD8NlvjbMEM6PNtc3SkB7B7QPtdb8UHW7+ovBYQ i9ws/MXO3dhFCC00c/VHQc5gZB8gltXKk2Bw25ageOAv17lS9HzI5heATUHSDyO9 8TVu6BJq3Cw6qxZ4L9sxv8DWLRZ5VkdokYK7KDpvOUXKQ1RcmE+AKBzr3lVfyU+2 Xji5+/KrVujFi0j2a2QB/jGB0sxHNwuPhIkyUvKuG3bSD6AbSKDKLnHDtkvE21Fx wwFMMN7Y/mebEHcPi3pVjs5nPwshItfUoAjUwzquUxv6qkCAf+kKp3681PnAxk3t nDSNIy1SjH3VnqBc9N7ngmYmNn9gnAxVnPQ82zWNT0Ifqtjga2bqWRAqvvs/8dxO tiCrQzP7G1NwVLYVoQpahe8lCKZG4jvLPFlD4Il0j4om0kddIkShF0MpSHp3B5B8 Ten2XNlyUltGWo8kdyxH =2qcB -----END PGP SIGNATURE----- Merge tag 'dmaengine-fix-4.5-rc7' of git://git.infradead.org/users/vkoul/slave-dma Pull dmaengine fix from Vinod Koul: "One minor fix on pxa driver to fix the cyclic dma tranfers" * tag 'dmaengine-fix-4.5-rc7' of git://git.infradead.org/users/vkoul/slave-dma: dmaengine: pxa_dma: fix cyclic transfers
This commit is contained in:
commit
40fea2ed0b
1 changed files with 7 additions and 1 deletions
|
@ -583,6 +583,8 @@ static void set_updater_desc(struct pxad_desc_sw *sw_desc,
|
||||||
(PXA_DCMD_LENGTH & sizeof(u32));
|
(PXA_DCMD_LENGTH & sizeof(u32));
|
||||||
if (flags & DMA_PREP_INTERRUPT)
|
if (flags & DMA_PREP_INTERRUPT)
|
||||||
updater->dcmd |= PXA_DCMD_ENDIRQEN;
|
updater->dcmd |= PXA_DCMD_ENDIRQEN;
|
||||||
|
if (sw_desc->cyclic)
|
||||||
|
sw_desc->hw_desc[sw_desc->nb_desc - 2]->ddadr = sw_desc->first;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool is_desc_completed(struct virt_dma_desc *vd)
|
static bool is_desc_completed(struct virt_dma_desc *vd)
|
||||||
|
@ -673,6 +675,10 @@ static irqreturn_t pxad_chan_handler(int irq, void *dev_id)
|
||||||
dev_dbg(&chan->vc.chan.dev->device,
|
dev_dbg(&chan->vc.chan.dev->device,
|
||||||
"%s(): checking txd %p[%x]: completed=%d\n",
|
"%s(): checking txd %p[%x]: completed=%d\n",
|
||||||
__func__, vd, vd->tx.cookie, is_desc_completed(vd));
|
__func__, vd, vd->tx.cookie, is_desc_completed(vd));
|
||||||
|
if (to_pxad_sw_desc(vd)->cyclic) {
|
||||||
|
vchan_cyclic_callback(vd);
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (is_desc_completed(vd)) {
|
if (is_desc_completed(vd)) {
|
||||||
list_del(&vd->node);
|
list_del(&vd->node);
|
||||||
vchan_cookie_complete(vd);
|
vchan_cookie_complete(vd);
|
||||||
|
@ -1080,7 +1086,7 @@ pxad_prep_dma_cyclic(struct dma_chan *dchan,
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
pxad_get_config(chan, dir, &dcmd, &dsadr, &dtadr);
|
pxad_get_config(chan, dir, &dcmd, &dsadr, &dtadr);
|
||||||
dcmd |= PXA_DCMD_ENDIRQEN | (PXA_DCMD_LENGTH | period_len);
|
dcmd |= PXA_DCMD_ENDIRQEN | (PXA_DCMD_LENGTH & period_len);
|
||||||
dev_dbg(&chan->vc.chan.dev->device,
|
dev_dbg(&chan->vc.chan.dev->device,
|
||||||
"%s(): buf_addr=0x%lx len=%zu period=%zu dir=%d flags=%lx\n",
|
"%s(): buf_addr=0x%lx len=%zu period=%zu dir=%d flags=%lx\n",
|
||||||
__func__, (unsigned long)buf_addr, len, period_len, dir, flags);
|
__func__, (unsigned long)buf_addr, len, period_len, dir, flags);
|
||||||
|
|
Loading…
Reference in a new issue