diff -c --recursive /tmp/sound/pas2_pcm.c sound/pas2_pcm.c *** /tmp/sound/pas2_pcm.c Fri Jul 15 15:22:10 1994 --- sound/pas2_pcm.c Sun Jul 17 23:07:44 1994 *************** *** 274,283 **** TRACE (printk ("pas2_pcm.c: static void pas_pcm_output_block(char *buf = %P, int count = %X)\n", buf, count)); cnt = count; ! if (sound_dsp_dmachan[dev] > 3) cnt >>= 1; ! if (sound_dma_automode[dev] && intrflag && cnt == pcm_count) return; /* --- 274,283 ---- TRACE (printk ("pas2_pcm.c: static void pas_pcm_output_block(char *buf = %P, int count = %X)\n", buf, count)); cnt = count; ! if (audio_devs[dev]->dmachan > 3) cnt >>= 1; ! if (audio_devs[dev]->flags & DMA_AUTOMODE && intrflag && cnt == pcm_count) return; /* *************** *** 292,298 **** if (restart_dma) DMAbuf_start_dma (dev, buf, count, DMA_MODE_WRITE); ! if (sound_dsp_dmachan[dev] > 3) count >>= 1; if (count != pcm_count) --- 292,298 ---- if (restart_dma) DMAbuf_start_dma (dev, buf, count, DMA_MODE_WRITE); ! if (audio_devs[dev]->dmachan > 3) count >>= 1; if (count != pcm_count) *************** *** 323,332 **** TRACE (printk ("pas2_pcm.c: static void pas_pcm_start_input(char *buf = %P, int count = %X)\n", buf, count)); cnt = count; ! if (sound_dsp_dmachan[dev] > 3) cnt >>= 1; ! if (sound_dma_automode[my_devnum] && intrflag && cnt == pcm_count) return; /* --- 323,332 ---- TRACE (printk ("pas2_pcm.c: static void pas_pcm_start_input(char *buf = %P, int count = %X)\n", buf, count)); cnt = count; ! if (audio_devs[dev]->dmachan > 3) cnt >>= 1; ! if (audio_devs[my_devnum]->flags & DMA_AUTOMODE && intrflag && cnt == pcm_count) return; /* *************** *** 338,344 **** if (restart_dma) DMAbuf_start_dma (dev, buf, count, DMA_MODE_READ); ! if (sound_dsp_dmachan[dev] > 3) count >>= 1; if (count != pcm_count) --- 338,344 ---- if (restart_dma) DMAbuf_start_dma (dev, buf, count, DMA_MODE_READ); ! if (audio_devs[dev]->dmachan > 3) count >>= 1; if (count != pcm_count) *************** *** 425,431 **** * block before the PCM chip proceeds to the next sample */ ! if (!sound_dma_automode[my_devnum]) { pas_write (pas_read (PCM_CONTROL) & ~P_C_PCM_ENABLE, PCM_CONTROL); --- 425,431 ---- * block before the PCM chip proceeds to the next sample */ ! if (!(audio_devs[my_devnum]->flags & DMA_AUTOMODE)) { pas_write (pas_read (PCM_CONTROL) & ~P_C_PCM_ENABLE, PCM_CONTROL); diff -c --recursive /tmp/sound/sb16_dsp.c sound/sb16_dsp.c *** /tmp/sound/sb16_dsp.c Fri Jul 15 15:22:11 1994 --- sound/sb16_dsp.c Sun Jul 17 23:14:01 1994 *************** *** 284,290 **** printk ("output_block: %x %d %d\n", buf, count, intrflag); if (intrflag) { ! int pos, chan = sound_dsp_dmachan[dev]; DISABLE_INTR (flags); clear_dma_ff (chan); --- 284,290 ---- printk ("output_block: %x %d %d\n", buf, count, intrflag); if (intrflag) { ! int pos, chan = audio_devs[dev]->dmachan; DISABLE_INTR (flags); clear_dma_ff (chan); *************** *** 341,347 **** printk ("start_input: %x %d %d\n", buf, count, intrflag); if (intrflag) { ! int pos, chan = sound_dsp_dmachan[dev]; DISABLE_INTR (flags); clear_dma_ff (chan); --- 341,347 ---- printk ("start_input: %x %d %d\n", buf, count, intrflag); if (intrflag) { ! int pos, chan = audio_devs[dev]->dmachan; DISABLE_INTR (flags); clear_dma_ff (chan);