lkml.org 
[lkml]   [2003]   [Nov]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[I810_AUDIO] 8/x: Remove divides on playback
    From
    This patch removes a couple of divides on the playback path.
    --
    Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
    Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
    Home Page: http://gondor.apana.org.au/~herbert/
    PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
    Index: kernel-source-2.4/drivers/sound/i810_audio.c
    ===================================================================
    RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.4/drivers/sound/i810_audio.c,v
    retrieving revision 1.15
    diff -u -r1.15 i810_audio.c
    --- kernel-source-2.4/drivers/sound/i810_audio.c 22 Nov 2003 23:51:09 -0000 1.15
    +++ kernel-source-2.4/drivers/sound/i810_audio.c 22 Nov 2003 23:51:29 -0000
    @@ -100,6 +100,7 @@
    #include <linux/smp_lock.h>
    #include <linux/ac97_codec.h>
    #include <linux/wrapper.h>
    +#include <linux/bitops.h>
    #include <asm/uaccess.h>
    #include <asm/hardirq.h>

    @@ -990,6 +991,7 @@
    dmabuf->numfrag = SG_LEN;
    dmabuf->fragsize = dmabuf->dmasize/dmabuf->numfrag;
    dmabuf->fragsamples = dmabuf->fragsize >> 1;
    + dmabuf->fragshift = ffs(dmabuf->fragsize) - 1;
    dmabuf->userfragsize = dmabuf->ossfragsize;
    dmabuf->userfrags = dmabuf->dmasize/dmabuf->ossfragsize;

    @@ -997,16 +999,12 @@

    if(dmabuf->ossmaxfrags == 4) {
    fragint = 8;
    - dmabuf->fragshift = 2;
    } else if (dmabuf->ossmaxfrags == 8) {
    fragint = 4;
    - dmabuf->fragshift = 3;
    } else if (dmabuf->ossmaxfrags == 16) {
    fragint = 2;
    - dmabuf->fragshift = 4;
    } else {
    fragint = 1;
    - dmabuf->fragshift = 5;
    }
    /*
    * Now set up the ring
    @@ -1103,7 +1101,7 @@

    /* MASKP2(swptr, fragsize) - 1 is the tail of our transfer */
    x = MODULOP2(MASKP2(dmabuf->swptr, fragsize) - 1, dmabuf->dmasize);
    - x /= fragsize;
    + x >>= dmabuf->fragshift;
    outb(x, port + OFF_LVI);
    }

    @@ -1697,7 +1695,7 @@
    goto ret;
    }

    - swptr = (swptr + cnt) % dmabuf->dmasize;
    + swptr = MODULOP2(swptr + cnt, dmabuf->dmasize);

    spin_lock_irqsave(&state->card->lock, flags);
    if (PM_SUSPENDED(card)) {
    \
     
     \ /
      Last update: 2005-03-22 13:58    [W:0.022 / U:124.424 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site