kernel: bump 4.14 to 4.14.48 for 18.06
[openwrt/openwrt.git] / target / linux / ipq40xx / patches-4.14 / 040-dmaengine-qcom-bam-Process-multiple-pending-descript.patch
index dca516e8783fcb5fcdd285b6d7f5090e7fa52177..881d08c7e5ecd5d1c00a702f76ffb0dfd25e53b2 100644 (file)
@@ -114,7 +114,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
  
        struct list_head node;
  };
-@@ -539,7 +544,7 @@ static void bam_free_chan(struct dma_cha
+@@ -540,7 +545,7 @@ static void bam_free_chan(struct dma_cha
  
        vchan_free_chan_resources(to_virt_chan(chan));
  
@@ -123,7 +123,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
                dev_err(bchan->bdev->dev, "Cannot free busy channel\n");
                goto err;
        }
-@@ -632,8 +637,6 @@ static struct dma_async_tx_descriptor *b
+@@ -633,8 +638,6 @@ static struct dma_async_tx_descriptor *b
  
        if (flags & DMA_PREP_INTERRUPT)
                async_desc->flags |= DESC_FLAG_EOT;
@@ -132,7 +132,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
  
        async_desc->num_desc = num_alloc;
        async_desc->curr_desc = async_desc->desc;
-@@ -684,14 +687,16 @@ err_out:
+@@ -685,14 +688,16 @@ err_out:
  static int bam_dma_terminate_all(struct dma_chan *chan)
  {
        struct bam_chan *bchan = to_bam_chan(chan);
@@ -152,7 +152,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
        }
  
        vchan_get_all_descriptors(&bchan->vc, &head);
-@@ -763,9 +768,9 @@ static int bam_resume(struct dma_chan *c
+@@ -764,9 +769,9 @@ static int bam_resume(struct dma_chan *c
   */
  static u32 process_channel_irqs(struct bam_device *bdev)
  {
@@ -164,7 +164,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
  
        srcs = readl_relaxed(bam_addr(bdev, 0, BAM_IRQ_SRCS_EE));
  
-@@ -785,27 +790,40 @@ static u32 process_channel_irqs(struct b
+@@ -786,27 +791,40 @@ static u32 process_channel_irqs(struct b
                writel_relaxed(pipe_stts, bam_addr(bdev, i, BAM_P_IRQ_CLR));
  
                spin_lock_irqsave(&bchan->vc.lock, flags);
@@ -214,7 +214,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
                }
  
                spin_unlock_irqrestore(&bchan->vc.lock, flags);
-@@ -867,6 +885,7 @@ static enum dma_status bam_tx_status(str
+@@ -868,6 +886,7 @@ static enum dma_status bam_tx_status(str
                struct dma_tx_state *txstate)
  {
        struct bam_chan *bchan = to_bam_chan(chan);
@@ -222,7 +222,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
        struct virt_dma_desc *vd;
        int ret;
        size_t residue = 0;
-@@ -882,11 +901,17 @@ static enum dma_status bam_tx_status(str
+@@ -883,11 +902,17 @@ static enum dma_status bam_tx_status(str
  
        spin_lock_irqsave(&bchan->vc.lock, flags);
        vd = vchan_find_desc(&bchan->vc, cookie);
@@ -244,7 +244,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
  
        spin_unlock_irqrestore(&bchan->vc.lock, flags);
  
-@@ -927,63 +952,86 @@ static void bam_start_dma(struct bam_cha
+@@ -928,63 +953,86 @@ static void bam_start_dma(struct bam_cha
  {
        struct virt_dma_desc *vd = vchan_next_desc(&bchan->vc);
        struct bam_device *bdev = bchan->bdev;
@@ -367,7 +367,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
  
        /* ensure descriptor writes and dma start not reordered */
        wmb();
-@@ -1012,7 +1060,7 @@ static void dma_tasklet(unsigned long da
+@@ -1013,7 +1061,7 @@ static void dma_tasklet(unsigned long da
                bchan = &bdev->channels[i];
                spin_lock_irqsave(&bchan->vc.lock, flags);
  
@@ -376,7 +376,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
                        bam_start_dma(bchan);
                spin_unlock_irqrestore(&bchan->vc.lock, flags);
        }
-@@ -1033,7 +1081,7 @@ static void bam_issue_pending(struct dma
+@@ -1034,7 +1082,7 @@ static void bam_issue_pending(struct dma
        spin_lock_irqsave(&bchan->vc.lock, flags);
  
        /* if work pending and idle, start a transaction */
@@ -385,7 +385,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
                bam_start_dma(bchan);
  
        spin_unlock_irqrestore(&bchan->vc.lock, flags);
-@@ -1133,6 +1181,7 @@ static void bam_channel_init(struct bam_
+@@ -1138,6 +1186,7 @@ static void bam_channel_init(struct bam_
  
        vchan_init(&bchan->vc, &bdev->common);
        bchan->vc.desc_free = bam_dma_free_desc;