]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/mips/au1000/common/dbdma.c
[MIPS] Alchemy: replace ffs() with __ffs()
[linux-2.6-omap-h63xx.git] / arch / mips / au1000 / common / dbdma.c
index 6ee090bd86c9a78bf215179033f5a195e3542d91..edf91f41a78671c3108563b13e5b8cdaadbc11cf 100644 (file)
@@ -30,7 +30,6 @@
  *
  */
 
-#include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
 #include <linux/sched.h>
@@ -185,7 +184,7 @@ static dbdev_tab_t dbdev_tab[] = {
 static chan_tab_t *chan_tab_ptr[NUM_DBDMA_CHANS];
 
 static dbdev_tab_t *
-find_dbdev_id (u32 id)
+find_dbdev_id(u32 id)
 {
        int i;
        dbdev_tab_t *p;
@@ -214,7 +213,7 @@ au1xxx_ddma_add_device(dbdev_tab_t *dev)
        if ( NULL != p )
        {
                memcpy(p, dev, sizeof(dbdev_tab_t));
-               p->dev_id = DSCR_DEV2CUSTOM_ID(new_id,dev->dev_id);
+               p->dev_id = DSCR_DEV2CUSTOM_ID(new_id, dev->dev_id);
                ret = p->dev_id;
                new_id++;
 #if 0
@@ -231,7 +230,7 @@ EXPORT_SYMBOL(au1xxx_ddma_add_device);
 */
 u32
 au1xxx_dbdma_chan_alloc(u32 srcid, u32 destid,
-       void (*callback)(int, void *, struct pt_regs *), void *callparam)
+       void (*callback)(int, void *), void *callparam)
 {
        unsigned long   flags;
        u32             used, chan, rv;
@@ -249,8 +248,10 @@ au1xxx_dbdma_chan_alloc(u32 srcid, u32 destid,
                au1xxx_dbdma_init();
        dbdma_initialized = 1;
 
-       if ((stp = find_dbdev_id(srcid)) == NULL) return 0;
-       if ((dtp = find_dbdev_id(destid)) == NULL) return 0;
+       if ((stp = find_dbdev_id(srcid)) == NULL)
+               return 0;
+       if ((dtp = find_dbdev_id(destid)) == NULL)
+               return 0;
 
        used = 0;
        rv = 0;
@@ -290,7 +291,7 @@ au1xxx_dbdma_chan_alloc(u32 srcid, u32 destid,
                                /* If kmalloc fails, it is caught below same
                                 * as a channel not available.
                                 */
-                               ctp = kmalloc(sizeof(chan_tab_t), GFP_KERNEL);
+                               ctp = kmalloc(sizeof(chan_tab_t), GFP_ATOMIC);
                                chan_tab_ptr[i] = ctp;
                                break;
                        }
@@ -670,7 +671,7 @@ _au1xxx_dbdma_put_dest(u32 chanid, void *buf, int nbytes, u32 flags)
         * parts. If it is fixedin the future, these dma_cache_inv will just
         * be nothing more than empty macros. See io.h.
         * */
-       dma_cache_inv((unsigned long)buf,nbytes);
+       dma_cache_inv((unsigned long)buf, nbytes);
        dp->dscr_cmd0 |= DSCR_CMD0_V;   /* Let it rip */
        au_sync();
        dma_cache_wback_inv((unsigned long)dp, sizeof(dp));
@@ -730,6 +731,8 @@ au1xxx_dbdma_get_dest(u32 chanid, void **buf, int *nbytes)
        return rv;
 }
 
+EXPORT_SYMBOL_GPL(au1xxx_dbdma_get_dest);
+
 void
 au1xxx_dbdma_stop(u32 chanid)
 {
@@ -821,6 +824,8 @@ au1xxx_get_dma_residue(u32 chanid)
        return rv;
 }
 
+EXPORT_SYMBOL_GPL(au1xxx_get_dma_residue);
+
 void
 au1xxx_dbdma_chan_free(u32 chanid)
 {
@@ -844,7 +849,7 @@ au1xxx_dbdma_chan_free(u32 chanid)
 EXPORT_SYMBOL(au1xxx_dbdma_chan_free);
 
 static irqreturn_t
-dbdma_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+dbdma_interrupt(int irq, void *dev_id)
 {
        u32 intstat;
        u32 chan_index;
@@ -854,7 +859,7 @@ dbdma_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 
        intstat = dbdma_gptr->ddma_intstat;
        au_sync();
-       chan_index = au_ffs(intstat) - 1;
+       chan_index = __ffs(intstat);
 
        ctp = chan_tab_ptr[chan_index];
        cp = ctp->chan_ptr;
@@ -866,7 +871,7 @@ dbdma_interrupt(int irq, void *dev_id, struct pt_regs *regs)
        au_sync();
 
        if (ctp->chan_callback)
-               (ctp->chan_callback)(irq, ctp->chan_callparam, regs);
+               (ctp->chan_callback)(irq, ctp->chan_callparam);
 
        ctp->cur_ptr = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr));
        return IRQ_RETVAL(1);
@@ -889,7 +894,7 @@ static void au1xxx_dbdma_init(void)
        #error Unknown Au1x00 SOC
 #endif
 
-       if (request_irq(irq_nr, dbdma_interrupt, SA_INTERRUPT,
+       if (request_irq(irq_nr, dbdma_interrupt, IRQF_DISABLED,
                        "Au1xxx dbdma", (void *)dbdma_gptr))
                printk("Can't get 1550 dbdma irq");
 }