• 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

15   while (timeout > 0 && (inb(devc->base)&0x80)!= 0x80) {\
65 static int ad_read (ad1816_info * devc, int reg)
70 outb ((unsigned char) (reg & 0x3f), devc->base+0);
71 result = inb(devc->base+2);
72 result+= inb(devc->base+3)<<8;
77 static void ad_write (ad1816_info * devc, int reg, int data)
80 outb ((unsigned char) (reg & 0xff), devc->base+0);
81 outb ((unsigned char) (data & 0xff),devc->base+2);
82 outb ((unsigned char) ((data>>8)&0xff),devc->base+3);
92 ad1816_info *devc = (ad1816_info *) audio_devs[dev]->devc;
97 spin_lock_irqsave(&devc->lock,flags);
103 buffer=inb(devc->base+9);
106 outb(buffer & ~0x01,devc->base+9);
114 outb (~0x40, devc->base+1);
116 devc->audio_mode &= ~PCM_ENABLE_INPUT;
117 spin_unlock_irqrestore(&devc->lock,flags);
123 ad1816_info *devc = (ad1816_info *) audio_devs[dev]->devc;
129 spin_lock_irqsave(&devc->lock,flags);
131 ad_write(devc, 4, ad_read(devc,4)|0x8080);
137 buffer=inb(devc->base+8);
140 outb(buffer & ~0x01,devc->base+8);
148 outb ((unsigned char)~0x80, devc->base+1);
150 devc->audio_mode &= ~PCM_ENABLE_OUTPUT;
151 spin_unlock_irqrestore(&devc->lock,flags);
159 ad1816_info *devc = (ad1816_info *) audio_devs[dev]->devc;
165 spin_lock_irqsave(&devc->lock,flags);
168 ad_write (devc, 8, cnt & 0xffff);
170 devc->audio_mode |= PCM_ENABLE_OUTPUT;
171 spin_unlock_irqrestore(&devc->lock,flags);
180 ad1816_info *devc = (ad1816_info *) audio_devs[dev]->devc;
186 spin_lock_irqsave(&devc->lock,flags);
189 ad_write (devc, 10, cnt & 0xffff);
190 devc->audio_mode |= PCM_ENABLE_INPUT;
191 spin_unlock_irqrestore(&devc->lock,flags);
198 ad1816_info *devc = (ad1816_info *) audio_devs[dev]->devc;
203 spin_lock_irqsave(&devc->lock,flags);
204 fmt_bits= (devc->format_bits&0x7)<<3;
207 if (devc->channels > 1) {
211 outb( (inb(devc->base+8) & ~0x3C)|fmt_bits, devc->base+8);
212 outb( (inb(devc->base+9) & ~0x3C)|fmt_bits, devc->base+9);
214 freq=((unsigned int)devc->speed*33000)/ad1816_clockfreq;
217 ad_write (devc, 2, freq & 0xffff);
218 ad_write (devc, 3, freq & 0xffff);
220 spin_unlock_irqrestore(&devc->lock,flags);
230 ad1816_info *devc = (ad1816_info *) audio_devs[dev]->devc;
235 spin_lock_irqsave(&devc->lock,flags);
237 fmt_bits= (devc->format_bits&0x7)<<3;
239 if (devc->channels > 1) {
244 outb( (inb(devc->base+8) & ~0x3C)|fmt_bits, devc->base+8);
245 outb( (inb(devc->base+9) & ~0x3C)|fmt_bits, devc->base+9);
247 freq=((unsigned int)devc->speed*33000)/ad1816_clockfreq;
250 ad_write (devc, 2, freq & 0xffff);
251 ad_write (devc, 3, freq & 0xffff);
253 spin_unlock_irqrestore(&devc->lock,flags);
263 ad1816_info *devc = (ad1816_info *) audio_devs[dev]->devc;
265 DEBUGNOISE(printk(KERN_DEBUG "ad1816: trigger called! (devc=%d,devc->base=%d\n", devc, devc->base));
269 spin_lock_irqsave(&devc->lock,flags);
272 state &= devc->audio_mode;
277 outb(inb(devc->base+9)|0x01, devc->base+9);
280 outb(inb(devc->base+9)&~0x01, devc->base+9);
285 outb(inb(devc->base+8)|0x01, devc->base+8);
287 ad_write(devc, 4, ad_read(devc,4)&~0x8080);
290 ad_write(devc, 4, ad_read(devc,4)|0x8080);
292 outb(inb(devc->base+8)&~0x01, devc->base+8);
294 spin_unlock_irqrestore(&devc->lock,flags);
317 ad1816_info *devc = (ad1816_info *) audio_devs[dev]->devc;
319 spin_lock_irqsave(&devc->lock, flags);
321 ret = devc->speed;
322 spin_unlock_irqrestore(&devc->lock, flags);
332 devc->speed = arg;
335 freq=((unsigned int)devc->speed*33000)/ad1816_clockfreq;
337 ad_write (devc, 2, freq & 0xffff);
338 ad_write (devc, 3, freq & 0xffff);
340 ret = devc->speed;
341 spin_unlock_irqrestore(&devc->lock, flags);
349 ad1816_info *devc = (ad1816_info *) audio_devs[dev]->devc;
369 spin_lock_irqsave(&devc->lock, flags);
372 arg = devc->audio_format;
373 spin_unlock_irqrestore(&devc->lock, flags);
376 devc->audio_format = arg;
381 devc->format_bits = format2bits[i].bits;
382 devc->audio_format = arg;
383 spin_unlock_irqrestore(&devc->lock, flags);
388 devc->format_bits = 0;
389 devc->audio_format = AFMT_U8;
390 spin_unlock_irqrestore(&devc->lock, flags);
396 ad1816_info *devc = (ad1816_info *) audio_devs[dev]->devc;
399 return devc->channels;
401 devc->channels = arg;
408 ad1816_info *devc = NULL;
416 devc = (ad1816_info *) audio_devs[dev]->devc;
419 spin_lock_irqsave(&devc->lock,flags);
421 if (devc->opened) {
422 spin_unlock_irqrestore(&devc->lock,flags);
427 devc->opened = 1;
429 devc->audio_mode = 0;
430 devc->speed = 8000;
431 devc->audio_format=AFMT_U8;
432 devc->channels=1;
433 spin_unlock_irqrestore(&devc->lock,flags);
434 ad1816_reset(devc->dev_no); /* halt all pending output */
441 ad1816_info *devc = (ad1816_info *) audio_devs[dev]->devc;
444 ad1816_reset(devc->dev_no);
446 spin_lock_irqsave(&devc->lock,flags);
447 devc->opened = 0;
448 devc->audio_mode = 0;
449 devc->speed = 8000;
450 devc->audio_format=AFMT_U8;
451 devc->format_bits = 0;
452 spin_unlock_irqrestore(&devc->lock,flags);
487 ad1816_info *devc = (ad1816_info *)dev_id;
494 spin_lock(&devc->lock);
497 status = inb (devc->base+1);
499 outb (~status, devc->base+1);
505 spin_unlock(&devc->lock);
509 if (devc->opened && (devc->audio_mode & PCM_ENABLE_INPUT) && (status&64))
510 DMAbuf_inputintr (devc->dev_no);
512 if (devc->opened && (devc->audio_mode & PCM_ENABLE_OUTPUT) && (status & 128))
513 DMAbuf_outputintr (devc->dev_no, 1);
515 spin_unlock(&devc->lock);
602 ad1816_set_recmask (ad1816_info * devc, int mask)
608 spin_lock_irqsave(&devc->lock, flags);
609 mask &= devc->supported_rec_devices;
621 mask &= ~devc->recmask;
664 ad_write (devc, 20,
665 (ad_read (devc, 20) & 0x8f8f) | recdev | (recdev<<8));
667 devc->recmask = mask;
668 spin_unlock_irqrestore(&devc->lock, flags);
694 ad1816_mixer_get (ad1816_info * devc, int dev)
701 if (!((1 << dev) & devc->supported_devices))
704 return devc->levels[dev];
708 ad1816_mixer_set (ad1816_info * devc, int dev, int value)
744 if (!(devc->supported_devices & (1 << dev)))
750 spin_lock_irqsave(&devc->lock, flags);
753 devc->levels[dev] = retvol;
757 val = ad_read (devc, regoffs);
771 ad_write (devc, regoffs, valmute); /* mute */
779 spin_unlock_irqrestore(&devc->lock, flags);
784 val = ad_read (devc, regoffs);
796 ad_write (devc, regoffs, valmute); /* mute */
797 spin_unlock_irqrestore(&devc->lock, flags);
821 ad1816_mixer_reset (ad1816_info * devc)
825 devc->supported_devices = MIXER_DEVICES;
827 devc->supported_rec_devices = REC_DEVICES;
830 if (devc->supported_devices & (1 << i))
831 ad1816_mixer_set (devc, i, default_mixer_levels[i]);
832 ad1816_set_recmask (devc, SOUND_MASK_MIC);
838 ad1816_info *devc = mixer_devs[dev]->devc;
854 val=ad1816_set_recmask (devc, val);
861 if ((val=ad1816_mixer_set (devc, cmd & 0xff, val))<0)
871 val=devc->recmask;
876 val=devc->supported_devices;
881 val=devc->supported_devices & ~(SOUND_MASK_SPEAKER | SOUND_MASK_IMIX);
886 val=devc->supported_rec_devices;
896 if ((val=ad1816_mixer_get (devc, cmd & 0xff))<0)
930 ad1816_info *devc = NULL;
953 devc = &dev_info[nr_ad1816_devs];
954 devc->base = hw_config->io_base;
955 devc->irq = hw_config->irq;
956 devc->dma_playback=hw_config->dma;
957 devc->dma_capture=hw_config->dma2;
958 devc->opened = 0;
959 devc->pnpdev = pnp;
960 spin_lock_init(&devc->lock);
962 if (!request_region(devc->base, 16, "AD1816 Sound")) {
964 devc->base);
969 devc->base);
974 tmp=inb(devc->base);
982 ad_write(devc,8,12345);
983 if (ad_read(devc,9)!=12345) {
989 ad_write(devc,8,54321);
990 if (ad_read(devc,9)!=54321) {
996 ad_write(devc,10,54321);
997 if (ad_read(devc,11)!=54321) {
1003 ad_write(devc,10,12345);
1004 if (ad_read(devc,11)!=12345) {
1010 tmp=inb(devc->base+1);
1011 outb(0xff,devc->base+1);
1012 if (inb(devc->base+1)!=tmp) {
1018 ad_read(devc,45));
1021 ad_write(devc,1,0);
1024 outb (0, devc->base+1);
1027 if (devc->irq < 0 || devc->irq > 15)
1029 if (request_irq(devc->irq, ad1816_interrupt,0,
1030 "SoundPort", devc) < 0) {
1036 if (sound_alloc_dma (devc->dma_playback, "Sound System")) {
1038 devc->dma_playback);
1042 if ( devc->dma_capture >= 0 &&
1043 devc->dma_capture != devc->dma_playback) {
1044 if (sound_alloc_dma(devc->dma_capture,
1047 devc->dma_capture);
1050 devc->audio_mode=DMA_AUTOMODE|DMA_DUPLEX;
1054 devc->audio_mode=DMA_AUTOMODE;
1058 devc->base, devc->irq, devc->dma_playback,
1059 devc->dma_capture);
1066 devc->audio_mode,
1068 devc,
1069 devc->dma_playback,
1070 devc->dma_capture)) < 0) {
1076 ad_write(devc,32,0x80f0); /* sound system mode */
1078 ad_write(devc,33,0); /* disable all audiosources for dsp */
1080 ad_write(devc,33,0x03f8); /* enable all audiosources for dsp */
1082 ad_write(devc,4,0x8080); /* default values for volumes (muted)*/
1083 ad_write(devc,5,0x8080);
1084 ad_write(devc,6,0x8080);
1085 ad_write(devc,7,0x8080);
1086 ad_write(devc,15,0x8888);
1087 ad_write(devc,16,0x8888);
1088 ad_write(devc,17,0x8888);
1089 ad_write(devc,18,0x8888);
1090 ad_write(devc,19,0xc888); /* +20db mic active */
1091 ad_write(devc,14,0x0000); /* Master volume unmuted */
1092 ad_write(devc,39,0x009f); /* 3D effect on 0% phone out muted */
1093 ad_write(devc,44,0x0080); /* everything on power, 3d enabled for d/a */
1094 outb(0x10,devc->base+8); /* set dma mode */
1095 outb(0x10,devc->base+9);
1098 ad_write(devc,1,0xc000);
1101 ad1816_mixer_reset (devc);
1109 devc)) < 0) {
1118 if (devc->dma_capture >= 0 && devc->dma_capture != devc->dma_playback)
1119 sound_free_dma(devc->dma_capture);
1121 sound_free_dma(devc->dma_playback);
1123 free_irq(devc->irq, devc);
1125 release_region(devc->base, 16);
1130 static void __exit unload_card(ad1816_info *devc)
1134 if (devc != NULL) {
1135 printk("ad1816: Unloading card at address 0x%03x\n",devc->base);
1137 dev = devc->dev_no;
1148 if (devc->dma_capture>=0 &&
1149 devc->dma_capture != devc->dma_playback) {
1150 sound_free_dma(devc->dma_capture);
1152 sound_free_dma (devc->dma_playback);
1154 free_irq(devc->irq, devc);
1156 release_region (devc->base, 16);
1158 if (devc->pnpdev) {
1159 pnp_disable_dev(devc->pnpdev);
1160 pnp_device_detach(devc->pnpdev);
1296 ad1816_info *devc = NULL;
1300 devc = &dev_info[i];
1301 unload_card(devc);