Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'davinci-for-v4.6/edma' of git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci into next/soc

Merge "DaVinci EDMA enhancements for v4.6" from Sekhar Nori:

Pass dma_slave_map data to EDMA driver. This will help
migration to new DMA engine API for requesting
slave channels dma_request_chan().

* tag 'davinci-for-v4.6/edma' of git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci:
ARM: davinci: dm646x: Add dma_slave_map to edma
ARM: davinci: dm644x: Add dma_slave_map to edma
ARM: davinci: dm365: Add dma_slave_map to edma
ARM: davinci: dm355: Add dma_slave_map to edma
ARM: davinci: devices-da8xx: Add dma_slave_map to edma

+111
+46
arch/arm/mach-davinci/devices-da8xx.c
··· 17 17 #include <linux/ahci_platform.h> 18 18 #include <linux/clk.h> 19 19 #include <linux/reboot.h> 20 + #include <linux/dmaengine.h> 20 21 21 22 #include <mach/cputype.h> 22 23 #include <mach/common.h> ··· 234 233 .size_data = sizeof(da850_edma1_pdata), 235 234 }; 236 235 236 + static const struct dma_slave_map da830_edma_map[] = { 237 + { "davinci-mcasp.0", "rx", EDMA_FILTER_PARAM(0, 0) }, 238 + { "davinci-mcasp.0", "tx", EDMA_FILTER_PARAM(0, 1) }, 239 + { "davinci-mcasp.1", "rx", EDMA_FILTER_PARAM(0, 2) }, 240 + { "davinci-mcasp.1", "tx", EDMA_FILTER_PARAM(0, 3) }, 241 + { "davinci-mcasp.2", "rx", EDMA_FILTER_PARAM(0, 4) }, 242 + { "davinci-mcasp.2", "tx", EDMA_FILTER_PARAM(0, 5) }, 243 + { "spi_davinci.0", "rx", EDMA_FILTER_PARAM(0, 14) }, 244 + { "spi_davinci.0", "tx", EDMA_FILTER_PARAM(0, 15) }, 245 + { "da830-mmc.0", "rx", EDMA_FILTER_PARAM(0, 16) }, 246 + { "da830-mmc.0", "tx", EDMA_FILTER_PARAM(0, 17) }, 247 + { "spi_davinci.1", "rx", EDMA_FILTER_PARAM(0, 18) }, 248 + { "spi_davinci.1", "tx", EDMA_FILTER_PARAM(0, 19) }, 249 + }; 250 + 237 251 int __init da830_register_edma(struct edma_rsv_info *rsv) 238 252 { 239 253 struct platform_device *edma_pdev; 240 254 241 255 da8xx_edma0_pdata.rsv = rsv; 242 256 257 + da8xx_edma0_pdata.slave_map = da830_edma_map; 258 + da8xx_edma0_pdata.slavecnt = ARRAY_SIZE(da830_edma_map); 259 + 243 260 edma_pdev = platform_device_register_full(&da8xx_edma0_device); 244 261 return IS_ERR(edma_pdev) ? PTR_ERR(edma_pdev) : 0; 245 262 } 263 + 264 + static const struct dma_slave_map da850_edma0_map[] = { 265 + { "davinci-mcasp.0", "rx", EDMA_FILTER_PARAM(0, 0) }, 266 + { "davinci-mcasp.0", "tx", EDMA_FILTER_PARAM(0, 1) }, 267 + { "davinci-mcbsp.0", "rx", EDMA_FILTER_PARAM(0, 2) }, 268 + { "davinci-mcbsp.0", "tx", EDMA_FILTER_PARAM(0, 3) }, 269 + { "davinci-mcbsp.1", "rx", EDMA_FILTER_PARAM(0, 4) }, 270 + { "davinci-mcbsp.1", "tx", EDMA_FILTER_PARAM(0, 5) }, 271 + { "spi_davinci.0", "rx", EDMA_FILTER_PARAM(0, 14) }, 272 + { "spi_davinci.0", "tx", EDMA_FILTER_PARAM(0, 15) }, 273 + { "da830-mmc.0", "rx", EDMA_FILTER_PARAM(0, 16) }, 274 + { "da830-mmc.0", "tx", EDMA_FILTER_PARAM(0, 17) }, 275 + { "spi_davinci.1", "rx", EDMA_FILTER_PARAM(0, 18) }, 276 + { "spi_davinci.1", "tx", EDMA_FILTER_PARAM(0, 19) }, 277 + }; 278 + 279 + static const struct dma_slave_map da850_edma1_map[] = { 280 + { "da830-mmc.1", "rx", EDMA_FILTER_PARAM(1, 28) }, 281 + { "da830-mmc.1", "tx", EDMA_FILTER_PARAM(1, 29) }, 282 + }; 246 283 247 284 int __init da850_register_edma(struct edma_rsv_info *rsv[2]) 248 285 { ··· 291 252 da850_edma1_pdata.rsv = rsv[1]; 292 253 } 293 254 255 + da8xx_edma0_pdata.slave_map = da850_edma0_map; 256 + da8xx_edma0_pdata.slavecnt = ARRAY_SIZE(da850_edma0_map); 257 + 294 258 edma_pdev = platform_device_register_full(&da8xx_edma0_device); 295 259 if (IS_ERR(edma_pdev)) { 296 260 pr_warn("%s: Failed to register eDMA0\n", __func__); 297 261 return PTR_ERR(edma_pdev); 298 262 } 263 + 264 + da850_edma1_pdata.slave_map = da850_edma1_map; 265 + da850_edma1_pdata.slavecnt = ARRAY_SIZE(da850_edma1_map); 266 + 299 267 edma_pdev = platform_device_register_full(&da850_edma1_device); 300 268 return IS_ERR(edma_pdev) ? PTR_ERR(edma_pdev) : 0; 301 269 }
+20
arch/arm/mach-davinci/dm355.c
··· 13 13 #include <linux/serial_8250.h> 14 14 #include <linux/platform_device.h> 15 15 #include <linux/dma-mapping.h> 16 + #include <linux/dmaengine.h> 16 17 #include <linux/spi/spi.h> 17 18 #include <linux/platform_data/edma.h> 18 19 #include <linux/platform_data/gpio-davinci.h> ··· 577 576 {-1, -1}, 578 577 }; 579 578 579 + static const struct dma_slave_map dm355_edma_map[] = { 580 + { "davinci-mcbsp.0", "tx", EDMA_FILTER_PARAM(0, 2) }, 581 + { "davinci-mcbsp.0", "rx", EDMA_FILTER_PARAM(0, 3) }, 582 + { "davinci-mcbsp.1", "tx", EDMA_FILTER_PARAM(0, 8) }, 583 + { "davinci-mcbsp.1", "rx", EDMA_FILTER_PARAM(0, 9) }, 584 + { "spi_davinci.2", "tx", EDMA_FILTER_PARAM(0, 10) }, 585 + { "spi_davinci.2", "rx", EDMA_FILTER_PARAM(0, 11) }, 586 + { "spi_davinci.1", "tx", EDMA_FILTER_PARAM(0, 14) }, 587 + { "spi_davinci.1", "rx", EDMA_FILTER_PARAM(0, 15) }, 588 + { "spi_davinci.0", "tx", EDMA_FILTER_PARAM(0, 16) }, 589 + { "spi_davinci.0", "rx", EDMA_FILTER_PARAM(0, 17) }, 590 + { "dm6441-mmc.0", "rx", EDMA_FILTER_PARAM(0, 26) }, 591 + { "dm6441-mmc.0", "tx", EDMA_FILTER_PARAM(0, 27) }, 592 + { "dm6441-mmc.1", "rx", EDMA_FILTER_PARAM(0, 30) }, 593 + { "dm6441-mmc.1", "tx", EDMA_FILTER_PARAM(0, 31) }, 594 + }; 595 + 580 596 static struct edma_soc_info dm355_edma_pdata = { 581 597 .queue_priority_mapping = queue_priority_mapping, 582 598 .default_queue = EVENTQ_1, 599 + .slave_map = dm355_edma_map, 600 + .slavecnt = ARRAY_SIZE(dm355_edma_map), 583 601 }; 584 602 585 603 static struct resource edma_resources[] = {
+22
arch/arm/mach-davinci/dm365.c
··· 17 17 #include <linux/serial_8250.h> 18 18 #include <linux/platform_device.h> 19 19 #include <linux/dma-mapping.h> 20 + #include <linux/dmaengine.h> 20 21 #include <linux/spi/spi.h> 21 22 #include <linux/platform_data/edma.h> 22 23 #include <linux/platform_data/gpio-davinci.h> ··· 863 862 {-1, -1}, 864 863 }; 865 864 865 + static const struct dma_slave_map dm365_edma_map[] = { 866 + { "davinci-mcbsp.0", "tx", EDMA_FILTER_PARAM(0, 2) }, 867 + { "davinci-mcbsp.0", "rx", EDMA_FILTER_PARAM(0, 3) }, 868 + { "davinci_voicecodec", "tx", EDMA_FILTER_PARAM(0, 2) }, 869 + { "davinci_voicecodec", "rx", EDMA_FILTER_PARAM(0, 3) }, 870 + { "spi_davinci.2", "tx", EDMA_FILTER_PARAM(0, 10) }, 871 + { "spi_davinci.2", "rx", EDMA_FILTER_PARAM(0, 11) }, 872 + { "spi_davinci.1", "tx", EDMA_FILTER_PARAM(0, 14) }, 873 + { "spi_davinci.1", "rx", EDMA_FILTER_PARAM(0, 15) }, 874 + { "spi_davinci.0", "tx", EDMA_FILTER_PARAM(0, 16) }, 875 + { "spi_davinci.0", "rx", EDMA_FILTER_PARAM(0, 17) }, 876 + { "spi_davinci.3", "tx", EDMA_FILTER_PARAM(0, 18) }, 877 + { "spi_davinci.3", "rx", EDMA_FILTER_PARAM(0, 19) }, 878 + { "dm6441-mmc.0", "rx", EDMA_FILTER_PARAM(0, 26) }, 879 + { "dm6441-mmc.0", "tx", EDMA_FILTER_PARAM(0, 27) }, 880 + { "dm6441-mmc.1", "rx", EDMA_FILTER_PARAM(0, 30) }, 881 + { "dm6441-mmc.1", "tx", EDMA_FILTER_PARAM(0, 31) }, 882 + }; 883 + 866 884 static struct edma_soc_info dm365_edma_pdata = { 867 885 .queue_priority_mapping = dm365_queue_priority_mapping, 868 886 .default_queue = EVENTQ_3, 887 + .slave_map = dm365_edma_map, 888 + .slavecnt = ARRAY_SIZE(dm365_edma_map), 869 889 }; 870 890 871 891 static struct resource edma_resources[] = {
+12
arch/arm/mach-davinci/dm644x.c
··· 11 11 #include <linux/init.h> 12 12 #include <linux/clk.h> 13 13 #include <linux/serial_8250.h> 14 + #include <linux/dmaengine.h> 14 15 #include <linux/platform_device.h> 15 16 #include <linux/platform_data/edma.h> 16 17 #include <linux/platform_data/gpio-davinci.h> ··· 506 505 {-1, -1}, 507 506 }; 508 507 508 + static const struct dma_slave_map dm644x_edma_map[] = { 509 + { "davinci-mcbsp", "tx", EDMA_FILTER_PARAM(0, 2) }, 510 + { "davinci-mcbsp", "rx", EDMA_FILTER_PARAM(0, 3) }, 511 + { "spi_davinci", "tx", EDMA_FILTER_PARAM(0, 16) }, 512 + { "spi_davinci", "rx", EDMA_FILTER_PARAM(0, 17) }, 513 + { "dm6441-mmc.0", "rx", EDMA_FILTER_PARAM(0, 26) }, 514 + { "dm6441-mmc.0", "tx", EDMA_FILTER_PARAM(0, 27) }, 515 + }; 516 + 509 517 static struct edma_soc_info dm644x_edma_pdata = { 510 518 .queue_priority_mapping = queue_priority_mapping, 511 519 .default_queue = EVENTQ_1, 520 + .slave_map = dm644x_edma_map, 521 + .slavecnt = ARRAY_SIZE(dm644x_edma_map), 512 522 }; 513 523 514 524 static struct resource edma_resources[] = {
+11
arch/arm/mach-davinci/dm646x.c
··· 9 9 * or implied. 10 10 */ 11 11 #include <linux/dma-mapping.h> 12 + #include <linux/dmaengine.h> 12 13 #include <linux/init.h> 13 14 #include <linux/clk.h> 14 15 #include <linux/serial_8250.h> ··· 541 540 {-1, -1}, 542 541 }; 543 542 543 + static const struct dma_slave_map dm646x_edma_map[] = { 544 + { "davinci-mcasp.0", "tx", EDMA_FILTER_PARAM(0, 6) }, 545 + { "davinci-mcasp.0", "rx", EDMA_FILTER_PARAM(0, 9) }, 546 + { "davinci-mcasp.1", "tx", EDMA_FILTER_PARAM(0, 12) }, 547 + { "spi_davinci", "tx", EDMA_FILTER_PARAM(0, 16) }, 548 + { "spi_davinci", "rx", EDMA_FILTER_PARAM(0, 17) }, 549 + }; 550 + 544 551 static struct edma_soc_info dm646x_edma_pdata = { 545 552 .queue_priority_mapping = dm646x_queue_priority_mapping, 546 553 .default_queue = EVENTQ_1, 554 + .slave_map = dm646x_edma_map, 555 + .slavecnt = ARRAY_SIZE(dm646x_edma_map), 547 556 }; 548 557 549 558 static struct resource edma_resources[] = {