Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / arch / sh / drivers / dma / dma-isa.c
index 0156498..05a74ff 100644 (file)
@@ -3,13 +3,14 @@
  *
  * Generic ISA DMA wrapper for SH DMA API
  *
- * Copyright (C) 2003  Paul Mundt
+ * Copyright (C) 2003, 2004  Paul Mundt
  *
  * This file is subject to the terms and conditions of the GNU General Public
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
- */ 
+ */
 #include <linux/kernel.h>
+#include <linux/module.h>
 #include <asm/dma.h>
 
 /*
  * such, this code is meant for only the simplest of tasks (and shouldn't be
  * used in any new drivers at all).
  *
- * It should also be noted that various functions here are labelled as
- * being deprecated. This is due to the fact that the ops->xfer() method is
- * the preferred way of doing things (as well as just grabbing the spinlock
- * directly). As such, any users of this interface will be warned rather
- * loudly.
+ * NOTE: ops->xfer() is the preferred way of doing things. However, there
+ * are some users of the ISA DMA API that exist in common code that we
+ * don't necessarily want to go out of our way to break, so we still
+ * allow for some compatability at that level. Any new code is strongly
+ * advised to run far away from the ISA DMA API and use the SH DMA API
+ * directly.
  */
-
-unsigned long __deprecated claim_dma_lock(void)
+unsigned long claim_dma_lock(void)
 {
        unsigned long flags;
 
@@ -39,55 +40,67 @@ unsigned long __deprecated claim_dma_lock(void)
 
        return flags;
 }
+EXPORT_SYMBOL(claim_dma_lock);
 
-void __deprecated release_dma_lock(unsigned long flags)
+void release_dma_lock(unsigned long flags)
 {
        spin_unlock_irqrestore(&dma_spin_lock, flags);
 }
+EXPORT_SYMBOL(release_dma_lock);
 
-void __deprecated disable_dma(unsigned int chan)
+void disable_dma(unsigned int chan)
 {
        /* Nothing */
 }
+EXPORT_SYMBOL(disable_dma);
 
-void __deprecated enable_dma(unsigned int chan)
+void enable_dma(unsigned int chan)
 {
        struct dma_info *info = get_dma_info(chan);
+       struct dma_channel *channel = &info->channels[chan];
 
-       info->ops->xfer(info);
+       info->ops->xfer(channel);
 }
+EXPORT_SYMBOL(enable_dma);
 
 void clear_dma_ff(unsigned int chan)
 {
        /* Nothing */
 }
+EXPORT_SYMBOL(clear_dma_ff);
 
 void set_dma_mode(unsigned int chan, char mode)
 {
        struct dma_info *info = get_dma_info(chan);
+       struct dma_channel *channel = &info->channels[chan];
 
-       info->mode = mode;
+       channel->mode = mode;
 }
+EXPORT_SYMBOL(set_dma_mode);
 
 void set_dma_addr(unsigned int chan, unsigned int addr)
 {
        struct dma_info *info = get_dma_info(chan);
+       struct dma_channel *channel = &info->channels[chan];
 
        /*
         * Single address mode is the only thing supported through
         * this interface.
         */
-       if ((info->mode & DMA_MODE_MASK) == DMA_MODE_READ) {
-               info->sar = addr;
+       if ((channel->mode & DMA_MODE_MASK) == DMA_MODE_READ) {
+               channel->sar = addr;
        } else {
-               info->dar = addr;
+               channel->dar = addr;
        }
 }
+EXPORT_SYMBOL(set_dma_addr);
 
 void set_dma_count(unsigned int chan, unsigned int count)
 {
        struct dma_info *info = get_dma_info(chan);
+       struct dma_channel *channel = &info->channels[chan];
 
-       info->count = count;
+       channel->count = count;
 }
+EXPORT_SYMBOL(set_dma_count);