Lines Matching refs:ac97

173 static int set_spdif_rate(struct snd_ac97 *ac97, unsigned short rate)
178 if (! (ac97->ext_id & AC97_EI_SPDIF))
182 if (ac97->flags & AC97_CS_SPDIF) {
187 snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0);
193 if (ac97->id == AC97_ID_CM9739 && rate != 48000) {
194 snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0);
202 snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0);
209 mutex_lock(&ac97->reg_mutex);
210 old = snd_ac97_read(ac97, reg) & mask;
212 snd_ac97_update_bits_nolock(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0);
213 snd_ac97_update_bits_nolock(ac97, reg, mask, bits);
215 sbits = ac97->spdif_status;
231 ac97->spdif_status = sbits;
233 snd_ac97_update_bits_nolock(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, AC97_EA_SPDIF);
234 mutex_unlock(&ac97->reg_mutex);
240 * @ac97: the ac97 instance
257 int snd_ac97_set_rate(struct snd_ac97 *ac97, int reg, unsigned int rate)
264 if (!(ac97->flags & AC97_DOUBLE_RATE))
270 snd_ac97_update_power(ac97, reg, 1);
273 if ((ac97->regs[AC97_EXTENDED_STATUS] & AC97_EA_VRM) == 0) /* MIC VRA */
279 if ((ac97->regs[AC97_EXTENDED_STATUS] & AC97_EA_VRA) == 0) /* VRA */
284 if (! (ac97->scaps & AC97_SCAP_SURROUND_DAC))
288 if (! (ac97->scaps & AC97_SCAP_CENTER_LFE_DAC))
293 return set_spdif_rate(ac97, rate);
299 tmp = (rate * ac97->bus->clock) / 48000;
302 if ((ac97->ext_id & AC97_EI_DRA) && reg == AC97_PCM_FRONT_DAC_RATE)
303 snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS,
305 snd_ac97_update(ac97, reg, tmp & 0xffff);
306 snd_ac97_read(ac97, reg);
307 if ((ac97->ext_id & AC97_EI_DRA) && reg == AC97_PCM_FRONT_DAC_RATE) {
311 snd_ac97_update_bits(ac97, AC97_GENERAL_PURPOSE,
314 snd_ac97_read(ac97, AC97_GENERAL_PURPOSE);
321 static unsigned short get_pslots(struct snd_ac97 *ac97, unsigned char *rate_table, unsigned short *spdif_slots)
323 if (!ac97_is_audio(ac97))
325 if (ac97_is_rev22(ac97) || ac97_can_amap(ac97)) {
327 if (ac97_is_rev22(ac97)) {
330 es = ac97->regs[AC97_EXTENDED_ID] &= ~AC97_EI_DACS_SLOT_MASK;
331 switch (ac97->addr) {
336 snd_ac97_write_cache(ac97, AC97_EXTENDED_ID, es);
338 switch (ac97->addr) {
341 if (ac97->scaps & AC97_SCAP_SURROUND_DAC)
343 if (ac97->scaps & AC97_SCAP_CENTER_LFE_DAC)
345 if (ac97->ext_id & AC97_EI_SPDIF) {
346 if (!(ac97->scaps & AC97_SCAP_SURROUND_DAC))
348 else if (!(ac97->scaps & AC97_SCAP_CENTER_LFE_DAC))
358 if (ac97->scaps & AC97_SCAP_SURROUND_DAC)
360 if (ac97->ext_id & AC97_EI_SPDIF) {
361 if (!(ac97->scaps & AC97_SCAP_SURROUND_DAC))
370 if (ac97->ext_id & AC97_EI_SPDIF)
379 if (ac97->scaps & AC97_SCAP_SURROUND_DAC)
381 if (ac97->scaps & AC97_SCAP_CENTER_LFE_DAC)
383 if (ac97->ext_id & AC97_EI_SPDIF) {
384 if (!(ac97->scaps & AC97_SCAP_SURROUND_DAC))
386 else if (!(ac97->scaps & AC97_SCAP_CENTER_LFE_DAC))
396 static unsigned short get_cslots(struct snd_ac97 *ac97)
400 if (!ac97_is_audio(ac97))
435 * @bus: the ac97 bus instance
558 * @pcm: the ac97 pcm instance
621 //printk(KERN_DEBUG "setting ac97 reg 0x%x to rate %d\n", reg, rate);
643 * @pcm: the ac97 pcm instance
716 * @runtime: the runtime of the ac97 front playback pcm