Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3750c140 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull slave-dma fixes from Vinod Koul:
 "This request brings you two small fixes.  First one for fixing
  dereference of freed descriptor and second for fixing sdma bindings
  for it to work for imx25.

  I was planning to send this about 10days ago but then I had to proceed
  on my paternity leave and didnt get chance to send this.  Now got a
  bit of time from dady duties :)"

* 'fixes' of git://git.infradead.org/users/vkoul/slave-dma:
  dma: sdma: Add imx25 compatible
  dma: ste_dma40: don't dereference free:d descriptor
parents 751a03c3 63edea16
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
* Freescale Smart Direct Memory Access (SDMA) Controller for i.MX

Required properties:
- compatible : Should be "fsl,imx31-sdma", "fsl,imx31-to1-sdma",
  "fsl,imx31-to2-sdma", "fsl,imx35-sdma", "fsl,imx35-to1-sdma",
  "fsl,imx35-to2-sdma", "fsl,imx51-sdma", "fsl,imx53-sdma" or
  "fsl,imx6q-sdma". The -to variants should be preferred since they
  allow to determnine the correct ROM script addresses needed for
  the driver to work without additional firmware.
- compatible : Should be one of
      "fsl,imx25-sdma"
      "fsl,imx31-sdma", "fsl,imx31-to1-sdma", "fsl,imx31-to2-sdma"
      "fsl,imx35-sdma", "fsl,imx35-to1-sdma", "fsl,imx35-to2-sdma"
      "fsl,imx51-sdma"
      "fsl,imx53-sdma"
      "fsl,imx6q-sdma"
  The -to variants should be preferred since they allow to determnine the
  correct ROM script addresses needed for the driver to work without additional
  firmware.
- reg : Should contain SDMA registers location and length
- interrupts : Should contain SDMA interrupt
- #dma-cells : Must be <3>.
+1 −0
Original line number Diff line number Diff line
@@ -449,6 +449,7 @@ static const struct of_device_id sdma_dt_ids[] = {
	{ .compatible = "fsl,imx51-sdma", .data = &sdma_imx51, },
	{ .compatible = "fsl,imx35-sdma", .data = &sdma_imx35, },
	{ .compatible = "fsl,imx31-sdma", .data = &sdma_imx31, },
	{ .compatible = "fsl,imx25-sdma", .data = &sdma_imx25, },
	{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, sdma_dt_ids);
+3 −1
Original line number Diff line number Diff line
@@ -1641,6 +1641,7 @@ static void dma_tasklet(unsigned long data)
	struct d40_chan *d40c = (struct d40_chan *) data;
	struct d40_desc *d40d;
	unsigned long flags;
	bool callback_active;
	dma_async_tx_callback callback;
	void *callback_param;

@@ -1668,6 +1669,7 @@ static void dma_tasklet(unsigned long data)
	}

	/* Callback to client */
	callback_active = !!(d40d->txd.flags & DMA_PREP_INTERRUPT);
	callback = d40d->txd.callback;
	callback_param = d40d->txd.callback_param;

@@ -1690,7 +1692,7 @@ static void dma_tasklet(unsigned long data)

	spin_unlock_irqrestore(&d40c->lock, flags);

	if (callback && (d40d->txd.flags & DMA_PREP_INTERRUPT))
	if (callback_active && callback)
		callback(callback_param);

	return;