• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/sound/i2c/other/

Lines Matching defs:ak

39 void snd_akm4xxx_write(struct snd_akm4xxx *ak, int chip, unsigned char reg,
42 ak->ops.lock(ak, chip);
43 ak->ops.write(ak, chip, reg, val);
46 snd_akm4xxx_set(ak, chip, reg, val);
47 ak->ops.unlock(ak, chip);
53 static void ak4524_reset(struct snd_akm4xxx *ak, int state)
58 for (chip = 0; chip < ak->num_dacs/2; chip++) {
59 snd_akm4xxx_write(ak, chip, 0x01, state ? 0x00 : 0x03);
63 for (reg = 0x04; reg < ak->total_regs; reg++)
64 snd_akm4xxx_write(ak, chip, reg,
65 snd_akm4xxx_get(ak, chip, reg));
70 static void ak435X_reset(struct snd_akm4xxx *ak, int state)
75 snd_akm4xxx_write(ak, 0, 0x01, 0x02); /* reset and soft-mute */
78 for (reg = 0x00; reg < ak->total_regs; reg++)
80 snd_akm4xxx_write(ak, 0, reg,
81 snd_akm4xxx_get(ak, 0, reg));
82 snd_akm4xxx_write(ak, 0, 0x01, 0x01); /* un-reset, unmute */
86 static void ak4381_reset(struct snd_akm4xxx *ak, int state)
90 for (chip = 0; chip < ak->num_dacs/2; chip++) {
91 snd_akm4xxx_write(ak, chip, 0x00, state ? 0x0c : 0x0f);
94 for (reg = 0x01; reg < ak->total_regs; reg++)
95 snd_akm4xxx_write(ak, chip, reg,
96 snd_akm4xxx_get(ak, chip, reg));
106 void snd_akm4xxx_reset(struct snd_akm4xxx *ak, int state)
108 switch (ak->type) {
112 ak4524_reset(ak, state);
117 ak435X_reset(ak, state);
120 ak435X_reset(ak, state);
123 ak4381_reset(ak, state);
170 void snd_akm4xxx_init(struct snd_akm4xxx *ak)
276 memset(ak->images, 0, sizeof(ak->images));
277 memset(ak->volumes, 0, sizeof(ak->volumes));
279 switch (ak->type) {
282 ak->num_chips = ak->num_dacs / 2;
283 ak->name = "ak4524";
284 ak->total_regs = 0x08;
288 ak->num_chips = ak->num_dacs / 2;
289 ak->name = "ak4528";
290 ak->total_regs = 0x06;
294 ak->num_chips = 1;
295 ak->name = "ak4529";
296 ak->total_regs = 0x0d;
300 ak->num_chips = 1;
301 ak->name = "ak4355";
302 ak->total_regs = 0x0b;
306 ak->num_chips = 1;
307 ak->name = "ak4358";
308 ak->total_regs = 0x10;
312 ak->num_chips = ak->num_dacs / 2;
313 ak->name = "ak4381";
314 ak->total_regs = 0x05;
317 ak->num_chips = 1;
318 ak->name = "ak5365";
319 ak->total_regs = 0x08;
323 ak->num_chips = ak->num_dacs / 2;
324 ak->name = "ak4620";
325 ak->total_regs = 0x08;
332 for (chip = 0; chip < ak->num_chips; chip++) {
337 snd_akm4xxx_write(ak, chip, reg, data);
378 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol);
382 ucontrol->value.integer.value[0] = snd_akm4xxx_get_vol(ak, chip, addr);
389 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol);
393 if (snd_akm4xxx_get_vol(ak, chip, addr) == nval)
396 snd_akm4xxx_set_vol(ak, chip, addr, nval);
407 snd_akm4xxx_write(ak, chip, addr, nval);
436 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol);
440 ucontrol->value.integer.value[0] = snd_akm4xxx_get_vol(ak, chip, addr);
441 ucontrol->value.integer.value[1] = snd_akm4xxx_get_vol(ak, chip, addr+1);
481 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol);
486 (snd_akm4xxx_get(ak, chip, addr) >> shift) & 3;
493 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol);
501 (snd_akm4xxx_get(ak, chip, addr) & ~(3 << shift));
502 change = snd_akm4xxx_get(ak, chip, addr) != nval;
504 snd_akm4xxx_write(ak, chip, addr, nval);
513 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol);
519 unsigned char val = snd_akm4xxx_get(ak, chip, addr) & (1<<shift);
529 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol);
540 oval = snd_akm4xxx_get(ak, chip, addr);
547 snd_akm4xxx_write(ak, chip, addr, val);
553 static int ak4xxx_capture_num_inputs(struct snd_akm4xxx *ak, int mixer_ch)
558 input_names = ak->adc_info[mixer_ch].input_names;
568 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol);
573 num_names = ak4xxx_capture_num_inputs(ak, mixer_ch);
582 input_names = ak->adc_info[mixer_ch].input_names;
591 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol);
597 val = snd_akm4xxx_get(ak, chip, addr) & mask;
605 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol);
611 int num_names = ak4xxx_capture_num_inputs(ak, mixer_ch);
616 oval = snd_akm4xxx_get(ak, chip, addr);
620 snd_akm4xxx_write(ak, chip, addr, val);
630 static int build_dac_controls(struct snd_akm4xxx *ak)
636 for (idx = 0; idx < ak->num_dacs; ) {
638 if (ak->type == SND_AK4381
639 && ak->dac_info[mixer_ch].switch_name) {
644 knew.name = ak->dac_info[mixer_ch].switch_name;
653 err = snd_ctl_add(ak->card, snd_ctl_new1(&knew, ak));
658 if (! ak->dac_info || ! ak->dac_info[mixer_ch].name) {
660 knew.index = mixer_ch + ak->idx_offset * 2;
663 knew.name = ak->dac_info[mixer_ch].name;
664 num_stereo = ak->dac_info[mixer_ch].num_channels;
679 switch (ak->type) {
731 err = snd_ctl_add(ak->card, snd_ctl_new1(&knew, ak));
741 static int build_adc_controls(struct snd_akm4xxx *ak)
747 if (ak->type == SND_AK4528)
749 for (idx = 0; idx < ak->num_adcs;) {
751 if (! ak->adc_info || ! ak->adc_info[mixer_ch].name) {
753 knew.index = mixer_ch + ak->idx_offset * 2;
756 knew.name = ak->adc_info[mixer_ch].name;
757 num_stereo = ak->adc_info[mixer_ch].num_channels;
773 if (ak->type == SND_AK5365)
781 err = snd_ctl_add(ak->card, snd_ctl_new1(&knew, ak));
785 if (ak->type == SND_AK5365 && (idx % 2) == 0) {
786 if (! ak->adc_info ||
787 ! ak->adc_info[mixer_ch].switch_name) {
789 knew.index = mixer_ch + ak->idx_offset * 2;
791 knew.name = ak->adc_info[mixer_ch].switch_name;
800 err = snd_ctl_add(ak->card, snd_ctl_new1(&knew, ak));
805 knew.name = ak->adc_info[mixer_ch].selector_name;
808 knew.index = mixer_ch + ak->idx_offset * 2;
820 err = snd_ctl_add(ak->card, snd_ctl_new1(&knew, ak));
831 static int build_deemphasis(struct snd_akm4xxx *ak, int num_emphs)
839 knew.index = idx + ak->idx_offset;
845 switch (ak->type) {
868 err = snd_ctl_add(ak->card, snd_ctl_new1(&knew, ak));
879 struct snd_akm4xxx *ak = (struct snd_akm4xxx *)entry->private_data;
881 for (chip = 0; chip < ak->num_chips; chip++) {
882 for (reg = 0; reg < ak->total_regs; reg++) {
883 val = snd_akm4xxx_get(ak, chip, reg);
890 static int proc_init(struct snd_akm4xxx *ak)
894 err = snd_card_proc_new(ak->card, ak->name, &entry);
897 snd_info_set_text_ops(entry, ak, proc_regs_read);
901 static int proc_init(struct snd_akm4xxx *ak) { return 0; }
904 int snd_akm4xxx_build_controls(struct snd_akm4xxx *ak)
908 err = build_dac_controls(ak);
912 err = build_adc_controls(ak);
915 if (ak->type == SND_AK4355 || ak->type == SND_AK4358)
917 else if (ak->type == SND_AK4620)
920 num_emphs = ak->num_dacs / 2;
921 err = build_deemphasis(ak, num_emphs);
924 err = proc_init(ak);