aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-omap/dma.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/plat-omap/dma.c')
-rw-r--r--arch/arm/plat-omap/dma.c108
1 files changed, 52 insertions, 56 deletions
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
index 49803cc18787..c288b76f8e6c 100644
--- a/arch/arm/plat-omap/dma.c
+++ b/arch/arm/plat-omap/dma.c
@@ -38,9 +38,6 @@
38 38
39#include <plat-omap/dma-omap.h> 39#include <plat-omap/dma-omap.h>
40 40
41#include "../mach-omap1/soc.h"
42#include "../mach-omap2/soc.h"
43
44/* 41/*
45 * MAX_LOGICAL_DMA_CH_COUNT: the maximum number of logical DMA 42 * MAX_LOGICAL_DMA_CH_COUNT: the maximum number of logical DMA
46 * channels that an instance of the SDMA IP block can support. Used 43 * channels that an instance of the SDMA IP block can support. Used
@@ -182,7 +179,7 @@ void omap_set_dma_priority(int lch, int dst_port, int priority)
182 unsigned long reg; 179 unsigned long reg;
183 u32 l; 180 u32 l;
184 181
185 if (cpu_class_is_omap1()) { 182 if (dma_omap1()) {
186 switch (dst_port) { 183 switch (dst_port) {
187 case OMAP_DMA_PORT_OCP_T1: /* FFFECC00 */ 184 case OMAP_DMA_PORT_OCP_T1: /* FFFECC00 */
188 reg = OMAP_TC_OCPT1_PRIOR; 185 reg = OMAP_TC_OCPT1_PRIOR;
@@ -234,7 +231,7 @@ void omap_set_dma_transfer_params(int lch, int data_type, int elem_count,
234 l |= data_type; 231 l |= data_type;
235 p->dma_write(l, CSDP, lch); 232 p->dma_write(l, CSDP, lch);
236 233
237 if (cpu_class_is_omap1()) { 234 if (dma_omap1()) {
238 u16 ccr; 235 u16 ccr;
239 236
240 ccr = p->dma_read(CCR, lch); 237 ccr = p->dma_read(CCR, lch);
@@ -250,7 +247,7 @@ void omap_set_dma_transfer_params(int lch, int data_type, int elem_count,
250 p->dma_write(ccr, CCR2, lch); 247 p->dma_write(ccr, CCR2, lch);
251 } 248 }
252 249
253 if (cpu_class_is_omap2() && dma_trigger) { 250 if (dma_omap2plus() && dma_trigger) {
254 u32 val; 251 u32 val;
255 252
256 val = p->dma_read(CCR, lch); 253 val = p->dma_read(CCR, lch);
@@ -290,7 +287,7 @@ void omap_set_dma_color_mode(int lch, enum omap_dma_color_mode mode, u32 color)
290{ 287{
291 BUG_ON(omap_dma_in_1510_mode()); 288 BUG_ON(omap_dma_in_1510_mode());
292 289
293 if (cpu_class_is_omap1()) { 290 if (dma_omap1()) {
294 u16 w; 291 u16 w;
295 292
296 w = p->dma_read(CCR2, lch); 293 w = p->dma_read(CCR2, lch);
@@ -320,7 +317,7 @@ void omap_set_dma_color_mode(int lch, enum omap_dma_color_mode mode, u32 color)
320 p->dma_write(w, LCH_CTRL, lch); 317 p->dma_write(w, LCH_CTRL, lch);
321 } 318 }
322 319
323 if (cpu_class_is_omap2()) { 320 if (dma_omap2plus()) {
324 u32 val; 321 u32 val;
325 322
326 val = p->dma_read(CCR, lch); 323 val = p->dma_read(CCR, lch);
@@ -348,7 +345,7 @@ EXPORT_SYMBOL(omap_set_dma_color_mode);
348 345
349void omap_set_dma_write_mode(int lch, enum omap_dma_write_mode mode) 346void omap_set_dma_write_mode(int lch, enum omap_dma_write_mode mode)
350{ 347{
351 if (cpu_class_is_omap2()) { 348 if (dma_omap2plus()) {
352 u32 csdp; 349 u32 csdp;
353 350
354 csdp = p->dma_read(CSDP, lch); 351 csdp = p->dma_read(CSDP, lch);
@@ -361,7 +358,7 @@ EXPORT_SYMBOL(omap_set_dma_write_mode);
361 358
362void omap_set_dma_channel_mode(int lch, enum omap_dma_channel_mode mode) 359void omap_set_dma_channel_mode(int lch, enum omap_dma_channel_mode mode)
363{ 360{
364 if (cpu_class_is_omap1() && !cpu_is_omap15xx()) { 361 if (dma_omap1() && !dma_omap15xx()) {
365 u32 l; 362 u32 l;
366 363
367 l = p->dma_read(LCH_CTRL, lch); 364 l = p->dma_read(LCH_CTRL, lch);
@@ -379,7 +376,7 @@ void omap_set_dma_src_params(int lch, int src_port, int src_amode,
379{ 376{
380 u32 l; 377 u32 l;
381 378
382 if (cpu_class_is_omap1()) { 379 if (dma_omap1()) {
383 u16 w; 380 u16 w;
384 381
385 w = p->dma_read(CSDP, lch); 382 w = p->dma_read(CSDP, lch);
@@ -421,7 +418,7 @@ EXPORT_SYMBOL(omap_set_dma_params);
421 418
422void omap_set_dma_src_index(int lch, int eidx, int fidx) 419void omap_set_dma_src_index(int lch, int eidx, int fidx)
423{ 420{
424 if (cpu_class_is_omap2()) 421 if (dma_omap2plus())
425 return; 422 return;
426 423
427 p->dma_write(eidx, CSEI, lch); 424 p->dma_write(eidx, CSEI, lch);
@@ -453,13 +450,13 @@ void omap_set_dma_src_burst_mode(int lch, enum omap_dma_burst_mode burst_mode)
453 case OMAP_DMA_DATA_BURST_DIS: 450 case OMAP_DMA_DATA_BURST_DIS:
454 break; 451 break;
455 case OMAP_DMA_DATA_BURST_4: 452 case OMAP_DMA_DATA_BURST_4:
456 if (cpu_class_is_omap2()) 453 if (dma_omap2plus())
457 burst = 0x1; 454 burst = 0x1;
458 else 455 else
459 burst = 0x2; 456 burst = 0x2;
460 break; 457 break;
461 case OMAP_DMA_DATA_BURST_8: 458 case OMAP_DMA_DATA_BURST_8:
462 if (cpu_class_is_omap2()) { 459 if (dma_omap2plus()) {
463 burst = 0x2; 460 burst = 0x2;
464 break; 461 break;
465 } 462 }
@@ -469,7 +466,7 @@ void omap_set_dma_src_burst_mode(int lch, enum omap_dma_burst_mode burst_mode)
469 * fall through 466 * fall through
470 */ 467 */
471 case OMAP_DMA_DATA_BURST_16: 468 case OMAP_DMA_DATA_BURST_16:
472 if (cpu_class_is_omap2()) { 469 if (dma_omap2plus()) {
473 burst = 0x3; 470 burst = 0x3;
474 break; 471 break;
475 } 472 }
@@ -493,7 +490,7 @@ void omap_set_dma_dest_params(int lch, int dest_port, int dest_amode,
493{ 490{
494 u32 l; 491 u32 l;
495 492
496 if (cpu_class_is_omap1()) { 493 if (dma_omap1()) {
497 l = p->dma_read(CSDP, lch); 494 l = p->dma_read(CSDP, lch);
498 l &= ~(0x1f << 9); 495 l &= ~(0x1f << 9);
499 l |= dest_port << 9; 496 l |= dest_port << 9;
@@ -514,7 +511,7 @@ EXPORT_SYMBOL(omap_set_dma_dest_params);
514 511
515void omap_set_dma_dest_index(int lch, int eidx, int fidx) 512void omap_set_dma_dest_index(int lch, int eidx, int fidx)
516{ 513{
517 if (cpu_class_is_omap2()) 514 if (dma_omap2plus())
518 return; 515 return;
519 516
520 p->dma_write(eidx, CDEI, lch); 517 p->dma_write(eidx, CDEI, lch);
@@ -546,19 +543,19 @@ void omap_set_dma_dest_burst_mode(int lch, enum omap_dma_burst_mode burst_mode)
546 case OMAP_DMA_DATA_BURST_DIS: 543 case OMAP_DMA_DATA_BURST_DIS:
547 break; 544 break;
548 case OMAP_DMA_DATA_BURST_4: 545 case OMAP_DMA_DATA_BURST_4:
549 if (cpu_class_is_omap2()) 546 if (dma_omap2plus())
550 burst = 0x1; 547 burst = 0x1;
551 else 548 else
552 burst = 0x2; 549 burst = 0x2;
553 break; 550 break;
554 case OMAP_DMA_DATA_BURST_8: 551 case OMAP_DMA_DATA_BURST_8:
555 if (cpu_class_is_omap2()) 552 if (dma_omap2plus())
556 burst = 0x2; 553 burst = 0x2;
557 else 554 else
558 burst = 0x3; 555 burst = 0x3;
559 break; 556 break;
560 case OMAP_DMA_DATA_BURST_16: 557 case OMAP_DMA_DATA_BURST_16:
561 if (cpu_class_is_omap2()) { 558 if (dma_omap2plus()) {
562 burst = 0x3; 559 burst = 0x3;
563 break; 560 break;
564 } 561 }
@@ -579,7 +576,7 @@ EXPORT_SYMBOL(omap_set_dma_dest_burst_mode);
579static inline void omap_enable_channel_irq(int lch) 576static inline void omap_enable_channel_irq(int lch)
580{ 577{
581 /* Clear CSR */ 578 /* Clear CSR */
582 if (cpu_class_is_omap1()) 579 if (dma_omap1())
583 p->dma_read(CSR, lch); 580 p->dma_read(CSR, lch);
584 else 581 else
585 p->dma_write(OMAP2_DMA_CSR_CLEAR_MASK, CSR, lch); 582 p->dma_write(OMAP2_DMA_CSR_CLEAR_MASK, CSR, lch);
@@ -593,7 +590,7 @@ static inline void omap_disable_channel_irq(int lch)
593 /* disable channel interrupts */ 590 /* disable channel interrupts */
594 p->dma_write(0, CICR, lch); 591 p->dma_write(0, CICR, lch);
595 /* Clear CSR */ 592 /* Clear CSR */
596 if (cpu_class_is_omap1()) 593 if (dma_omap1())
597 p->dma_read(CSR, lch); 594 p->dma_read(CSR, lch);
598 else 595 else
599 p->dma_write(OMAP2_DMA_CSR_CLEAR_MASK, CSR, lch); 596 p->dma_write(OMAP2_DMA_CSR_CLEAR_MASK, CSR, lch);
@@ -617,7 +614,7 @@ static inline void enable_lnk(int lch)
617 614
618 l = p->dma_read(CLNK_CTRL, lch); 615 l = p->dma_read(CLNK_CTRL, lch);
619 616
620 if (cpu_class_is_omap1()) 617 if (dma_omap1())
621 l &= ~(1 << 14); 618 l &= ~(1 << 14);
622 619
623 /* Set the ENABLE_LNK bits */ 620 /* Set the ENABLE_LNK bits */
@@ -625,7 +622,7 @@ static inline void enable_lnk(int lch)
625 l = dma_chan[lch].next_lch | (1 << 15); 622 l = dma_chan[lch].next_lch | (1 << 15);
626 623
627#ifndef CONFIG_ARCH_OMAP1 624#ifndef CONFIG_ARCH_OMAP1
628 if (cpu_class_is_omap2()) 625 if (dma_omap2plus())
629 if (dma_chan[lch].next_linked_ch != -1) 626 if (dma_chan[lch].next_linked_ch != -1)
630 l = dma_chan[lch].next_linked_ch | (1 << 15); 627 l = dma_chan[lch].next_linked_ch | (1 << 15);
631#endif 628#endif
@@ -642,12 +639,12 @@ static inline void disable_lnk(int lch)
642 /* Disable interrupts */ 639 /* Disable interrupts */
643 omap_disable_channel_irq(lch); 640 omap_disable_channel_irq(lch);
644 641
645 if (cpu_class_is_omap1()) { 642 if (dma_omap1()) {
646 /* Set the STOP_LNK bit */ 643 /* Set the STOP_LNK bit */
647 l |= 1 << 14; 644 l |= 1 << 14;
648 } 645 }
649 646
650 if (cpu_class_is_omap2()) { 647 if (dma_omap2plus()) {
651 /* Clear the ENABLE_LNK bit */ 648 /* Clear the ENABLE_LNK bit */
652 l &= ~(1 << 15); 649 l &= ~(1 << 15);
653 } 650 }
@@ -661,7 +658,7 @@ static inline void omap2_enable_irq_lch(int lch)
661 u32 val; 658 u32 val;
662 unsigned long flags; 659 unsigned long flags;
663 660
664 if (!cpu_class_is_omap2()) 661 if (dma_omap1())
665 return; 662 return;
666 663
667 spin_lock_irqsave(&dma_chan_lock, flags); 664 spin_lock_irqsave(&dma_chan_lock, flags);
@@ -679,7 +676,7 @@ static inline void omap2_disable_irq_lch(int lch)
679 u32 val; 676 u32 val;
680 unsigned long flags; 677 unsigned long flags;
681 678
682 if (!cpu_class_is_omap2()) 679 if (dma_omap1())
683 return; 680 return;
684 681
685 spin_lock_irqsave(&dma_chan_lock, flags); 682 spin_lock_irqsave(&dma_chan_lock, flags);
@@ -718,7 +715,7 @@ int omap_request_dma(int dev_id, const char *dev_name,
718 if (p->clear_lch_regs) 715 if (p->clear_lch_regs)
719 p->clear_lch_regs(free_ch); 716 p->clear_lch_regs(free_ch);
720 717
721 if (cpu_class_is_omap2()) 718 if (dma_omap2plus())
722 omap_clear_dma(free_ch); 719 omap_clear_dma(free_ch);
723 720
724 spin_unlock_irqrestore(&dma_chan_lock, flags); 721 spin_unlock_irqrestore(&dma_chan_lock, flags);
@@ -729,7 +726,7 @@ int omap_request_dma(int dev_id, const char *dev_name,
729 chan->flags = 0; 726 chan->flags = 0;
730 727
731#ifndef CONFIG_ARCH_OMAP1 728#ifndef CONFIG_ARCH_OMAP1
732 if (cpu_class_is_omap2()) { 729 if (dma_omap2plus()) {
733 chan->chain_id = -1; 730 chan->chain_id = -1;
734 chan->next_linked_ch = -1; 731 chan->next_linked_ch = -1;
735 } 732 }
@@ -737,13 +734,13 @@ int omap_request_dma(int dev_id, const char *dev_name,
737 734
738 chan->enabled_irqs = OMAP_DMA_DROP_IRQ | OMAP_DMA_BLOCK_IRQ; 735 chan->enabled_irqs = OMAP_DMA_DROP_IRQ | OMAP_DMA_BLOCK_IRQ;
739 736
740 if (cpu_class_is_omap1()) 737 if (dma_omap1())
741 chan->enabled_irqs |= OMAP1_DMA_TOUT_IRQ; 738 chan->enabled_irqs |= OMAP1_DMA_TOUT_IRQ;
742 else if (cpu_class_is_omap2()) 739 else if (dma_omap2plus())
743 chan->enabled_irqs |= OMAP2_DMA_MISALIGNED_ERR_IRQ | 740 chan->enabled_irqs |= OMAP2_DMA_MISALIGNED_ERR_IRQ |
744 OMAP2_DMA_TRANS_ERR_IRQ; 741 OMAP2_DMA_TRANS_ERR_IRQ;
745 742
746 if (cpu_is_omap16xx()) { 743 if (dma_omap16xx()) {
747 /* If the sync device is set, configure it dynamically. */ 744 /* If the sync device is set, configure it dynamically. */
748 if (dev_id != 0) { 745 if (dev_id != 0) {
749 set_gdma_dev(free_ch + 1, dev_id); 746 set_gdma_dev(free_ch + 1, dev_id);
@@ -754,11 +751,11 @@ int omap_request_dma(int dev_id, const char *dev_name,
754 * id. 751 * id.
755 */ 752 */
756 p->dma_write(dev_id | (1 << 10), CCR, free_ch); 753 p->dma_write(dev_id | (1 << 10), CCR, free_ch);
757 } else if (cpu_is_omap7xx() || cpu_is_omap15xx()) { 754 } else if (dma_omap1()) {
758 p->dma_write(dev_id, CCR, free_ch); 755 p->dma_write(dev_id, CCR, free_ch);
759 } 756 }
760 757
761 if (cpu_class_is_omap2()) { 758 if (dma_omap2plus()) {
762 omap_enable_channel_irq(free_ch); 759 omap_enable_channel_irq(free_ch);
763 omap2_enable_irq_lch(free_ch); 760 omap2_enable_irq_lch(free_ch);
764 } 761 }
@@ -780,7 +777,7 @@ void omap_free_dma(int lch)
780 } 777 }
781 778
782 /* Disable interrupt for logical channel */ 779 /* Disable interrupt for logical channel */
783 if (cpu_class_is_omap2()) 780 if (dma_omap2plus())
784 omap2_disable_irq_lch(lch); 781 omap2_disable_irq_lch(lch);
785 782
786 /* Disable all DMA interrupts for the channel. */ 783 /* Disable all DMA interrupts for the channel. */
@@ -790,7 +787,7 @@ void omap_free_dma(int lch)
790 p->dma_write(0, CCR, lch); 787 p->dma_write(0, CCR, lch);
791 788
792 /* Clear registers */ 789 /* Clear registers */
793 if (cpu_class_is_omap2()) 790 if (dma_omap2plus())
794 omap_clear_dma(lch); 791 omap_clear_dma(lch);
795 792
796 spin_lock_irqsave(&dma_chan_lock, flags); 793 spin_lock_irqsave(&dma_chan_lock, flags);
@@ -816,7 +813,7 @@ omap_dma_set_global_params(int arb_rate, int max_fifo_depth, int tparams)
816{ 813{
817 u32 reg; 814 u32 reg;
818 815
819 if (!cpu_class_is_omap2()) { 816 if (dma_omap1()) {
820 printk(KERN_ERR "FIXME: no %s on 15xx/16xx\n", __func__); 817 printk(KERN_ERR "FIXME: no %s on 15xx/16xx\n", __func__);
821 return; 818 return;
822 } 819 }
@@ -855,7 +852,7 @@ omap_dma_set_prio_lch(int lch, unsigned char read_prio,
855 } 852 }
856 l = p->dma_read(CCR, lch); 853 l = p->dma_read(CCR, lch);
857 l &= ~((1 << 6) | (1 << 26)); 854 l &= ~((1 << 6) | (1 << 26));
858 if (cpu_class_is_omap2() && !cpu_is_omap242x()) 855 if (d->dev_caps & IS_RW_PRIORITY)
859 l |= ((read_prio & 0x1) << 6) | ((write_prio & 0x1) << 26); 856 l |= ((read_prio & 0x1) << 6) | ((write_prio & 0x1) << 26);
860 else 857 else
861 l |= ((read_prio & 0x1) << 6); 858 l |= ((read_prio & 0x1) << 6);
@@ -888,7 +885,7 @@ void omap_start_dma(int lch)
888 * The CPC/CDAC register needs to be initialized to zero 885 * The CPC/CDAC register needs to be initialized to zero
889 * before starting dma transfer. 886 * before starting dma transfer.
890 */ 887 */
891 if (cpu_is_omap15xx()) 888 if (dma_omap15xx())
892 p->dma_write(0, CPC, lch); 889 p->dma_write(0, CPC, lch);
893 else 890 else
894 p->dma_write(0, CDAC, lch); 891 p->dma_write(0, CDAC, lch);
@@ -1051,7 +1048,7 @@ dma_addr_t omap_get_dma_src_pos(int lch)
1051{ 1048{
1052 dma_addr_t offset = 0; 1049 dma_addr_t offset = 0;
1053 1050
1054 if (cpu_is_omap15xx()) 1051 if (dma_omap15xx())
1055 offset = p->dma_read(CPC, lch); 1052 offset = p->dma_read(CPC, lch);
1056 else 1053 else
1057 offset = p->dma_read(CSAC, lch); 1054 offset = p->dma_read(CSAC, lch);
@@ -1059,7 +1056,7 @@ dma_addr_t omap_get_dma_src_pos(int lch)
1059 if (IS_DMA_ERRATA(DMA_ERRATA_3_3) && offset == 0) 1056 if (IS_DMA_ERRATA(DMA_ERRATA_3_3) && offset == 0)
1060 offset = p->dma_read(CSAC, lch); 1057 offset = p->dma_read(CSAC, lch);
1061 1058
1062 if (!cpu_is_omap15xx()) { 1059 if (!dma_omap15xx()) {
1063 /* 1060 /*
1064 * CDAC == 0 indicates that the DMA transfer on the channel has 1061 * CDAC == 0 indicates that the DMA transfer on the channel has
1065 * not been started (no data has been transferred so far). 1062 * not been started (no data has been transferred so far).
@@ -1071,7 +1068,7 @@ dma_addr_t omap_get_dma_src_pos(int lch)
1071 offset = p->dma_read(CSSA, lch); 1068 offset = p->dma_read(CSSA, lch);
1072 } 1069 }
1073 1070
1074 if (cpu_class_is_omap1()) 1071 if (dma_omap1())
1075 offset |= (p->dma_read(CSSA, lch) & 0xFFFF0000); 1072 offset |= (p->dma_read(CSSA, lch) & 0xFFFF0000);
1076 1073
1077 return offset; 1074 return offset;
@@ -1090,7 +1087,7 @@ dma_addr_t omap_get_dma_dst_pos(int lch)
1090{ 1087{
1091 dma_addr_t offset = 0; 1088 dma_addr_t offset = 0;
1092 1089
1093 if (cpu_is_omap15xx()) 1090 if (dma_omap15xx())
1094 offset = p->dma_read(CPC, lch); 1091 offset = p->dma_read(CPC, lch);
1095 else 1092 else
1096 offset = p->dma_read(CDAC, lch); 1093 offset = p->dma_read(CDAC, lch);
@@ -1099,7 +1096,7 @@ dma_addr_t omap_get_dma_dst_pos(int lch)
1099 * omap 3.2/3.3 erratum: sometimes 0 is returned if CSAC/CDAC is 1096 * omap 3.2/3.3 erratum: sometimes 0 is returned if CSAC/CDAC is
1100 * read before the DMA controller finished disabling the channel. 1097 * read before the DMA controller finished disabling the channel.
1101 */ 1098 */
1102 if (!cpu_is_omap15xx() && offset == 0) { 1099 if (!dma_omap15xx() && offset == 0) {
1103 offset = p->dma_read(CDAC, lch); 1100 offset = p->dma_read(CDAC, lch);
1104 /* 1101 /*
1105 * CDAC == 0 indicates that the DMA transfer on the channel has 1102 * CDAC == 0 indicates that the DMA transfer on the channel has
@@ -1110,7 +1107,7 @@ dma_addr_t omap_get_dma_dst_pos(int lch)
1110 offset = p->dma_read(CDSA, lch); 1107 offset = p->dma_read(CDSA, lch);
1111 } 1108 }
1112 1109
1113 if (cpu_class_is_omap1()) 1110 if (dma_omap1())
1114 offset |= (p->dma_read(CDSA, lch) & 0xFFFF0000); 1111 offset |= (p->dma_read(CDSA, lch) & 0xFFFF0000);
1115 1112
1116 return offset; 1113 return offset;
@@ -1127,7 +1124,7 @@ int omap_dma_running(void)
1127{ 1124{
1128 int lch; 1125 int lch;
1129 1126
1130 if (cpu_class_is_omap1()) 1127 if (dma_omap1())
1131 if (omap_lcd_dma_running()) 1128 if (omap_lcd_dma_running())
1132 return 1; 1129 return 1;
1133 1130
@@ -2030,7 +2027,7 @@ static int __devinit omap_system_dma_probe(struct platform_device *pdev)
2030 dma_chan = d->chan; 2027 dma_chan = d->chan;
2031 enable_1510_mode = d->dev_caps & ENABLE_1510_MODE; 2028 enable_1510_mode = d->dev_caps & ENABLE_1510_MODE;
2032 2029
2033 if (cpu_class_is_omap2()) { 2030 if (dma_omap2plus()) {
2034 dma_linked_lch = kzalloc(sizeof(struct dma_link_info) * 2031 dma_linked_lch = kzalloc(sizeof(struct dma_link_info) *
2035 dma_lch_count, GFP_KERNEL); 2032 dma_lch_count, GFP_KERNEL);
2036 if (!dma_linked_lch) { 2033 if (!dma_linked_lch) {
@@ -2042,7 +2039,7 @@ static int __devinit omap_system_dma_probe(struct platform_device *pdev)
2042 spin_lock_init(&dma_chan_lock); 2039 spin_lock_init(&dma_chan_lock);
2043 for (ch = 0; ch < dma_chan_count; ch++) { 2040 for (ch = 0; ch < dma_chan_count; ch++) {
2044 omap_clear_dma(ch); 2041 omap_clear_dma(ch);
2045 if (cpu_class_is_omap2()) 2042 if (dma_omap2plus())
2046 omap2_disable_irq_lch(ch); 2043 omap2_disable_irq_lch(ch);
2047 2044
2048 dma_chan[ch].dev_id = -1; 2045 dma_chan[ch].dev_id = -1;
@@ -2051,7 +2048,7 @@ static int __devinit omap_system_dma_probe(struct platform_device *pdev)
2051 if (ch >= 6 && enable_1510_mode) 2048 if (ch >= 6 && enable_1510_mode)
2052 continue; 2049 continue;
2053 2050
2054 if (cpu_class_is_omap1()) { 2051 if (dma_omap1()) {
2055 /* 2052 /*
2056 * request_irq() doesn't like dev_id (ie. ch) being 2053 * request_irq() doesn't like dev_id (ie. ch) being
2057 * zero, so we have to kludge around this. 2054 * zero, so we have to kludge around this.
@@ -2076,11 +2073,11 @@ static int __devinit omap_system_dma_probe(struct platform_device *pdev)
2076 } 2073 }
2077 } 2074 }
2078 2075
2079 if (cpu_class_is_omap2() && !cpu_is_omap242x()) 2076 if (d->dev_caps & IS_RW_PRIORITY)
2080 omap_dma_set_global_params(DMA_DEFAULT_ARB_RATE, 2077 omap_dma_set_global_params(DMA_DEFAULT_ARB_RATE,
2081 DMA_DEFAULT_FIFO_DEPTH, 0); 2078 DMA_DEFAULT_FIFO_DEPTH, 0);
2082 2079
2083 if (cpu_class_is_omap2()) { 2080 if (dma_omap2plus()) {
2084 strcpy(irq_name, "0"); 2081 strcpy(irq_name, "0");
2085 dma_irq = platform_get_irq_byname(pdev, irq_name); 2082 dma_irq = platform_get_irq_byname(pdev, irq_name);
2086 if (dma_irq < 0) { 2083 if (dma_irq < 0) {
@@ -2095,9 +2092,8 @@ static int __devinit omap_system_dma_probe(struct platform_device *pdev)
2095 } 2092 }
2096 } 2093 }
2097 2094
2098 /* reserve dma channels 0 and 1 in high security devices */ 2095 /* reserve dma channels 0 and 1 in high security devices on 34xx */
2099 if (cpu_is_omap34xx() && 2096 if (d->dev_caps & HS_CHANNELS_RESERVED) {
2100 (omap_type() != OMAP2_DEVICE_TYPE_GP)) {
2101 pr_info("Reserving DMA channels 0 and 1 for HS ROM code\n"); 2097 pr_info("Reserving DMA channels 0 and 1 for HS ROM code\n");
2102 dma_chan[0].dev_id = 0; 2098 dma_chan[0].dev_id = 0;
2103 dma_chan[1].dev_id = 1; 2099 dma_chan[1].dev_id = 1;
@@ -2124,7 +2120,7 @@ static int __devexit omap_system_dma_remove(struct platform_device *pdev)
2124{ 2120{
2125 int dma_irq; 2121 int dma_irq;
2126 2122
2127 if (cpu_class_is_omap2()) { 2123 if (dma_omap2plus()) {
2128 char irq_name[4]; 2124 char irq_name[4];
2129 strcpy(irq_name, "0"); 2125 strcpy(irq_name, "0");
2130 dma_irq = platform_get_irq_byname(pdev, irq_name); 2126 dma_irq = platform_get_irq_byname(pdev, irq_name);