• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/sound/oss/

Lines Matching refs:devc

220 static void     sb_mixer_reset(sb_devc * devc);
222 void sb_mixer_set_stereo(sb_devc * devc, int mode)
224 sb_chgmixer(devc, OUT_FILTER, STEREO_DAC, (mode ? STEREO_DAC : MONO_DAC));
227 static int detect_mixer(sb_devc * devc)
233 static void change_bits(sb_devc * devc, unsigned char *regval, int dev, int chn, int newval)
238 mask = (1 << (*devc->iomap)[dev][chn].nbits) - 1;
241 shift = (*devc->iomap)[dev][chn].bitoffs - (*devc->iomap)[dev][LEFT_CHN].nbits + 1;
247 static int sb_mixer_get(sb_devc * devc, int dev)
249 if (!((1 << dev) & devc->supported_devices))
251 return devc->levels[dev];
254 void smw_mixer_init(sb_devc * devc)
258 sb_setmixer(devc, 0x00, 0x18); /* Mute unused (Telephone) line */
259 sb_setmixer(devc, 0x10, 0x38); /* Config register 2 */
261 devc->supported_devices = 0;
264 devc->supported_devices |= (1 << i);
266 devc->supported_rec_devices = devc->supported_devices &
268 sb_mixer_reset(devc);
271 int sb_common_mixer_set(sb_devc * devc, int dev, int left, int right)
276 if ((dev < 0) || (dev >= devc->iomap_sz))
279 regoffs = (*devc->iomap)[dev][LEFT_CHN].regno;
284 val = sb_getmixer(devc, regoffs);
285 change_bits(devc, &val, dev, LEFT_CHN, left);
287 if ((*devc->iomap)[dev][RIGHT_CHN].regno != regoffs) /*
291 sb_setmixer(devc, regoffs, val); /*
294 regoffs = (*devc->iomap)[dev][RIGHT_CHN].regno;
301 val = sb_getmixer(devc, regoffs); /*
305 change_bits(devc, &val, dev, RIGHT_CHN, right);
307 sb_setmixer(devc, regoffs, val);
312 static int smw_mixer_set(sb_devc * devc, int dev, int left, int right)
319 sb_setmixer(devc, 0x0b, 96 - (96 * left / 100)); /* 96=mute, 0=max */
320 sb_setmixer(devc, 0x0c, 96 - (96 * right / 100));
325 devc->levels[dev] = left | (right << 8);
327 val = ((devc->levels[SOUND_MIXER_TREBLE] & 0xff) * 16 / (unsigned) 100) << 4;
328 val |= ((devc->levels[SOUND_MIXER_BASS] & 0xff) * 16 / (unsigned) 100) & 0x0f;
329 sb_setmixer(devc, 0x0d, val);
332 val = (((devc->levels[SOUND_MIXER_TREBLE] >> 8) & 0xff) * 16 / (unsigned) 100) << 4;
333 val |= (((devc->levels[SOUND_MIXER_BASS] >> 8) & 0xff) * 16 / (unsigned) 100) & 0x0f;
334 sb_setmixer(devc, 0x0e, val);
345 sb_setmixer(devc, reg, (24 - (24 * left / 100)) | 0x20); /* 24=mute, 0=max */
346 sb_setmixer(devc, reg + 1, (24 - (24 * right / 100)) | 0x40);
349 devc->levels[dev] = left | (right << 8);
353 static int sb_mixer_set(sb_devc * devc, int dev, int value)
367 if (!(devc->supported_devices & (1 << dev))) /*
373 switch (devc->model) {
375 retval = smw_mixer_set(devc, dev, left, right);
378 retval = ess_mixer_set(devc, dev, left, right);
381 retval = sb_common_mixer_set(devc, dev, left, right);
383 if (retval >= 0) devc->levels[dev] = retval;
391 static void set_recsrc(sb_devc * devc, int src)
393 sb_setmixer(devc, RECORD_SRC, (sb_getmixer(devc, RECORD_SRC) & ~7) | (src & 0x7));
396 static int set_recmask(sb_devc * devc, int mask)
401 devmask = mask & devc->supported_rec_devices;
403 switch (devc->model)
409 if (devc->model == MDL_ESS && ess_set_recmask (devc, &devmask)) {
420 devmask &= ~devc->recmask;
432 if (devmask ^ devc->recmask) /*
439 set_recsrc(devc, SRC__MIC);
443 set_recsrc(devc, SRC__LINE);
447 set_recsrc(devc, SRC__CD);
451 set_recsrc(devc, SRC__MIC);
460 if (devc->submodel == SUBMDL_ALS007)
465 sb_setmixer(devc, ALS007_RECORD_SRC, ALS007_LINE);
468 sb_setmixer(devc, ALS007_RECORD_SRC, ALS007_CD);
471 sb_setmixer(devc, ALS007_RECORD_SRC, ALS007_SYNTH);
474 sb_setmixer(devc, ALS007_RECORD_SRC, ALS007_MIC);
488 sb_setmixer (devc, SB16_IMASK_L, regimageL);
489 sb_setmixer (devc, SB16_IMASK_R, regimageR);
494 devc->recmask = devmask;
495 return devc->recmask;
498 static int set_outmask(sb_devc * devc, int mask)
503 devmask = mask & devc->supported_out_devices;
505 switch (devc->model)
508 if (devc->submodel == SUBMDL_ALS007)
519 sb_setmixer (devc, SB16_OMASK, regimage);
527 devc->outmask = devmask;
528 return devc->outmask;
533 sb_devc *devc = mixer_devs[dev]->devc;
542 if (devc->model == MDL_SB16) {
547 sb_setmixer(devc, 0x43, (~val) & 0x01);
554 if (devc->minor < 15)
559 sb_chgmixer(devc, AWE_3DSE, 0x01, val);
562 ret = sb_getmixer(devc, AWE_3DSE)&0x01;
579 ret = set_recmask(devc, val);
583 ret = set_outmask(devc, val);
587 ret = sb_mixer_set(devc, cmd & 0xff, val);
593 ret = devc->recmask;
597 ret = devc->outmask;
601 ret = devc->supported_devices;
605 ret = devc->supported_devices;
607 if (devc->model == MDL_ESS)
609 else if (devc->model != MDL_JAZZ && devc->model != MDL_SMW)
614 ret = devc->supported_rec_devices;
618 ret = devc->supported_out_devices;
622 ret = devc->mixer_caps;
626 ret = sb_mixer_get(devc, cmd & 0xff);
650 static void sb_mixer_reset(sb_devc * devc)
655 sprintf(name, "SB_%d", devc->sbmixnum);
657 if (devc->sbmo.sm_games)
658 devc->levels = load_mixer_volumes(name, smg_default_levels, 1);
660 devc->levels = load_mixer_volumes(name, sb_default_levels, 1);
663 sb_mixer_set(devc, i, devc->levels[i]);
665 if (devc->model != MDL_ESS || !ess_mixer_reset (devc)) {
666 set_recmask(devc, SOUND_MASK_MIC);
670 int sb_mixer_init(sb_devc * devc, struct module *owner)
675 devc->sbmixnum = sbmixnum++;
676 devc->levels = NULL;
678 sb_setmixer(devc, 0x00, 0); /* Reset mixer */
680 if (!(mixer_type = detect_mixer(devc)))
683 switch (devc->model)
690 devc->mixer_caps = SOUND_CAP_EXCL_INPUT;
691 devc->supported_devices = SBPRO_MIXER_DEVICES;
692 devc->supported_rec_devices = SBPRO_RECORDING_DEVICES;
693 devc->iomap = &sbpro_mix;
694 devc->iomap_sz = ARRAY_SIZE(sbpro_mix);
698 ess_mixer_init (devc);
702 devc->mixer_caps = SOUND_CAP_EXCL_INPUT;
703 devc->supported_devices = 0;
704 devc->supported_rec_devices = 0;
705 devc->iomap = &sbpro_mix;
706 devc->iomap_sz = ARRAY_SIZE(sbpro_mix);
707 smw_mixer_init(devc);
711 devc->mixer_caps = 0;
712 devc->supported_rec_devices = SB16_RECORDING_DEVICES;
713 devc->supported_out_devices = SB16_OUTFILTER_DEVICES;
714 if (devc->submodel != SUBMDL_ALS007)
716 devc->supported_devices = SB16_MIXER_DEVICES;
717 devc->iomap = &sb16_mix;
718 devc->iomap_sz = ARRAY_SIZE(sb16_mix);
722 devc->supported_devices = ALS007_MIXER_DEVICES;
723 devc->iomap = &als007_mix;
724 devc->iomap_sz = ARRAY_SIZE(als007_mix);
729 printk(KERN_WARNING "sb_mixer: Unsupported mixer type %d\n", devc->model);
745 if (devc->submodel != SUBMDL_ALS007)
750 mixer_devs[m]->devc = devc;
755 devc->my_mixerdev = m;
756 sb_mixer_reset(devc);
760 void sb_mixer_unload(sb_devc *devc)
762 if (devc->my_mixerdev == -1)
765 kfree(mixer_devs[devc->my_mixerdev]);
766 sound_unload_mixerdev(devc->my_mixerdev);