diff options
Diffstat (limited to 'arch/blackfin/kernel/bfin_dma_5xx.c')
-rw-r--r-- | arch/blackfin/kernel/bfin_dma_5xx.c | 46 |
1 files changed, 22 insertions, 24 deletions
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c index 8a16c2bbec04..7cf02f02a1db 100644 --- a/arch/blackfin/kernel/bfin_dma_5xx.c +++ b/arch/blackfin/kernel/bfin_dma_5xx.c | |||
@@ -332,7 +332,7 @@ set_bfin_dma_config(char direction, char flow_mode, | |||
332 | } | 332 | } |
333 | EXPORT_SYMBOL(set_bfin_dma_config); | 333 | EXPORT_SYMBOL(set_bfin_dma_config); |
334 | 334 | ||
335 | void set_dma_sg(unsigned int channel, struct dmasg * sg, int nr_sg) | 335 | void set_dma_sg(unsigned int channel, struct dmasg *sg, int nr_sg) |
336 | { | 336 | { |
337 | BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE | 337 | BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE |
338 | && channel < MAX_BLACKFIN_DMA_CHANNEL)); | 338 | && channel < MAX_BLACKFIN_DMA_CHANNEL)); |
@@ -401,7 +401,7 @@ static void *__dma_memcpy(void *dest, const void *src, size_t size) | |||
401 | 401 | ||
402 | if (size <= 0) | 402 | if (size <= 0) |
403 | return NULL; | 403 | return NULL; |
404 | 404 | ||
405 | local_irq_save(flags); | 405 | local_irq_save(flags); |
406 | 406 | ||
407 | if ((unsigned long)src < memory_end) | 407 | if ((unsigned long)src < memory_end) |
@@ -545,7 +545,6 @@ void *dma_memcpy(void *dest, const void *src, size_t size) | |||
545 | addr = __dma_memcpy(dest+bulk, src+bulk, rest); | 545 | addr = __dma_memcpy(dest+bulk, src+bulk, rest); |
546 | return addr; | 546 | return addr; |
547 | } | 547 | } |
548 | |||
549 | EXPORT_SYMBOL(dma_memcpy); | 548 | EXPORT_SYMBOL(dma_memcpy); |
550 | 549 | ||
551 | void *safe_dma_memcpy(void *dest, const void *src, size_t size) | 550 | void *safe_dma_memcpy(void *dest, const void *src, size_t size) |
@@ -558,14 +557,13 @@ EXPORT_SYMBOL(safe_dma_memcpy); | |||
558 | 557 | ||
559 | void dma_outsb(void __iomem *addr, const void *buf, unsigned short len) | 558 | void dma_outsb(void __iomem *addr, const void *buf, unsigned short len) |
560 | { | 559 | { |
561 | |||
562 | unsigned long flags; | 560 | unsigned long flags; |
563 | 561 | ||
564 | local_irq_save(flags); | 562 | local_irq_save(flags); |
565 | |||
566 | blackfin_dcache_flush_range((unsigned int)buf,(unsigned int)(buf) + len); | ||
567 | 563 | ||
568 | bfin_write_MDMA_D0_START_ADDR(addr); | 564 | blackfin_dcache_flush_range((unsigned int)buf, (unsigned int)(buf) + len); |
565 | |||
566 | bfin_write_MDMA_D0_START_ADDR(addr); | ||
569 | bfin_write_MDMA_D0_X_COUNT(len); | 567 | bfin_write_MDMA_D0_X_COUNT(len); |
570 | bfin_write_MDMA_D0_X_MODIFY(0); | 568 | bfin_write_MDMA_D0_X_MODIFY(0); |
571 | bfin_write_MDMA_D0_IRQ_STATUS(DMA_DONE | DMA_ERR); | 569 | bfin_write_MDMA_D0_IRQ_STATUS(DMA_DONE | DMA_ERR); |
@@ -593,9 +591,9 @@ EXPORT_SYMBOL(dma_outsb); | |||
593 | void dma_insb(const void __iomem *addr, void *buf, unsigned short len) | 591 | void dma_insb(const void __iomem *addr, void *buf, unsigned short len) |
594 | { | 592 | { |
595 | unsigned long flags; | 593 | unsigned long flags; |
596 | 594 | ||
597 | local_irq_save(flags); | 595 | local_irq_save(flags); |
598 | bfin_write_MDMA_D0_START_ADDR(buf); | 596 | bfin_write_MDMA_D0_START_ADDR(buf); |
599 | bfin_write_MDMA_D0_X_COUNT(len); | 597 | bfin_write_MDMA_D0_X_COUNT(len); |
600 | bfin_write_MDMA_D0_X_MODIFY(1); | 598 | bfin_write_MDMA_D0_X_MODIFY(1); |
601 | bfin_write_MDMA_D0_IRQ_STATUS(DMA_DONE | DMA_ERR); | 599 | bfin_write_MDMA_D0_IRQ_STATUS(DMA_DONE | DMA_ERR); |
@@ -624,12 +622,12 @@ EXPORT_SYMBOL(dma_insb); | |||
624 | void dma_outsw(void __iomem *addr, const void *buf, unsigned short len) | 622 | void dma_outsw(void __iomem *addr, const void *buf, unsigned short len) |
625 | { | 623 | { |
626 | unsigned long flags; | 624 | unsigned long flags; |
627 | 625 | ||
628 | local_irq_save(flags); | 626 | local_irq_save(flags); |
629 | |||
630 | blackfin_dcache_flush_range((unsigned int)buf,(unsigned int)(buf) + len); | ||
631 | 627 | ||
632 | bfin_write_MDMA_D0_START_ADDR(addr); | 628 | blackfin_dcache_flush_range((unsigned int)buf, (unsigned int)(buf) + len); |
629 | |||
630 | bfin_write_MDMA_D0_START_ADDR(addr); | ||
633 | bfin_write_MDMA_D0_X_COUNT(len); | 631 | bfin_write_MDMA_D0_X_COUNT(len); |
634 | bfin_write_MDMA_D0_X_MODIFY(0); | 632 | bfin_write_MDMA_D0_X_MODIFY(0); |
635 | bfin_write_MDMA_D0_IRQ_STATUS(DMA_DONE | DMA_ERR); | 633 | bfin_write_MDMA_D0_IRQ_STATUS(DMA_DONE | DMA_ERR); |
@@ -656,10 +654,10 @@ EXPORT_SYMBOL(dma_outsw); | |||
656 | void dma_insw(const void __iomem *addr, void *buf, unsigned short len) | 654 | void dma_insw(const void __iomem *addr, void *buf, unsigned short len) |
657 | { | 655 | { |
658 | unsigned long flags; | 656 | unsigned long flags; |
659 | 657 | ||
660 | local_irq_save(flags); | 658 | local_irq_save(flags); |
661 | 659 | ||
662 | bfin_write_MDMA_D0_START_ADDR(buf); | 660 | bfin_write_MDMA_D0_START_ADDR(buf); |
663 | bfin_write_MDMA_D0_X_COUNT(len); | 661 | bfin_write_MDMA_D0_X_COUNT(len); |
664 | bfin_write_MDMA_D0_X_MODIFY(2); | 662 | bfin_write_MDMA_D0_X_MODIFY(2); |
665 | bfin_write_MDMA_D0_IRQ_STATUS(DMA_DONE | DMA_ERR); | 663 | bfin_write_MDMA_D0_IRQ_STATUS(DMA_DONE | DMA_ERR); |
@@ -688,12 +686,12 @@ EXPORT_SYMBOL(dma_insw); | |||
688 | void dma_outsl(void __iomem *addr, const void *buf, unsigned short len) | 686 | void dma_outsl(void __iomem *addr, const void *buf, unsigned short len) |
689 | { | 687 | { |
690 | unsigned long flags; | 688 | unsigned long flags; |
691 | 689 | ||
692 | local_irq_save(flags); | 690 | local_irq_save(flags); |
693 | |||
694 | blackfin_dcache_flush_range((unsigned int)buf,(unsigned int)(buf) + len); | ||
695 | 691 | ||
696 | bfin_write_MDMA_D0_START_ADDR(addr); | 692 | blackfin_dcache_flush_range((unsigned int)buf, (unsigned int)(buf) + len); |
693 | |||
694 | bfin_write_MDMA_D0_START_ADDR(addr); | ||
697 | bfin_write_MDMA_D0_X_COUNT(len); | 695 | bfin_write_MDMA_D0_X_COUNT(len); |
698 | bfin_write_MDMA_D0_X_MODIFY(0); | 696 | bfin_write_MDMA_D0_X_MODIFY(0); |
699 | bfin_write_MDMA_D0_IRQ_STATUS(DMA_DONE | DMA_ERR); | 697 | bfin_write_MDMA_D0_IRQ_STATUS(DMA_DONE | DMA_ERR); |
@@ -720,10 +718,10 @@ EXPORT_SYMBOL(dma_outsl); | |||
720 | void dma_insl(const void __iomem *addr, void *buf, unsigned short len) | 718 | void dma_insl(const void __iomem *addr, void *buf, unsigned short len) |
721 | { | 719 | { |
722 | unsigned long flags; | 720 | unsigned long flags; |
723 | 721 | ||
724 | local_irq_save(flags); | 722 | local_irq_save(flags); |
725 | 723 | ||
726 | bfin_write_MDMA_D0_START_ADDR(buf); | 724 | bfin_write_MDMA_D0_START_ADDR(buf); |
727 | bfin_write_MDMA_D0_X_COUNT(len); | 725 | bfin_write_MDMA_D0_X_COUNT(len); |
728 | bfin_write_MDMA_D0_X_MODIFY(4); | 726 | bfin_write_MDMA_D0_X_MODIFY(4); |
729 | bfin_write_MDMA_D0_IRQ_STATUS(DMA_DONE | DMA_ERR); | 727 | bfin_write_MDMA_D0_IRQ_STATUS(DMA_DONE | DMA_ERR); |