Messages in this thread Patch in this message | | | Date | Sat, 22 Nov 2003 18:19:35 +1100 | Subject | [I810_AUDIO] 3/x: Remove bogus CIV_TO_LVI | From | Herbert Xu <> |
| |
This patch removes a pair of bogus LVI assignments. The explanation in the comment is wrong because the value of PCIB tells the hardware that the DMA buffer can be processed even if LVI == CIV.
Setting LVI to CIV + 1 causes overruns when with short writes (something that vmware is very fond of). -- 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.10 diff -u -r1.10 i810_audio.c --- kernel-source-2.4/drivers/sound/i810_audio.c 22 Nov 2003 07:14:08 -0000 1.10 +++ kernel-source-2.4/drivers/sound/i810_audio.c 22 Nov 2003 07:16:08 -0000 @@ -1069,25 +1069,15 @@ else port += dmabuf->write_channel->port; - /* if we are currently stopped, then our CIV is actually set to our - * *last* sg segment and we are ready to wrap to the next. However, - * if we set our LVI to the last sg segment, then it won't wrap to - * the next sg segment, it won't even get a start. So, instead, when - * we are stopped, we set both the LVI value and also we increment - * the CIV value to the next sg segment to be played so that when - * we call start_{dac,adc}, things will operate properly - */ if (!dmabuf->enable && dmabuf->ready) { if(rec && dmabuf->count < dmabuf->dmasize && (dmabuf->trigger & PCM_ENABLE_INPUT)) { - CIV_TO_LVI(port, 1); __start_adc(state); while( !(inb(port + OFF_CR) & ((1<<4) | (1<<2))) ) ; } else if (!rec && dmabuf->count && (dmabuf->trigger & PCM_ENABLE_OUTPUT)) { - CIV_TO_LVI(port, 1); __start_dac(state); while( !(inb(port + OFF_CR) & ((1<<4) | (1<<2))) ) ; } | |