|
@@ -391,38 +391,35 @@
|
|
*
|
|
*
|
|
*/
|
|
*/
|
|
|
|
|
|
-typedef struct _snd_ac97_bus ac97_bus_t;
|
|
|
|
-typedef struct _snd_ac97_bus_ops ac97_bus_ops_t;
|
|
|
|
-typedef struct _snd_ac97_template ac97_template_t;
|
|
|
|
-typedef struct _snd_ac97 ac97_t;
|
|
|
|
|
|
+struct snd_ac97;
|
|
|
|
|
|
struct snd_ac97_build_ops {
|
|
struct snd_ac97_build_ops {
|
|
- int (*build_3d) (ac97_t *ac97);
|
|
|
|
- int (*build_specific) (ac97_t *ac97);
|
|
|
|
- int (*build_spdif) (ac97_t *ac97);
|
|
|
|
- int (*build_post_spdif) (ac97_t *ac97);
|
|
|
|
|
|
+ int (*build_3d) (struct snd_ac97 *ac97);
|
|
|
|
+ int (*build_specific) (struct snd_ac97 *ac97);
|
|
|
|
+ int (*build_spdif) (struct snd_ac97 *ac97);
|
|
|
|
+ int (*build_post_spdif) (struct snd_ac97 *ac97);
|
|
#ifdef CONFIG_PM
|
|
#ifdef CONFIG_PM
|
|
- void (*suspend) (ac97_t *ac97);
|
|
|
|
- void (*resume) (ac97_t *ac97);
|
|
|
|
|
|
+ void (*suspend) (struct snd_ac97 *ac97);
|
|
|
|
+ void (*resume) (struct snd_ac97 *ac97);
|
|
#endif
|
|
#endif
|
|
- void (*update_jacks) (ac97_t *ac97); /* for jack-sharing */
|
|
|
|
|
|
+ void (*update_jacks) (struct snd_ac97 *ac97); /* for jack-sharing */
|
|
};
|
|
};
|
|
|
|
|
|
-struct _snd_ac97_bus_ops {
|
|
|
|
- void (*reset) (ac97_t *ac97);
|
|
|
|
- void (*write) (ac97_t *ac97, unsigned short reg, unsigned short val);
|
|
|
|
- unsigned short (*read) (ac97_t *ac97, unsigned short reg);
|
|
|
|
- void (*wait) (ac97_t *ac97);
|
|
|
|
- void (*init) (ac97_t *ac97);
|
|
|
|
|
|
+struct snd_ac97_bus_ops {
|
|
|
|
+ void (*reset) (struct snd_ac97 *ac97);
|
|
|
|
+ void (*write) (struct snd_ac97 *ac97, unsigned short reg, unsigned short val);
|
|
|
|
+ unsigned short (*read) (struct snd_ac97 *ac97, unsigned short reg);
|
|
|
|
+ void (*wait) (struct snd_ac97 *ac97);
|
|
|
|
+ void (*init) (struct snd_ac97 *ac97);
|
|
};
|
|
};
|
|
|
|
|
|
-struct _snd_ac97_bus {
|
|
|
|
|
|
+struct snd_ac97_bus {
|
|
/* -- lowlevel (hardware) driver specific -- */
|
|
/* -- lowlevel (hardware) driver specific -- */
|
|
- ac97_bus_ops_t *ops;
|
|
|
|
|
|
+ struct snd_ac97_bus_ops *ops;
|
|
void *private_data;
|
|
void *private_data;
|
|
- void (*private_free) (ac97_bus_t *bus);
|
|
|
|
|
|
+ void (*private_free) (struct snd_ac97_bus *bus);
|
|
/* --- */
|
|
/* --- */
|
|
- snd_card_t *card;
|
|
|
|
|
|
+ struct snd_card *card;
|
|
unsigned short num; /* bus number */
|
|
unsigned short num; /* bus number */
|
|
unsigned short no_vra: 1, /* bridge doesn't support VRA */
|
|
unsigned short no_vra: 1, /* bridge doesn't support VRA */
|
|
dra: 1, /* bridge supports double rate */
|
|
dra: 1, /* bridge supports double rate */
|
|
@@ -432,13 +429,13 @@ struct _snd_ac97_bus {
|
|
unsigned short used_slots[2][4]; /* actually used PCM slots */
|
|
unsigned short used_slots[2][4]; /* actually used PCM slots */
|
|
unsigned short pcms_count; /* count of PCMs */
|
|
unsigned short pcms_count; /* count of PCMs */
|
|
struct ac97_pcm *pcms;
|
|
struct ac97_pcm *pcms;
|
|
- ac97_t *codec[4];
|
|
|
|
- snd_info_entry_t *proc;
|
|
|
|
|
|
+ struct snd_ac97 *codec[4];
|
|
|
|
+ struct snd_info_entry *proc;
|
|
};
|
|
};
|
|
|
|
|
|
-struct _snd_ac97_template {
|
|
|
|
|
|
+struct snd_ac97_template {
|
|
void *private_data;
|
|
void *private_data;
|
|
- void (*private_free) (ac97_t *ac97);
|
|
|
|
|
|
+ void (*private_free) (struct snd_ac97 *ac97);
|
|
struct pci_dev *pci; /* assigned PCI device - used for quirks */
|
|
struct pci_dev *pci; /* assigned PCI device - used for quirks */
|
|
unsigned short num; /* number of codec: 0 = primary, 1 = secondary */
|
|
unsigned short num; /* number of codec: 0 = primary, 1 = secondary */
|
|
unsigned short addr; /* physical address of codec [0-3] */
|
|
unsigned short addr; /* physical address of codec [0-3] */
|
|
@@ -447,16 +444,16 @@ struct _snd_ac97_template {
|
|
DECLARE_BITMAP(reg_accessed, 0x80); /* bit flags */
|
|
DECLARE_BITMAP(reg_accessed, 0x80); /* bit flags */
|
|
};
|
|
};
|
|
|
|
|
|
-struct _snd_ac97 {
|
|
|
|
|
|
+struct snd_ac97 {
|
|
/* -- lowlevel (hardware) driver specific -- */
|
|
/* -- lowlevel (hardware) driver specific -- */
|
|
struct snd_ac97_build_ops * build_ops;
|
|
struct snd_ac97_build_ops * build_ops;
|
|
void *private_data;
|
|
void *private_data;
|
|
- void (*private_free) (ac97_t *ac97);
|
|
|
|
|
|
+ void (*private_free) (struct snd_ac97 *ac97);
|
|
/* --- */
|
|
/* --- */
|
|
- ac97_bus_t *bus;
|
|
|
|
|
|
+ struct snd_ac97_bus *bus;
|
|
struct pci_dev *pci; /* assigned PCI device - used for quirks */
|
|
struct pci_dev *pci; /* assigned PCI device - used for quirks */
|
|
- snd_info_entry_t *proc;
|
|
|
|
- snd_info_entry_t *proc_regs;
|
|
|
|
|
|
+ struct snd_info_entry *proc;
|
|
|
|
+ struct snd_info_entry *proc_regs;
|
|
unsigned short subsystem_vendor;
|
|
unsigned short subsystem_vendor;
|
|
unsigned short subsystem_device;
|
|
unsigned short subsystem_device;
|
|
struct semaphore reg_mutex;
|
|
struct semaphore reg_mutex;
|
|
@@ -490,43 +487,47 @@ struct _snd_ac97 {
|
|
struct device dev;
|
|
struct device dev;
|
|
};
|
|
};
|
|
|
|
|
|
-#define to_ac97_t(d) container_of(d, struct _snd_ac97, dev)
|
|
|
|
|
|
+#define to_ac97_t(d) container_of(d, struct snd_ac97, dev)
|
|
|
|
|
|
/* conditions */
|
|
/* conditions */
|
|
-static inline int ac97_is_audio(ac97_t * ac97)
|
|
|
|
|
|
+static inline int ac97_is_audio(struct snd_ac97 * ac97)
|
|
{
|
|
{
|
|
return (ac97->scaps & AC97_SCAP_AUDIO);
|
|
return (ac97->scaps & AC97_SCAP_AUDIO);
|
|
}
|
|
}
|
|
-static inline int ac97_is_modem(ac97_t * ac97)
|
|
|
|
|
|
+static inline int ac97_is_modem(struct snd_ac97 * ac97)
|
|
{
|
|
{
|
|
return (ac97->scaps & AC97_SCAP_MODEM);
|
|
return (ac97->scaps & AC97_SCAP_MODEM);
|
|
}
|
|
}
|
|
-static inline int ac97_is_rev22(ac97_t * ac97)
|
|
|
|
|
|
+static inline int ac97_is_rev22(struct snd_ac97 * ac97)
|
|
{
|
|
{
|
|
return (ac97->ext_id & AC97_EI_REV_MASK) >= AC97_EI_REV_22;
|
|
return (ac97->ext_id & AC97_EI_REV_MASK) >= AC97_EI_REV_22;
|
|
}
|
|
}
|
|
-static inline int ac97_can_amap(ac97_t * ac97)
|
|
|
|
|
|
+static inline int ac97_can_amap(struct snd_ac97 * ac97)
|
|
{
|
|
{
|
|
return (ac97->ext_id & AC97_EI_AMAP) != 0;
|
|
return (ac97->ext_id & AC97_EI_AMAP) != 0;
|
|
}
|
|
}
|
|
-static inline int ac97_can_spdif(ac97_t * ac97)
|
|
|
|
|
|
+static inline int ac97_can_spdif(struct snd_ac97 * ac97)
|
|
{
|
|
{
|
|
return (ac97->ext_id & AC97_EI_SPDIF) != 0;
|
|
return (ac97->ext_id & AC97_EI_SPDIF) != 0;
|
|
}
|
|
}
|
|
|
|
|
|
/* functions */
|
|
/* 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);
|
|
|
|
-void snd_ac97_write_cache(ac97_t *ac97, unsigned short reg, unsigned short value);
|
|
|
|
-int snd_ac97_update(ac97_t *ac97, unsigned short reg, unsigned short value);
|
|
|
|
-int snd_ac97_update_bits(ac97_t *ac97, unsigned short reg, unsigned short mask, unsigned short value);
|
|
|
|
|
|
+/* create new AC97 bus */
|
|
|
|
+int snd_ac97_bus(struct snd_card *card, int num, struct snd_ac97_bus_ops *ops,
|
|
|
|
+ void *private_data, struct snd_ac97_bus **rbus);
|
|
|
|
+/* create mixer controls */
|
|
|
|
+int snd_ac97_mixer(struct snd_ac97_bus *bus, struct snd_ac97_template *template,
|
|
|
|
+ struct snd_ac97 **rac97);
|
|
|
|
+const char *snd_ac97_get_short_name(struct snd_ac97 *ac97);
|
|
|
|
+
|
|
|
|
+void snd_ac97_write(struct snd_ac97 *ac97, unsigned short reg, unsigned short value);
|
|
|
|
+unsigned short snd_ac97_read(struct snd_ac97 *ac97, unsigned short reg);
|
|
|
|
+void snd_ac97_write_cache(struct snd_ac97 *ac97, unsigned short reg, unsigned short value);
|
|
|
|
+int snd_ac97_update(struct snd_ac97 *ac97, unsigned short reg, unsigned short value);
|
|
|
|
+int snd_ac97_update_bits(struct snd_ac97 *ac97, unsigned short reg, unsigned short mask, unsigned short value);
|
|
#ifdef CONFIG_PM
|
|
#ifdef CONFIG_PM
|
|
-void snd_ac97_suspend(ac97_t *ac97);
|
|
|
|
-void snd_ac97_resume(ac97_t *ac97);
|
|
|
|
|
|
+void snd_ac97_suspend(struct snd_ac97 *ac97);
|
|
|
|
+void snd_ac97_resume(struct snd_ac97 *ac97);
|
|
#endif
|
|
#endif
|
|
|
|
|
|
/* quirk types */
|
|
/* quirk types */
|
|
@@ -551,8 +552,8 @@ struct ac97_quirk {
|
|
int type; /* quirk type above */
|
|
int type; /* quirk type above */
|
|
};
|
|
};
|
|
|
|
|
|
-int snd_ac97_tune_hardware(ac97_t *ac97, struct ac97_quirk *quirk, const char *override);
|
|
|
|
-int snd_ac97_set_rate(ac97_t *ac97, int reg, unsigned int rate);
|
|
|
|
|
|
+int snd_ac97_tune_hardware(struct snd_ac97 *ac97, struct ac97_quirk *quirk, const char *override);
|
|
|
|
+int snd_ac97_set_rate(struct snd_ac97 *ac97, int reg, unsigned int rate);
|
|
|
|
|
|
/*
|
|
/*
|
|
* PCM allocation
|
|
* PCM allocation
|
|
@@ -568,7 +569,7 @@ enum ac97_pcm_cfg {
|
|
};
|
|
};
|
|
|
|
|
|
struct ac97_pcm {
|
|
struct ac97_pcm {
|
|
- ac97_bus_t *bus;
|
|
|
|
|
|
+ struct snd_ac97_bus *bus;
|
|
unsigned int stream: 1, /* stream type: 1 = capture */
|
|
unsigned int stream: 1, /* stream type: 1 = capture */
|
|
exclusive: 1, /* exclusive mode, don't override with other pcms */
|
|
exclusive: 1, /* exclusive mode, don't override with other pcms */
|
|
copy_flag: 1, /* lowlevel driver must fill all entries */
|
|
copy_flag: 1, /* lowlevel driver must fill all entries */
|
|
@@ -579,18 +580,18 @@ struct ac97_pcm {
|
|
unsigned short slots; /* driver input: requested AC97 slot numbers */
|
|
unsigned short slots; /* driver input: requested AC97 slot numbers */
|
|
unsigned short rslots[4]; /* allocated slots per codecs */
|
|
unsigned short rslots[4]; /* allocated slots per codecs */
|
|
unsigned char rate_table[4];
|
|
unsigned char rate_table[4];
|
|
- ac97_t *codec[4]; /* allocated codecs */
|
|
|
|
|
|
+ struct snd_ac97 *codec[4]; /* allocated codecs */
|
|
} r[2]; /* 0 = standard rates, 1 = double rates */
|
|
} r[2]; /* 0 = standard rates, 1 = double rates */
|
|
unsigned long private_value; /* used by the hardware driver */
|
|
unsigned long private_value; /* used by the hardware driver */
|
|
};
|
|
};
|
|
|
|
|
|
-int snd_ac97_pcm_assign(ac97_bus_t *ac97,
|
|
|
|
|
|
+int snd_ac97_pcm_assign(struct snd_ac97_bus *ac97,
|
|
unsigned short pcms_count,
|
|
unsigned short pcms_count,
|
|
const struct ac97_pcm *pcms);
|
|
const struct ac97_pcm *pcms);
|
|
int snd_ac97_pcm_open(struct ac97_pcm *pcm, unsigned int rate,
|
|
int snd_ac97_pcm_open(struct ac97_pcm *pcm, unsigned int rate,
|
|
enum ac97_pcm_cfg cfg, unsigned short slots);
|
|
enum ac97_pcm_cfg cfg, unsigned short slots);
|
|
int snd_ac97_pcm_close(struct ac97_pcm *pcm);
|
|
int snd_ac97_pcm_close(struct ac97_pcm *pcm);
|
|
-int snd_ac97_pcm_double_rate_rules(snd_pcm_runtime_t *runtime);
|
|
|
|
|
|
+int snd_ac97_pcm_double_rate_rules(struct snd_pcm_runtime *runtime);
|
|
|
|
|
|
/* ad hoc AC97 device driver access */
|
|
/* ad hoc AC97 device driver access */
|
|
extern struct bus_type ac97_bus_type;
|
|
extern struct bus_type ac97_bus_type;
|