*/
#include <linux/bitops.h>
-#include "pcm.h"
#include "control.h"
#include "info.h"
#define AC97_BC_20BIT_ADC 0x0200 /* 20-bit ADC resolution */
#define AC97_BC_ADC_MASK 0x0300
-/* general purpose */
-#define AC97_GP_DRSS_MASK 0x0c00 /* double rate slot select */
-#define AC97_GP_DRSS_1011 0x0000 /* LR(C) 10+11(+12) */
-#define AC97_GP_DRSS_78 0x0400 /* LR 7+8 */
-
/* extended audio ID bit defines */
#define AC97_EI_VRA 0x0001 /* Variable bit rate supported */
#define AC97_EI_DRA 0x0002 /* Double rate supported */
#define AC97_SCAP_SKIP_AUDIO (1<<4) /* skip audio part of codec */
#define AC97_SCAP_SKIP_MODEM (1<<5) /* skip modem part of codec */
#define AC97_SCAP_INDEP_SDIN (1<<6) /* independent SDIN */
-#define AC97_SCAP_INV_EAPD (1<<7) /* inverted EAPD */
-#define AC97_SCAP_DETECT_BY_VENDOR (1<<8) /* use vendor registers for read tests */
/* ac97->flags */
#define AC97_HAS_PC_BEEP (1<<0) /* force PC Speaker usage */
#define AC97_CS_SPDIF (1<<2) /* Cirrus Logic uses funky SPDIF */
#define AC97_CX_SPDIF (1<<3) /* Conexant's spdif interface */
#define AC97_STEREO_MUTES (1<<4) /* has stereo mute bits */
-#define AC97_DOUBLE_RATE (1<<5) /* supports double rate playback */
/* rates indexes */
#define AC97_RATES_FRONT_DAC 0
AC97_SHARED_TYPE_NONE,
AC97_SHARED_TYPE_ICH,
AC97_SHARED_TYPE_ATIIXP,
- AC97_SHARED_TYPE_VIA,
AC97_SHARED_TYPES
};
snd_card_t *card;
unsigned short num; /* bus number */
unsigned short no_vra: 1, /* bridge doesn't support VRA */
- dra: 1, /* bridge supports double rate */
isdin: 1;/* independent SDIN */
unsigned int clock; /* AC'97 base clock (usually 48000Hz) */
spinlock_t bus_lock; /* used mainly for slot allocation */
/* functions */
int snd_ac97_bus(snd_card_t *card, int num, ac97_bus_ops_t *ops, void *private_data, ac97_bus_t **rbus); /* create new AC97 bus */
int snd_ac97_mixer(ac97_bus_t *bus, ac97_template_t *template, ac97_t **rac97); /* create mixer controls */
-const char *snd_ac97_get_short_name(ac97_t *ac97);
void snd_ac97_write(ac97_t *ac97, unsigned short reg, unsigned short value);
unsigned short snd_ac97_read(ac97_t *ac97, unsigned short reg);
AC97_TUNE_SWAP_SURROUND, /* swap master and surround controls */
AC97_TUNE_AD_SHARING, /* for AD1985, turn on OMS bit and use headphone */
AC97_TUNE_ALC_JACK, /* for Realtek, enable JACK detection */
- AC97_TUNE_INV_EAPD, /* inverted EAPD implementation */
};
struct ac97_quirk {
unsigned short vendor; /* PCI vendor id */
unsigned short device; /* PCI device id */
unsigned short mask; /* device id bit mask, 0 = accept all */
- unsigned int codec_id; /* codec id (if any), 0 = accept all */
const char *name; /* name shown as info */
int type; /* quirk type above */
};
int snd_ac97_tune_hardware(ac97_t *ac97, struct ac97_quirk *quirk, int override);
-int snd_ac97_set_rate(ac97_t *ac97, int reg, unsigned int rate);
+int snd_ac97_set_rate(ac97_t *ac97, int reg, unsigned short rate);
int snd_ac97_pcm_assign(ac97_bus_t *ac97,
unsigned short pcms_count,
int snd_ac97_pcm_open(struct ac97_pcm *pcm, unsigned int rate,
enum ac97_pcm_cfg cfg, unsigned short slots);
int snd_ac97_pcm_close(struct ac97_pcm *pcm);
-int snd_ac97_pcm_double_rate_rules(snd_pcm_runtime_t *runtime);
#endif /* __SOUND_AC97_CODEC_H */