diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-20 13:35:31 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-20 13:35:31 -0400 |
commit | 372feacb36211faf18326cfddea85d69b9afe2e5 (patch) | |
tree | af9758c01d5c05c073ec57e84777a9985862dbf3 | |
parent | 5269519f9f05888bf52c4b71ed84d37c03c8aadb (diff) | |
parent | 8edc51c197b8f409bef7b21755254e6f3ce7ed23 (diff) |
Merge branch 'fixes' of git://git.infradead.org/users/vkoul/slave-dma
Pull slave-dmaengine fixes from Vinod Koul:
"Back from long weekend here in India and now the time to send fixes
for slave dmaengine.
- Dan's fix of sirf xlate code
- Jean's fix for timberland
- edma fixes by Sekhar for SG handling and Yuan for changing init
call"
* 'fixes' of git://git.infradead.org/users/vkoul/slave-dma:
dma: fix eDMA driver as a subsys_initcall
dmaengine: sirf: off by one in of_dma_sirfsoc_xlate()
platform: Fix timberdale dependencies
dma: edma: fix incorrect SG list handling
-rw-r--r-- | drivers/dma/Kconfig | 2 | ||||
-rw-r--r-- | drivers/dma/edma.c | 6 | ||||
-rw-r--r-- | drivers/dma/fsl-edma.c | 12 | ||||
-rw-r--r-- | drivers/dma/sirf-dma.c | 2 | ||||
-rw-r--r-- | drivers/media/platform/Kconfig | 2 |
5 files changed, 18 insertions, 6 deletions
diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig index ba06d1d2f99e..5c5863842de9 100644 --- a/drivers/dma/Kconfig +++ b/drivers/dma/Kconfig | |||
@@ -197,7 +197,7 @@ config AMCC_PPC440SPE_ADMA | |||
197 | 197 | ||
198 | config TIMB_DMA | 198 | config TIMB_DMA |
199 | tristate "Timberdale FPGA DMA support" | 199 | tristate "Timberdale FPGA DMA support" |
200 | depends on MFD_TIMBERDALE || HAS_IOMEM | 200 | depends on MFD_TIMBERDALE |
201 | select DMA_ENGINE | 201 | select DMA_ENGINE |
202 | help | 202 | help |
203 | Enable support for the Timberdale FPGA DMA engine. | 203 | Enable support for the Timberdale FPGA DMA engine. |
diff --git a/drivers/dma/edma.c b/drivers/dma/edma.c index cd04eb7b182e..926360c2db6a 100644 --- a/drivers/dma/edma.c +++ b/drivers/dma/edma.c | |||
@@ -182,11 +182,13 @@ static void edma_execute(struct edma_chan *echan) | |||
182 | echan->ecc->dummy_slot); | 182 | echan->ecc->dummy_slot); |
183 | } | 183 | } |
184 | 184 | ||
185 | edma_resume(echan->ch_num); | ||
186 | |||
187 | if (edesc->processed <= MAX_NR_SG) { | 185 | if (edesc->processed <= MAX_NR_SG) { |
188 | dev_dbg(dev, "first transfer starting %d\n", echan->ch_num); | 186 | dev_dbg(dev, "first transfer starting %d\n", echan->ch_num); |
189 | edma_start(echan->ch_num); | 187 | edma_start(echan->ch_num); |
188 | } else { | ||
189 | dev_dbg(dev, "chan: %d: completed %d elements, resuming\n", | ||
190 | echan->ch_num, edesc->processed); | ||
191 | edma_resume(echan->ch_num); | ||
190 | } | 192 | } |
191 | 193 | ||
192 | /* | 194 | /* |
diff --git a/drivers/dma/fsl-edma.c b/drivers/dma/fsl-edma.c index 381e793184ba..b396a7fb53ab 100644 --- a/drivers/dma/fsl-edma.c +++ b/drivers/dma/fsl-edma.c | |||
@@ -968,7 +968,17 @@ static struct platform_driver fsl_edma_driver = { | |||
968 | .remove = fsl_edma_remove, | 968 | .remove = fsl_edma_remove, |
969 | }; | 969 | }; |
970 | 970 | ||
971 | module_platform_driver(fsl_edma_driver); | 971 | static int __init fsl_edma_init(void) |
972 | { | ||
973 | return platform_driver_register(&fsl_edma_driver); | ||
974 | } | ||
975 | subsys_initcall(fsl_edma_init); | ||
976 | |||
977 | static void __exit fsl_edma_exit(void) | ||
978 | { | ||
979 | platform_driver_unregister(&fsl_edma_driver); | ||
980 | } | ||
981 | module_exit(fsl_edma_exit); | ||
972 | 982 | ||
973 | MODULE_ALIAS("platform:fsl-edma"); | 983 | MODULE_ALIAS("platform:fsl-edma"); |
974 | MODULE_DESCRIPTION("Freescale eDMA engine driver"); | 984 | MODULE_DESCRIPTION("Freescale eDMA engine driver"); |
diff --git a/drivers/dma/sirf-dma.c b/drivers/dma/sirf-dma.c index a1bd8298d55f..03f7820fa333 100644 --- a/drivers/dma/sirf-dma.c +++ b/drivers/dma/sirf-dma.c | |||
@@ -666,7 +666,7 @@ static struct dma_chan *of_dma_sirfsoc_xlate(struct of_phandle_args *dma_spec, | |||
666 | struct sirfsoc_dma *sdma = ofdma->of_dma_data; | 666 | struct sirfsoc_dma *sdma = ofdma->of_dma_data; |
667 | unsigned int request = dma_spec->args[0]; | 667 | unsigned int request = dma_spec->args[0]; |
668 | 668 | ||
669 | if (request > SIRFSOC_DMA_CHANNELS) | 669 | if (request >= SIRFSOC_DMA_CHANNELS) |
670 | return NULL; | 670 | return NULL; |
671 | 671 | ||
672 | return dma_get_slave_channel(&sdma->channels[request].chan); | 672 | return dma_get_slave_channel(&sdma->channels[request].chan); |
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig index c137abfa0c54..20f1655e6d75 100644 --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig | |||
@@ -56,7 +56,7 @@ config VIDEO_VIU | |||
56 | 56 | ||
57 | config VIDEO_TIMBERDALE | 57 | config VIDEO_TIMBERDALE |
58 | tristate "Support for timberdale Video In/LogiWIN" | 58 | tristate "Support for timberdale Video In/LogiWIN" |
59 | depends on VIDEO_V4L2 && I2C && DMADEVICES | 59 | depends on MFD_TIMBERDALE && VIDEO_V4L2 && I2C && DMADEVICES |
60 | select DMA_ENGINE | 60 | select DMA_ENGINE |
61 | select TIMB_DMA | 61 | select TIMB_DMA |
62 | select VIDEO_ADV7180 | 62 | select VIDEO_ADV7180 |