On Wed, Mar 28, 2007 at 10:03:30PM +0200, Rask Ingemann Lambertsen wrote:
It is clearly only half-duplex when the DSP is in high-speed mode. It is less clear what will happen in low-speed mode if one tries to capture during playback or vice versa. I don't know if the Jazz16 needs high-speed mode at all, so I'll do some testing.
It plays fine in low-speed mode even at 45454 Hz and in stereo.
Note that my board is rather anonymous. For all I know, it could be an OEM one.
FCC-ID KRN3261 leads me to KTL Research Limited, Hong Kong.
[8-bit playback through 16-bit DMA channel]
Playback sounds normal except for a click for each "pointer ..." message. Any ideas? /proc/interrupts increments by 11.
This additional patch fixes it:
--- linux-2.6.20/sound/isa/sb/sb8_main.c~ 2007-03-29 00:48:56.000000000 +0200 +++ linux-2.6.20/sound/isa/sb/sb8_main.c 2007-03-29 00:48:56.000000000 +0200 @@ -228,6 +228,8 @@ static int snd_sb8_playback_prepare(stru snd_sbdsp_command(chip, 256 - runtime->rate_den); } if (chip->playback_format != SB_DSP_OUTPUT) { + if (dma > 3) + count /= 2; count--; snd_sbdsp_command(chip, SB_DSP_BLOCK_SIZE); snd_sbdsp_command(chip, count & 0xff); @@ -350,6 +352,8 @@ static int snd_sb8_capture_prepare(struc snd_sbdsp_command(chip, 256 - runtime->rate_den); } if (chip->capture_format != SB_DSP_OUTPUT) { + if (dma > 3) + count /= 2; count--; snd_sbdsp_command(chip, SB_DSP_BLOCK_SIZE); snd_sbdsp_command(chip, count & 0xff); @@ -553,6 +557,12 @@ static int snd_sb8_open(struct snd_pcm_s } snd_pcm_hw_constraint_ratnums(runtime, 0, SNDRV_PCM_HW_PARAM_RATE, &hw_constraints_clock); + if (chip->dma8 > 3) { + snd_pcm_hw_constraint_step(runtime, 0, + SNDRV_PCM_HW_PARAM_BUFFER_BYTES, 2); + snd_pcm_hw_constraint_step(runtime, 0, + SNDRV_PCM_HW_PARAM_PERIOD_BYTES, 2); + } return 0; }