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
Unified · Split
| @@ -197,7 +197,7 @@ config AMCC_PPC440SPE_ADMA · 196 unmodified lines | |||
| 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. |
| @@ -182,11 +182,13 @@ static void edma_execute(struct edma_chan *echan) · 181 unmodified lines | |||
| 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 | /* |
| @@ -968,7 +968,17 @@ static struct platform_driver fsl_edma_driver = { · 967 unmodified lines | |||
| 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"); |
| @@ -666,7 +666,7 @@ static struct dma_chan *of_dma_sirfsoc_xlate(struct of_phandle_args *dma_spec, · 665 unmodified lines | |||
| 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); |
| @@ -56,7 +56,7 @@ config VIDEO_VIU · 55 unmodified lines | |||
| 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 |