Lines Matching refs:chip

93 	struct snd_sb *chip = snd_pcm_substream_chip(substream);
101 switch (chip->hardware) {
104 if (chip->mode & SB_MODE_CAPTURE_16)
107 chip->mode |= SB_MODE_PLAYBACK_16;
109 chip->playback_format = SB_DSP_LO_OUTPUT_AUTO;
116 chip->playback_format = SB_DSP_HI_OUTPUT_AUTO;
122 chip->playback_format = SB_DSP_HI_OUTPUT_AUTO;
127 chip->playback_format = SB_DSP_LO_OUTPUT_AUTO;
130 chip->playback_format = SB_DSP_OUTPUT;
135 if (chip->mode & SB_MODE_PLAYBACK_16) {
137 dma = chip->dma16;
140 chip->mode |= SB_MODE_PLAYBACK_8;
141 dma = chip->dma8;
143 size = chip->p_dma_size = snd_pcm_lib_buffer_bytes(substream);
144 count = chip->p_period_size = snd_pcm_lib_period_bytes(substream);
145 spin_lock_irqsave(&chip->reg_lock, flags);
146 snd_sbdsp_command(chip, SB_DSP_SPEAKER_ON);
147 if (chip->hardware == SB_HW_JAZZ16)
148 snd_sbdsp_command(chip, format);
151 spin_lock(&chip->mixer_lock);
152 mixreg = snd_sbmixer_read(chip, SB_DSP_STEREO_SW);
153 snd_sbmixer_write(chip, SB_DSP_STEREO_SW, mixreg | 0x02);
154 spin_unlock(&chip->mixer_lock);
157 snd_sbdsp_command(chip, SB_DSP_DMA8_EXIT);
161 snd_sbdsp_command(chip, SB_DSP_OUTPUT);
162 snd_sbdsp_command(chip, 0);
163 snd_sbdsp_command(chip, 0);
165 snd_sbdsp_command(chip, SB_DSP_SAMPLE_RATE);
167 snd_sbdsp_command(chip, 256 - runtime->rate_den / 2);
168 spin_lock(&chip->mixer_lock);
170 mixreg = snd_sbmixer_read(chip, SB_DSP_PLAYBACK_FILT);
171 snd_sbmixer_write(chip, SB_DSP_PLAYBACK_FILT, mixreg | 0x20);
172 spin_unlock(&chip->mixer_lock);
174 chip->force_mode16 = mixreg;
176 snd_sbdsp_command(chip, 256 - runtime->rate_den);
178 if (chip->playback_format != SB_DSP_OUTPUT) {
179 if (chip->mode & SB_MODE_PLAYBACK_16)
182 snd_sbdsp_command(chip, SB_DSP_BLOCK_SIZE);
183 snd_sbdsp_command(chip, count & 0xff);
184 snd_sbdsp_command(chip, count >> 8);
186 spin_unlock_irqrestore(&chip->reg_lock, flags);
196 struct snd_sb *chip = snd_pcm_substream_chip(substream);
199 spin_lock_irqsave(&chip->reg_lock, flags);
202 snd_sbdsp_command(chip, chip->playback_format);
203 if (chip->playback_format == SB_DSP_OUTPUT) {
204 count = chip->p_period_size - 1;
205 snd_sbdsp_command(chip, count & 0xff);
206 snd_sbdsp_command(chip, count >> 8);
210 if (chip->playback_format == SB_DSP_HI_OUTPUT_AUTO) {
212 snd_sbdsp_reset(chip);
214 spin_lock(&chip->mixer_lock);
216 snd_sbmixer_write(chip, SB_DSP_STEREO_SW, chip->force_mode16 & ~0x02);
217 spin_unlock(&chip->mixer_lock);
220 snd_sbdsp_command(chip, SB_DSP_DMA8_OFF);
222 snd_sbdsp_command(chip, SB_DSP_SPEAKER_OFF);
224 spin_unlock_irqrestore(&chip->reg_lock, flags);
231 struct snd_sb *chip = snd_pcm_substream_chip(substream);
239 switch (chip->hardware) {
242 if (chip->mode & SB_MODE_PLAYBACK_16)
245 chip->mode |= SB_MODE_CAPTURE_16;
247 chip->capture_format = SB_DSP_LO_INPUT_AUTO;
254 chip->capture_format = SB_DSP_HI_INPUT_AUTO;
257 chip->capture_format = (rate > 23000) ? SB_DSP_HI_INPUT_AUTO : SB_DSP_LO_INPUT_AUTO;
261 chip->capture_format = SB_DSP_HI_INPUT_AUTO;
266 chip->capture_format = SB_DSP_LO_INPUT_AUTO;
269 chip->capture_format = SB_DSP_INPUT;
274 if (chip->mode & SB_MODE_CAPTURE_16) {
276 dma = chip->dma16;
279 chip->mode |= SB_MODE_CAPTURE_8;
280 dma = chip->dma8;
282 size = chip->c_dma_size = snd_pcm_lib_buffer_bytes(substream);
283 count = chip->c_period_size = snd_pcm_lib_period_bytes(substream);
284 spin_lock_irqsave(&chip->reg_lock, flags);
285 snd_sbdsp_command(chip, SB_DSP_SPEAKER_OFF);
286 if (chip->hardware == SB_HW_JAZZ16)
287 snd_sbdsp_command(chip, format);
289 snd_sbdsp_command(chip, SB_DSP_STEREO_8BIT);
290 snd_sbdsp_command(chip, SB_DSP_SAMPLE_RATE);
292 snd_sbdsp_command(chip, 256 - runtime->rate_den / 2);
293 spin_lock(&chip->mixer_lock);
295 mixreg = snd_sbmixer_read(chip, SB_DSP_CAPTURE_FILT);
296 snd_sbmixer_write(chip, SB_DSP_CAPTURE_FILT, mixreg | 0x20);
297 spin_unlock(&chip->mixer_lock);
299 chip->force_mode16 = mixreg;
301 snd_sbdsp_command(chip, 256 - runtime->rate_den);
303 if (chip->capture_format != SB_DSP_INPUT) {
304 if (chip->mode & SB_MODE_PLAYBACK_16)
307 snd_sbdsp_command(chip, SB_DSP_BLOCK_SIZE);
308 snd_sbdsp_command(chip, count & 0xff);
309 snd_sbdsp_command(chip, count >> 8);
311 spin_unlock_irqrestore(&chip->reg_lock, flags);
321 struct snd_sb *chip = snd_pcm_substream_chip(substream);
324 spin_lock_irqsave(&chip->reg_lock, flags);
327 snd_sbdsp_command(chip, chip->capture_format);
328 if (chip->capture_format == SB_DSP_INPUT) {
329 count = chip->c_period_size - 1;
330 snd_sbdsp_command(chip, count & 0xff);
331 snd_sbdsp_command(chip, count >> 8);
335 if (chip->capture_format == SB_DSP_HI_INPUT_AUTO) {
337 snd_sbdsp_reset(chip);
340 spin_lock(&chip->mixer_lock);
341 snd_sbmixer_write(chip, SB_DSP_CAPTURE_FILT, chip->force_mode16);
342 spin_unlock(&chip->mixer_lock);
344 snd_sbdsp_command(chip, SB_DSP_MONO_8BIT);
347 snd_sbdsp_command(chip, SB_DSP_DMA8_OFF);
349 snd_sbdsp_command(chip, SB_DSP_SPEAKER_OFF);
351 spin_unlock_irqrestore(&chip->reg_lock, flags);
355 irqreturn_t snd_sb8dsp_interrupt(struct snd_sb *chip)
359 snd_sb_ack_8bit(chip);
360 switch (chip->mode) {
362 if (chip->hardware != SB_HW_JAZZ16)
366 substream = chip->playback_substream;
367 if (chip->playback_format == SB_DSP_OUTPUT)
372 if (chip->hardware != SB_HW_JAZZ16)
376 substream = chip->capture_substream;
377 if (chip->capture_format == SB_DSP_INPUT)
387 struct snd_sb *chip = snd_pcm_substream_chip(substream);
391 if (chip->mode & SB_MODE_PLAYBACK_8)
392 dma = chip->dma8;
393 else if (chip->mode & SB_MODE_PLAYBACK_16)
394 dma = chip->dma16;
397 ptr = snd_dma_pointer(dma, chip->p_dma_size);
403 struct snd_sb *chip = snd_pcm_substream_chip(substream);
407 if (chip->mode & SB_MODE_CAPTURE_8)
408 dma = chip->dma8;
409 else if (chip->mode & SB_MODE_CAPTURE_16)
410 dma = chip->dma16;
413 ptr = snd_dma_pointer(dma, chip->c_dma_size);
465 struct snd_sb *chip = snd_pcm_substream_chip(substream);
469 spin_lock_irqsave(&chip->open_lock, flags);
470 if (chip->open) {
471 spin_unlock_irqrestore(&chip->open_lock, flags);
474 chip->open |= SB_OPEN_PCM;
475 spin_unlock_irqrestore(&chip->open_lock, flags);
477 chip->playback_substream = substream;
480 chip->capture_substream = substream;
483 switch (chip->hardware) {
485 if (chip->dma16 == 5 || chip->dma16 == 7)
514 if (chip->dma8 > 3 || chip->dma16 >= 0) {
528 struct snd_sb *chip = snd_pcm_substream_chip(substream);
530 chip->playback_substream = NULL;
531 chip->capture_substream = NULL;
532 spin_lock_irqsave(&chip->open_lock, flags);
533 chip->open &= ~SB_OPEN_PCM;
535 chip->mode &= ~SB_MODE_PLAYBACK;
537 chip->mode &= ~SB_MODE_CAPTURE;
538 spin_unlock_irqrestore(&chip->open_lock, flags);
562 int snd_sb8dsp_pcm(struct snd_sb *chip, int device)
564 struct snd_card *card = chip->card;
571 sprintf(pcm->name, "DSP v%i.%i", chip->version >> 8, chip->version & 0xff);
573 pcm->private_data = chip;
578 if (chip->dma8 > 3 || chip->dma16 >= 0)