Lines Matching defs:ac97

159 static int set_spdif_rate(struct snd_ac97 *ac97, unsigned short rate)
164 if (! (ac97->ext_id & AC97_EI_SPDIF))
168 if (ac97->flags & AC97_CS_SPDIF) {
173 snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0);
179 if (ac97->id == AC97_ID_CM9739 && rate != 48000) {
180 snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0);
188 snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0);
195 mutex_lock(&ac97->reg_mutex);
196 old = snd_ac97_read(ac97, reg) & mask;
198 snd_ac97_update_bits_nolock(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0);
199 snd_ac97_update_bits_nolock(ac97, reg, mask, bits);
201 sbits = ac97->spdif_status;
217 ac97->spdif_status = sbits;
219 snd_ac97_update_bits_nolock(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, AC97_EA_SPDIF);
220 mutex_unlock(&ac97->reg_mutex);
226 * @ac97: the ac97 instance
243 int snd_ac97_set_rate(struct snd_ac97 *ac97, int reg, unsigned int rate)
250 if (!(ac97->flags & AC97_DOUBLE_RATE))
256 snd_ac97_update_power(ac97, reg, 1);
259 if ((ac97->regs[AC97_EXTENDED_STATUS] & AC97_EA_VRM) == 0) /* MIC VRA */
265 if ((ac97->regs[AC97_EXTENDED_STATUS] & AC97_EA_VRA) == 0) /* VRA */
270 if (! (ac97->scaps & AC97_SCAP_SURROUND_DAC))
274 if (! (ac97->scaps & AC97_SCAP_CENTER_LFE_DAC))
279 return set_spdif_rate(ac97, rate);
285 tmp = (rate * ac97->bus->clock) / 48000;
288 if ((ac97->ext_id & AC97_EI_DRA) && reg == AC97_PCM_FRONT_DAC_RATE)
289 snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS,
291 snd_ac97_update(ac97, reg, tmp & 0xffff);
292 snd_ac97_read(ac97, reg);
293 if ((ac97->ext_id & AC97_EI_DRA) && reg == AC97_PCM_FRONT_DAC_RATE) {
297 snd_ac97_update_bits(ac97, AC97_GENERAL_PURPOSE,
300 snd_ac97_read(ac97, AC97_GENERAL_PURPOSE);
307 static unsigned short get_pslots(struct snd_ac97 *ac97, unsigned char *rate_table, unsigned short *spdif_slots)
309 if (!ac97_is_audio(ac97))
311 if (ac97_is_rev22(ac97) || ac97_can_amap(ac97)) {
313 if (ac97_is_rev22(ac97)) {
316 es = ac97->regs[AC97_EXTENDED_ID] &= ~AC97_EI_DACS_SLOT_MASK;
317 switch (ac97->addr) {
322 snd_ac97_write_cache(ac97, AC97_EXTENDED_ID, es);
324 switch (ac97->addr) {
327 if (ac97->scaps & AC97_SCAP_SURROUND_DAC)
329 if (ac97->scaps & AC97_SCAP_CENTER_LFE_DAC)
331 if (ac97->ext_id & AC97_EI_SPDIF) {
332 if (!(ac97->scaps & AC97_SCAP_SURROUND_DAC))
334 else if (!(ac97->scaps & AC97_SCAP_CENTER_LFE_DAC))
344 if (ac97->scaps & AC97_SCAP_SURROUND_DAC)
346 if (ac97->ext_id & AC97_EI_SPDIF) {
347 if (!(ac97->scaps & AC97_SCAP_SURROUND_DAC))
356 if (ac97->ext_id & AC97_EI_SPDIF)
365 if (ac97->scaps & AC97_SCAP_SURROUND_DAC)
367 if (ac97->scaps & AC97_SCAP_CENTER_LFE_DAC)
369 if (ac97->ext_id & AC97_EI_SPDIF) {
370 if (!(ac97->scaps & AC97_SCAP_SURROUND_DAC))
372 else if (!(ac97->scaps & AC97_SCAP_CENTER_LFE_DAC))
382 static unsigned short get_cslots(struct snd_ac97 *ac97)
386 if (!ac97_is_audio(ac97))
421 * @bus: the ac97 bus instance
546 * @pcm: the ac97 pcm instance
615 "setting ac97 reg 0x%x to rate %d\n",
640 * @pcm: the ac97 pcm instance
715 * @runtime: the runtime of the ac97 front playback pcm