diff options
| -rw-r--r-- | Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt | 16 | ||||
| -rw-r--r-- | drivers/dma/imx-sdma.c | 1 | ||||
| -rw-r--r-- | drivers/dma/ste_dma40.c | 4 |
3 files changed, 14 insertions, 7 deletions
diff --git a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt index 68b83ecc3850..ee9be9961524 100644 --- a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt +++ b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt | |||
| @@ -1,12 +1,16 @@ | |||
| 1 | * Freescale Smart Direct Memory Access (SDMA) Controller for i.MX | 1 | * Freescale Smart Direct Memory Access (SDMA) Controller for i.MX |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible : Should be "fsl,imx31-sdma", "fsl,imx31-to1-sdma", | 4 | - compatible : Should be one of |
| 5 | "fsl,imx31-to2-sdma", "fsl,imx35-sdma", "fsl,imx35-to1-sdma", | 5 | "fsl,imx25-sdma" |
| 6 | "fsl,imx35-to2-sdma", "fsl,imx51-sdma", "fsl,imx53-sdma" or | 6 | "fsl,imx31-sdma", "fsl,imx31-to1-sdma", "fsl,imx31-to2-sdma" |
| 7 | "fsl,imx6q-sdma". The -to variants should be preferred since they | 7 | "fsl,imx35-sdma", "fsl,imx35-to1-sdma", "fsl,imx35-to2-sdma" |
| 8 | allow to determnine the correct ROM script addresses needed for | 8 | "fsl,imx51-sdma" |
| 9 | the driver to work without additional firmware. | 9 | "fsl,imx53-sdma" |
| 10 | "fsl,imx6q-sdma" | ||
| 11 | The -to variants should be preferred since they allow to determnine the | ||
| 12 | correct ROM script addresses needed for the driver to work without additional | ||
| 13 | firmware. | ||
| 10 | - reg : Should contain SDMA registers location and length | 14 | - reg : Should contain SDMA registers location and length |
| 11 | - interrupts : Should contain SDMA interrupt | 15 | - interrupts : Should contain SDMA interrupt |
| 12 | - #dma-cells : Must be <3>. | 16 | - #dma-cells : Must be <3>. |
diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c index 4e7918339b12..19041cefabb1 100644 --- a/drivers/dma/imx-sdma.c +++ b/drivers/dma/imx-sdma.c | |||
| @@ -449,6 +449,7 @@ static const struct of_device_id sdma_dt_ids[] = { | |||
| 449 | { .compatible = "fsl,imx51-sdma", .data = &sdma_imx51, }, | 449 | { .compatible = "fsl,imx51-sdma", .data = &sdma_imx51, }, |
| 450 | { .compatible = "fsl,imx35-sdma", .data = &sdma_imx35, }, | 450 | { .compatible = "fsl,imx35-sdma", .data = &sdma_imx35, }, |
| 451 | { .compatible = "fsl,imx31-sdma", .data = &sdma_imx31, }, | 451 | { .compatible = "fsl,imx31-sdma", .data = &sdma_imx31, }, |
| 452 | { .compatible = "fsl,imx25-sdma", .data = &sdma_imx25, }, | ||
| 452 | { /* sentinel */ } | 453 | { /* sentinel */ } |
| 453 | }; | 454 | }; |
| 454 | MODULE_DEVICE_TABLE(of, sdma_dt_ids); | 455 | MODULE_DEVICE_TABLE(of, sdma_dt_ids); |
diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c index 00a2de957b23..bf18c786ed40 100644 --- a/drivers/dma/ste_dma40.c +++ b/drivers/dma/ste_dma40.c | |||
| @@ -1641,6 +1641,7 @@ static void dma_tasklet(unsigned long data) | |||
| 1641 | struct d40_chan *d40c = (struct d40_chan *) data; | 1641 | struct d40_chan *d40c = (struct d40_chan *) data; |
| 1642 | struct d40_desc *d40d; | 1642 | struct d40_desc *d40d; |
| 1643 | unsigned long flags; | 1643 | unsigned long flags; |
| 1644 | bool callback_active; | ||
| 1644 | dma_async_tx_callback callback; | 1645 | dma_async_tx_callback callback; |
| 1645 | void *callback_param; | 1646 | void *callback_param; |
| 1646 | 1647 | ||
| @@ -1668,6 +1669,7 @@ static void dma_tasklet(unsigned long data) | |||
| 1668 | } | 1669 | } |
| 1669 | 1670 | ||
| 1670 | /* Callback to client */ | 1671 | /* Callback to client */ |
| 1672 | callback_active = !!(d40d->txd.flags & DMA_PREP_INTERRUPT); | ||
| 1671 | callback = d40d->txd.callback; | 1673 | callback = d40d->txd.callback; |
| 1672 | callback_param = d40d->txd.callback_param; | 1674 | callback_param = d40d->txd.callback_param; |
| 1673 | 1675 | ||
| @@ -1690,7 +1692,7 @@ static void dma_tasklet(unsigned long data) | |||
| 1690 | 1692 | ||
| 1691 | spin_unlock_irqrestore(&d40c->lock, flags); | 1693 | spin_unlock_irqrestore(&d40c->lock, flags); |
| 1692 | 1694 | ||
| 1693 | if (callback && (d40d->txd.flags & DMA_PREP_INTERRUPT)) | 1695 | if (callback_active && callback) |
| 1694 | callback(callback_param); | 1696 | callback(callback_param); |
| 1695 | 1697 | ||
| 1696 | return; | 1698 | return; |
