Lines Matching defs:ac97
22 static void snd_ac97_proc_read_functions(struct snd_ac97 *ac97, struct snd_info_buffer *buffer)
37 snd_ac97_write(ac97, AC97_FUNC_SELECT, function << 1);
38 info = snd_ac97_read(ac97, AC97_FUNC_INFO);
45 sense_info = snd_ac97_read(ac97, AC97_SENSE_INFO);
92 static void snd_ac97_proc_read_main(struct snd_ac97 *ac97, struct snd_info_buffer *buffer, int subidx)
101 snd_ac97_get_name(NULL, ac97->id, name, sizeof(name), 0);
102 snd_iprintf(buffer, "%d-%d/%d: %s\n\n", ac97->addr, ac97->num, subidx, name);
104 if ((ac97->scaps & AC97_SCAP_AUDIO) == 0)
108 ac97->subsystem_vendor);
110 ac97->subsystem_device);
112 snd_iprintf(buffer, "Flags: %x\n", ac97->flags);
114 if ((ac97->ext_id & AC97_EI_REV_MASK) >= AC97_EI_REV_23) {
115 val = snd_ac97_read(ac97, AC97_INT_PAGING);
116 snd_ac97_update_bits(ac97, AC97_INT_PAGING,
118 tmp = snd_ac97_read(ac97, AC97_CODEC_CLASS_REV);
122 snd_ac97_read(ac97, AC97_PCI_SVID));
124 snd_ac97_read(ac97, AC97_PCI_SID));
125 snd_ac97_update_bits(ac97, AC97_INT_PAGING,
129 // val = snd_ac97_read(ac97, AC97_RESET);
130 val = ac97->caps;
138 tmp = ac97->caps & AC97_BC_DAC_MASK;
144 tmp = ac97->caps & AC97_BC_ADC_MASK;
153 val = snd_ac97_read(ac97, AC97_MIC);
154 snd_iprintf(buffer, "Mic gain : %s [%s]\n", val & 0x0040 ? "+20dB" : "+0dB", ac97->regs[AC97_MIC] & 0x0040 ? "+20dB" : "+0dB");
155 val = snd_ac97_read(ac97, AC97_GENERAL_PURPOSE);
170 if (ac97->ext_id & AC97_EI_DRA)
174 ext = snd_ac97_read(ac97, AC97_EXTENDED_ID);
190 val = snd_ac97_read(ac97, AC97_EXTENDED_STATUS);
207 val = snd_ac97_read(ac97, AC97_PCM_FRONT_DAC_RATE);
210 val = snd_ac97_read(ac97, AC97_PCM_SURR_DAC_RATE);
214 val = snd_ac97_read(ac97, AC97_PCM_LFE_DAC_RATE);
217 val = snd_ac97_read(ac97, AC97_PCM_LR_ADC_RATE);
221 val = snd_ac97_read(ac97, AC97_PCM_MIC_ADC_RATE);
224 if ((ext & AC97_EI_SPDIF) || (ac97->flags & AC97_CS_SPDIF) ||
225 (ac97->id == AC97_ID_YMF743)) {
226 if (ac97->flags & AC97_CS_SPDIF)
227 val = snd_ac97_read(ac97, AC97_CSR_SPDIF);
228 else if (ac97->id == AC97_ID_YMF743) {
229 val = snd_ac97_read(ac97, AC97_YMF7X3_DIT_CTRL);
232 val = snd_ac97_read(ac97, AC97_SPDIF);
241 (ac97->flags & AC97_CS_SPDIF) ?
244 (ac97->flags & AC97_CS_SPDIF) ?
247 (ac97->flags & AC97_CS_SPDIF) ?
251 if ((ac97->id & 0xfffffff0) == 0x414c4720 &&
252 (snd_ac97_read(ac97, AC97_ALC650_CLOCK) & 0x01)) {
253 val = snd_ac97_read(ac97, AC97_ALC650_SPDIF_INPUT_STATUS2);
255 val = snd_ac97_read(ac97, AC97_ALC650_SPDIF_INPUT_STATUS1);
263 val = snd_ac97_read(ac97, AC97_ALC650_SPDIF_INPUT_STATUS2);
274 if ((ac97->ext_id & AC97_EI_REV_MASK) >= AC97_EI_REV_23) {
275 val = snd_ac97_read(ac97, AC97_INT_PAGING);
276 snd_ac97_update_bits(ac97, AC97_INT_PAGING,
278 snd_ac97_proc_read_functions(ac97, buffer);
279 snd_ac97_update_bits(ac97, AC97_INT_PAGING,
285 mext = snd_ac97_read(ac97, AC97_EXTENDED_MID);
296 val = snd_ac97_read(ac97, AC97_EXTENDED_MSTATUS);
315 val = snd_ac97_read(ac97, AC97_LINE1_RATE);
319 val = snd_ac97_read(ac97, AC97_LINE2_RATE);
323 val = snd_ac97_read(ac97, AC97_HANDSET_RATE);
330 struct snd_ac97 *ac97 = entry->private_data;
332 guard(mutex)(&ac97->page_mutex);
333 if ((ac97->id & 0xffffff40) == AC97_ID_AD1881) { // Analog Devices AD1881/85/86
336 if (ac97->spec.ad18xx.id[idx]) {
338 snd_ac97_update_bits(ac97, AC97_AD_SERIAL_CFG, 0x7000,
339 ac97->spec.ad18xx.unchained[idx] | ac97->spec.ad18xx.chained[idx]);
340 snd_ac97_proc_read_main(ac97, buffer, idx);
344 snd_ac97_update_bits(ac97, AC97_AD_SERIAL_CFG, 0x7000, 0x7000);
348 ac97->spec.ad18xx.unchained[0],
349 ac97->spec.ad18xx.unchained[1],
350 ac97->spec.ad18xx.unchained[2]);
352 ac97->spec.ad18xx.chained[0],
353 ac97->spec.ad18xx.chained[1],
354 ac97->spec.ad18xx.chained[2]);
356 snd_ac97_proc_read_main(ac97, buffer, 0);
364 struct snd_ac97 *ac97 = entry->private_data;
368 guard(mutex)(&ac97->page_mutex);
374 snd_ac97_write_cache(ac97, reg, val);
379 static void snd_ac97_proc_regs_read_main(struct snd_ac97 *ac97, struct snd_info_buffer *buffer, int subidx)
384 val = snd_ac97_read(ac97, reg);
392 struct snd_ac97 *ac97 = entry->private_data;
394 guard(mutex)(&ac97->page_mutex);
395 if ((ac97->id & 0xffffff40) == AC97_ID_AD1881) { // Analog Devices AD1881/85/86
399 if (ac97->spec.ad18xx.id[idx]) {
401 snd_ac97_update_bits(ac97, AC97_AD_SERIAL_CFG, 0x7000,
402 ac97->spec.ad18xx.unchained[idx] | ac97->spec.ad18xx.chained[idx]);
403 snd_ac97_proc_regs_read_main(ac97, buffer, idx);
406 snd_ac97_update_bits(ac97, AC97_AD_SERIAL_CFG, 0x7000, 0x7000);
408 snd_ac97_proc_regs_read_main(ac97, buffer, 0);
412 void snd_ac97_proc_init(struct snd_ac97 * ac97)
418 if (ac97->bus->proc == NULL)
420 prefix = ac97_is_audio(ac97) ? "ac97" : "mc97";
421 sprintf(name, "%s#%d-%d", prefix, ac97->addr, ac97->num);
422 entry = snd_info_create_card_entry(ac97->bus->card, name,
423 ac97->bus->proc);
425 snd_info_set_text_ops(entry, ac97, snd_ac97_proc_read);
426 ac97->proc = entry;
427 sprintf(name, "%s#%d-%d+regs", prefix, ac97->addr, ac97->num);
428 entry = snd_info_create_card_entry(ac97->bus->card, name,
429 ac97->bus->proc);
431 snd_info_set_text_ops(entry, ac97, snd_ac97_proc_regs_read);
437 ac97->proc_regs = entry;
440 void snd_ac97_proc_done(struct snd_ac97 * ac97)
442 snd_info_free_entry(ac97->proc_regs);
443 ac97->proc_regs = NULL;
444 snd_info_free_entry(ac97->proc);
445 ac97->proc = NULL;