Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 34927
b: refs/heads/master
c: 723b2b0
h: refs/heads/master
i:
  34925: e74aa6c
  34923: b1457c5
  34919: 1da60a1
  34911: 8331d36
v: v3
  • Loading branch information
Takashi Iwai authored and Jaroslav Kysela committed Sep 23, 2006
1 parent d17ea8f commit 483fa4c
Show file tree
Hide file tree
Showing 4 changed files with 355 additions and 257 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d0ae48471570c680333cbe28c143bbab887a4ec2
refs/heads/master: 723b2b0d36fa7cea81a962af2d40d88520d5a5f1
40 changes: 31 additions & 9 deletions trunk/include/sound/ak4xxx-adda.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,26 @@ struct snd_ak4xxx_ops {

#define AK4XXX_IMAGE_SIZE (AK4XXX_MAX_CHIPS * 16) /* 64 bytes */

/* DAC label and channels */
struct snd_akm4xxx_dac_channel {
char *name; /* mixer volume name */
unsigned int num_channels;
};

/* ADC labels and channels */
struct snd_akm4xxx_adc_channel {
char *name; /* capture gain volume label */
char *gain_name; /* IPGA */
char *switch_name; /* capture switch */
unsigned int num_channels;
};

struct snd_akm4xxx {
struct snd_card *card;
unsigned int num_adcs; /* AK4524 or AK4528 ADCs */
unsigned int num_dacs; /* AK4524 or AK4528 DACs */
unsigned char images[AK4XXX_IMAGE_SIZE]; /* saved register image */
unsigned char ipga_gain[AK4XXX_MAX_CHIPS][2]; /* saved register image
* for IPGA (AK4528)
*/
unsigned char volumes[AK4XXX_IMAGE_SIZE]; /* saved volume values */
unsigned long private_value[AK4XXX_MAX_CHIPS]; /* helper for driver */
void *private_data[AK4XXX_MAX_CHIPS]; /* helper for driver */
/* template should fill the following fields */
Expand All @@ -56,10 +68,11 @@ struct snd_akm4xxx {
SND_AK4355, SND_AK4358, SND_AK4381,
SND_AK5365
} type;
unsigned int *num_stereo; /* array of combined counts
* for the mixer
*/
char **channel_names; /* array of mixer channel names */

/* (array) information of combined codecs */
struct snd_akm4xxx_dac_channel *dac_info;
struct snd_akm4xxx_adc_channel *adc_info;

struct snd_ak4xxx_ops ops;
};

Expand All @@ -73,9 +86,18 @@ int snd_akm4xxx_build_controls(struct snd_akm4xxx *ak);
(ak)->images[(chip) * 16 + (reg)]
#define snd_akm4xxx_set(ak,chip,reg,val) \
((ak)->images[(chip) * 16 + (reg)] = (val))
#define snd_akm4xxx_get_vol(ak,chip,reg) \
(ak)->volumes[(chip) * 16 + (reg)]
#define snd_akm4xxx_set_vol(ak,chip,reg,val) \
((ak)->volumes[(chip) * 16 + (reg)] = (val))

/* Warning: IPGA is tricky - we assume the addr + 4 is unused
* so far, it's OK for all AK codecs with IPGA:
* AK4524, AK4528 and EK5365
*/
#define snd_akm4xxx_get_ipga(ak,chip,reg) \
(ak)->ipga_gain[chip][(reg)-4]
snd_akm4xxx_get_vol(ak, chip, (reg) + 4)
#define snd_akm4xxx_set_ipga(ak,chip,reg,val) \
((ak)->ipga_gain[chip][(reg)-4] = (val))
snd_akm4xxx_set_vol(ak, chip, (reg) + 4, val)

#endif /* __SOUND_AK4XXX_ADDA_H */
Loading

0 comments on commit 483fa4c

Please sign in to comment.