diff options
| -rw-r--r-- | arch/arm/mach-davinci/board-da830-evm.c | 32 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/board-da850-evm.c | 52 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/devices-da8xx.c | 21 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/include/mach/da8xx.h | 3 |
4 files changed, 96 insertions, 12 deletions
diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c index 212d97084bd7..b61e87250b3b 100644 --- a/arch/arm/mach-davinci/board-da830-evm.c +++ b/arch/arm/mach-davinci/board-da830-evm.c | |||
| @@ -494,12 +494,42 @@ static struct davinci_i2c_platform_data da830_evm_i2c_0_pdata = { | |||
| 494 | .bus_delay = 0, /* usec */ | 494 | .bus_delay = 0, /* usec */ |
| 495 | }; | 495 | }; |
| 496 | 496 | ||
| 497 | /* | ||
| 498 | * The following EDMA channels/slots are not being used by drivers (for | ||
| 499 | * example: Timer, GPIO, UART events etc) on da830/omap-l137 EVM, hence | ||
| 500 | * they are being reserved for codecs on the DSP side. | ||
| 501 | */ | ||
| 502 | static const s16 da830_dma_rsv_chans[][2] = { | ||
| 503 | /* (offset, number) */ | ||
| 504 | { 8, 2}, | ||
| 505 | {12, 2}, | ||
| 506 | {24, 4}, | ||
| 507 | {30, 2}, | ||
| 508 | {-1, -1} | ||
| 509 | }; | ||
| 510 | |||
| 511 | static const s16 da830_dma_rsv_slots[][2] = { | ||
| 512 | /* (offset, number) */ | ||
| 513 | { 8, 2}, | ||
| 514 | {12, 2}, | ||
| 515 | {24, 4}, | ||
| 516 | {30, 26}, | ||
| 517 | {-1, -1} | ||
| 518 | }; | ||
| 519 | |||
| 520 | static struct edma_rsv_info da830_edma_rsv[] = { | ||
| 521 | { | ||
| 522 | .rsv_chans = da830_dma_rsv_chans, | ||
| 523 | .rsv_slots = da830_dma_rsv_slots, | ||
| 524 | }, | ||
| 525 | }; | ||
| 526 | |||
| 497 | static __init void da830_evm_init(void) | 527 | static __init void da830_evm_init(void) |
| 498 | { | 528 | { |
| 499 | struct davinci_soc_info *soc_info = &davinci_soc_info; | 529 | struct davinci_soc_info *soc_info = &davinci_soc_info; |
| 500 | int ret; | 530 | int ret; |
| 501 | 531 | ||
| 502 | ret = da8xx_register_edma(); | 532 | ret = da830_register_edma(da830_edma_rsv); |
| 503 | if (ret) | 533 | if (ret) |
| 504 | pr_warning("da830_evm_init: edma registration failed: %d\n", | 534 | pr_warning("da830_evm_init: edma registration failed: %d\n", |
| 505 | ret); | 535 | ret); |
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index 2ec3095ffb7b..ef7d9de4db29 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c | |||
| @@ -629,6 +629,56 @@ static int __init da850_evm_config_emac(void) | |||
| 629 | } | 629 | } |
| 630 | device_initcall(da850_evm_config_emac); | 630 | device_initcall(da850_evm_config_emac); |
| 631 | 631 | ||
| 632 | /* | ||
| 633 | * The following EDMA channels/slots are not being used by drivers (for | ||
| 634 | * example: Timer, GPIO, UART events etc) on da850/omap-l138 EVM, hence | ||
| 635 | * they are being reserved for codecs on the DSP side. | ||
| 636 | */ | ||
| 637 | static const s16 da850_dma0_rsv_chans[][2] = { | ||
| 638 | /* (offset, number) */ | ||
| 639 | { 8, 6}, | ||
| 640 | {24, 4}, | ||
| 641 | {30, 2}, | ||
| 642 | {-1, -1} | ||
| 643 | }; | ||
| 644 | |||
| 645 | static const s16 da850_dma0_rsv_slots[][2] = { | ||
| 646 | /* (offset, number) */ | ||
| 647 | { 8, 6}, | ||
| 648 | {24, 4}, | ||
| 649 | {30, 50}, | ||
| 650 | {-1, -1} | ||
| 651 | }; | ||
| 652 | |||
| 653 | static const s16 da850_dma1_rsv_chans[][2] = { | ||
| 654 | /* (offset, number) */ | ||
| 655 | { 0, 28}, | ||
| 656 | {30, 2}, | ||
| 657 | {-1, -1} | ||
| 658 | }; | ||
| 659 | |||
| 660 | static const s16 da850_dma1_rsv_slots[][2] = { | ||
| 661 | /* (offset, number) */ | ||
| 662 | { 0, 28}, | ||
| 663 | {30, 90}, | ||
| 664 | {-1, -1} | ||
| 665 | }; | ||
| 666 | |||
| 667 | static struct edma_rsv_info da850_edma_cc0_rsv = { | ||
| 668 | .rsv_chans = da850_dma0_rsv_chans, | ||
| 669 | .rsv_slots = da850_dma0_rsv_slots, | ||
| 670 | }; | ||
| 671 | |||
| 672 | static struct edma_rsv_info da850_edma_cc1_rsv = { | ||
| 673 | .rsv_chans = da850_dma1_rsv_chans, | ||
| 674 | .rsv_slots = da850_dma1_rsv_slots, | ||
| 675 | }; | ||
| 676 | |||
| 677 | static struct edma_rsv_info *da850_edma_rsv[2] = { | ||
| 678 | &da850_edma_cc0_rsv, | ||
| 679 | &da850_edma_cc1_rsv, | ||
| 680 | }; | ||
| 681 | |||
| 632 | static __init void da850_evm_init(void) | 682 | static __init void da850_evm_init(void) |
| 633 | { | 683 | { |
| 634 | int ret; | 684 | int ret; |
| @@ -638,7 +688,7 @@ static __init void da850_evm_init(void) | |||
| 638 | pr_warning("da850_evm_init: TPS65070 PMIC init failed: %d\n", | 688 | pr_warning("da850_evm_init: TPS65070 PMIC init failed: %d\n", |
| 639 | ret); | 689 | ret); |
| 640 | 690 | ||
| 641 | ret = da8xx_register_edma(); | 691 | ret = da850_register_edma(da850_edma_rsv); |
| 642 | if (ret) | 692 | if (ret) |
| 643 | pr_warning("da850_evm_init: edma registration failed: %d\n", | 693 | pr_warning("da850_evm_init: edma registration failed: %d\n", |
| 644 | ret); | 694 | ret); |
diff --git a/arch/arm/mach-davinci/devices-da8xx.c b/arch/arm/mach-davinci/devices-da8xx.c index 1d956bfa9cf0..52bc7b1c6ca3 100644 --- a/arch/arm/mach-davinci/devices-da8xx.c +++ b/arch/arm/mach-davinci/devices-da8xx.c | |||
| @@ -255,18 +255,21 @@ static struct platform_device da850_edma_device = { | |||
| 255 | .resource = da850_edma_resources, | 255 | .resource = da850_edma_resources, |
| 256 | }; | 256 | }; |
| 257 | 257 | ||
| 258 | int __init da8xx_register_edma(void) | 258 | int __init da830_register_edma(struct edma_rsv_info *rsv) |
| 259 | { | 259 | { |
| 260 | struct platform_device *pdev; | 260 | da830_edma_cc0_info.rsv = rsv; |
| 261 | 261 | ||
| 262 | if (cpu_is_davinci_da830()) | 262 | return platform_device_register(&da830_edma_device); |
| 263 | pdev = &da830_edma_device; | 263 | } |
| 264 | else if (cpu_is_davinci_da850()) | ||
| 265 | pdev = &da850_edma_device; | ||
| 266 | else | ||
| 267 | return -ENODEV; | ||
| 268 | 264 | ||
| 269 | return platform_device_register(pdev); | 265 | int __init da850_register_edma(struct edma_rsv_info *rsv[2]) |
| 266 | { | ||
| 267 | if (rsv) { | ||
| 268 | da850_edma_cc_info[0].rsv = rsv[0]; | ||
| 269 | da850_edma_cc_info[1].rsv = rsv[1]; | ||
| 270 | } | ||
| 271 | |||
| 272 | return platform_device_register(&da850_edma_device); | ||
| 270 | } | 273 | } |
| 271 | 274 | ||
| 272 | static struct resource da8xx_i2c_resources0[] = { | 275 | static struct resource da8xx_i2c_resources0[] = { |
diff --git a/arch/arm/mach-davinci/include/mach/da8xx.h b/arch/arm/mach-davinci/include/mach/da8xx.h index 1b31a9aa8fba..3c07059f526e 100644 --- a/arch/arm/mach-davinci/include/mach/da8xx.h +++ b/arch/arm/mach-davinci/include/mach/da8xx.h | |||
| @@ -67,7 +67,8 @@ extern void __iomem *da8xx_syscfg1_base; | |||
| 67 | void __init da830_init(void); | 67 | void __init da830_init(void); |
| 68 | void __init da850_init(void); | 68 | void __init da850_init(void); |
| 69 | 69 | ||
| 70 | int da8xx_register_edma(void); | 70 | int da830_register_edma(struct edma_rsv_info *rsv); |
| 71 | int da850_register_edma(struct edma_rsv_info *rsv[2]); | ||
| 71 | int da8xx_register_i2c(int instance, struct davinci_i2c_platform_data *pdata); | 72 | int da8xx_register_i2c(int instance, struct davinci_i2c_platform_data *pdata); |
| 72 | int da8xx_register_watchdog(void); | 73 | int da8xx_register_watchdog(void); |
| 73 | int da8xx_register_usb20(unsigned mA, unsigned potpgt); | 74 | int da8xx_register_usb20(unsigned mA, unsigned potpgt); |
