Lines Matching refs:ak

26 void snd_akm4xxx_write(struct snd_akm4xxx *ak, int chip, unsigned char reg,  in snd_akm4xxx_write()  argument
29 ak->ops.lock(ak, chip); in snd_akm4xxx_write()
30 ak->ops.write(ak, chip, reg, val); in snd_akm4xxx_write()
33 snd_akm4xxx_set(ak, chip, reg, val); in snd_akm4xxx_write()
34 ak->ops.unlock(ak, chip); in snd_akm4xxx_write()
40 static void ak4524_reset(struct snd_akm4xxx *ak, int state) in ak4524_reset() argument
45 for (chip = 0; chip < ak->num_dacs/2; chip++) { in ak4524_reset()
46 snd_akm4xxx_write(ak, chip, 0x01, state ? 0x00 : 0x03); in ak4524_reset()
50 for (reg = 0x04; reg < ak->total_regs; reg++) in ak4524_reset()
51 snd_akm4xxx_write(ak, chip, reg, in ak4524_reset()
52 snd_akm4xxx_get(ak, chip, reg)); in ak4524_reset()
57 static void ak435X_reset(struct snd_akm4xxx *ak, int state) in ak435X_reset() argument
62 snd_akm4xxx_write(ak, 0, 0x01, 0x02); /* reset and soft-mute */ in ak435X_reset()
65 for (reg = 0x00; reg < ak->total_regs; reg++) in ak435X_reset()
67 snd_akm4xxx_write(ak, 0, reg, in ak435X_reset()
68 snd_akm4xxx_get(ak, 0, reg)); in ak435X_reset()
69 snd_akm4xxx_write(ak, 0, 0x01, 0x01); /* un-reset, unmute */ in ak435X_reset()
73 static void ak4381_reset(struct snd_akm4xxx *ak, int state) in ak4381_reset() argument
77 for (chip = 0; chip < ak->num_dacs/2; chip++) { in ak4381_reset()
78 snd_akm4xxx_write(ak, chip, 0x00, state ? 0x0c : 0x0f); in ak4381_reset()
81 for (reg = 0x01; reg < ak->total_regs; reg++) in ak4381_reset()
82 snd_akm4xxx_write(ak, chip, reg, in ak4381_reset()
83 snd_akm4xxx_get(ak, chip, reg)); in ak4381_reset()
93 void snd_akm4xxx_reset(struct snd_akm4xxx *ak, int state) in snd_akm4xxx_reset() argument
95 switch (ak->type) { in snd_akm4xxx_reset()
99 ak4524_reset(ak, state); in snd_akm4xxx_reset()
105 ak435X_reset(ak, state); in snd_akm4xxx_reset()
108 ak435X_reset(ak, state); in snd_akm4xxx_reset()
111 ak4381_reset(ak, state); in snd_akm4xxx_reset()
158 void snd_akm4xxx_init(struct snd_akm4xxx *ak) in snd_akm4xxx_init() argument
264 memset(ak->images, 0, sizeof(ak->images)); in snd_akm4xxx_init()
265 memset(ak->volumes, 0, sizeof(ak->volumes)); in snd_akm4xxx_init()
267 switch (ak->type) { in snd_akm4xxx_init()
270 ak->num_chips = ak->num_dacs / 2; in snd_akm4xxx_init()
271 ak->name = "ak4524"; in snd_akm4xxx_init()
272 ak->total_regs = 0x08; in snd_akm4xxx_init()
276 ak->num_chips = ak->num_dacs / 2; in snd_akm4xxx_init()
277 ak->name = "ak4528"; in snd_akm4xxx_init()
278 ak->total_regs = 0x06; in snd_akm4xxx_init()
282 ak->num_chips = 1; in snd_akm4xxx_init()
283 ak->name = "ak4529"; in snd_akm4xxx_init()
284 ak->total_regs = 0x0d; in snd_akm4xxx_init()
288 ak->num_chips = 1; in snd_akm4xxx_init()
289 ak->name = "ak4355"; in snd_akm4xxx_init()
290 ak->total_regs = 0x0b; in snd_akm4xxx_init()
294 ak->num_chips = 1; in snd_akm4xxx_init()
295 ak->name = "ak4358"; in snd_akm4xxx_init()
296 ak->total_regs = 0x10; in snd_akm4xxx_init()
300 ak->num_chips = ak->num_dacs / 2; in snd_akm4xxx_init()
301 ak->name = "ak4381"; in snd_akm4xxx_init()
302 ak->total_regs = 0x05; in snd_akm4xxx_init()
306 ak->num_chips = 1; in snd_akm4xxx_init()
307 ak->name = "ak5365"; in snd_akm4xxx_init()
308 ak->total_regs = 0x08; in snd_akm4xxx_init()
312 ak->num_chips = ak->num_dacs / 2; in snd_akm4xxx_init()
313 ak->name = "ak4620"; in snd_akm4xxx_init()
314 ak->total_regs = 0x08; in snd_akm4xxx_init()
321 for (chip = 0; chip < ak->num_chips; chip++) { in snd_akm4xxx_init()
326 snd_akm4xxx_write(ak, chip, reg, data); in snd_akm4xxx_init()
367 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol); in snd_akm4xxx_volume_get() local
371 ucontrol->value.integer.value[0] = snd_akm4xxx_get_vol(ak, chip, addr); in snd_akm4xxx_volume_get()
378 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol); in put_ak_reg() local
382 if (snd_akm4xxx_get_vol(ak, chip, addr) == nval) in put_ak_reg()
385 snd_akm4xxx_set_vol(ak, chip, addr, nval); in put_ak_reg()
396 snd_akm4xxx_write(ak, chip, addr, nval); in put_ak_reg()
425 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol); in snd_akm4xxx_stereo_volume_get() local
429 ucontrol->value.integer.value[0] = snd_akm4xxx_get_vol(ak, chip, addr); in snd_akm4xxx_stereo_volume_get()
430 ucontrol->value.integer.value[1] = snd_akm4xxx_get_vol(ak, chip, addr+1); in snd_akm4xxx_stereo_volume_get()
463 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol); in snd_akm4xxx_deemphasis_get() local
468 (snd_akm4xxx_get(ak, chip, addr) >> shift) & 3; in snd_akm4xxx_deemphasis_get()
475 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol); in snd_akm4xxx_deemphasis_put() local
483 (snd_akm4xxx_get(ak, chip, addr) & ~(3 << shift)); in snd_akm4xxx_deemphasis_put()
484 change = snd_akm4xxx_get(ak, chip, addr) != nval; in snd_akm4xxx_deemphasis_put()
486 snd_akm4xxx_write(ak, chip, addr, nval); in snd_akm4xxx_deemphasis_put()
495 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol); in ak4xxx_switch_get() local
501 unsigned char val = snd_akm4xxx_get(ak, chip, addr) & (1<<shift); in ak4xxx_switch_get()
511 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol); in ak4xxx_switch_put() local
522 oval = snd_akm4xxx_get(ak, chip, addr); in ak4xxx_switch_put()
529 snd_akm4xxx_write(ak, chip, addr, val); in ak4xxx_switch_put()
535 static int ak4xxx_capture_num_inputs(struct snd_akm4xxx *ak, int mixer_ch) in ak4xxx_capture_num_inputs() argument
540 input_names = ak->adc_info[mixer_ch].input_names; in ak4xxx_capture_num_inputs()
550 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol); in ak4xxx_capture_source_info() local
554 num_names = ak4xxx_capture_num_inputs(ak, mixer_ch); in ak4xxx_capture_source_info()
558 ak->adc_info[mixer_ch].input_names); in ak4xxx_capture_source_info()
564 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol); in ak4xxx_capture_source_get() local
570 val = snd_akm4xxx_get(ak, chip, addr) & mask; in ak4xxx_capture_source_get()
578 struct snd_akm4xxx *ak = snd_kcontrol_chip(kcontrol); in ak4xxx_capture_source_put() local
584 int num_names = ak4xxx_capture_num_inputs(ak, mixer_ch); in ak4xxx_capture_source_put()
589 oval = snd_akm4xxx_get(ak, chip, addr); in ak4xxx_capture_source_put()
593 snd_akm4xxx_write(ak, chip, addr, val); in ak4xxx_capture_source_put()
603 static int build_dac_controls(struct snd_akm4xxx *ak) in build_dac_controls() argument
609 for (idx = 0; idx < ak->num_dacs; ) { in build_dac_controls()
611 if (ak->type == SND_AK4381 in build_dac_controls()
612 && ak->dac_info[mixer_ch].switch_name) { in build_dac_controls()
617 knew.name = ak->dac_info[mixer_ch].switch_name; in build_dac_controls()
626 err = snd_ctl_add(ak->card, snd_ctl_new1(&knew, ak)); in build_dac_controls()
631 if (! ak->dac_info || ! ak->dac_info[mixer_ch].name) { in build_dac_controls()
633 knew.index = mixer_ch + ak->idx_offset * 2; in build_dac_controls()
636 knew.name = ak->dac_info[mixer_ch].name; in build_dac_controls()
637 num_stereo = ak->dac_info[mixer_ch].num_channels; in build_dac_controls()
652 switch (ak->type) { in build_dac_controls()
704 err = snd_ctl_add(ak->card, snd_ctl_new1(&knew, ak)); in build_dac_controls()
714 static int build_adc_controls(struct snd_akm4xxx *ak) in build_adc_controls() argument
720 if (ak->type == SND_AK4528) in build_adc_controls()
722 for (idx = 0; idx < ak->num_adcs;) { in build_adc_controls()
724 if (! ak->adc_info || ! ak->adc_info[mixer_ch].name) { in build_adc_controls()
726 knew.index = mixer_ch + ak->idx_offset * 2; in build_adc_controls()
729 knew.name = ak->adc_info[mixer_ch].name; in build_adc_controls()
730 num_stereo = ak->adc_info[mixer_ch].num_channels; in build_adc_controls()
746 if (ak->type == SND_AK5365) in build_adc_controls()
754 err = snd_ctl_add(ak->card, snd_ctl_new1(&knew, ak)); in build_adc_controls()
758 if (ak->type == SND_AK5365 && (idx % 2) == 0) { in build_adc_controls()
759 if (! ak->adc_info || in build_adc_controls()
760 ! ak->adc_info[mixer_ch].switch_name) { in build_adc_controls()
762 knew.index = mixer_ch + ak->idx_offset * 2; in build_adc_controls()
764 knew.name = ak->adc_info[mixer_ch].switch_name; in build_adc_controls()
773 err = snd_ctl_add(ak->card, snd_ctl_new1(&knew, ak)); in build_adc_controls()
778 if (!ak->adc_info || in build_adc_controls()
779 !ak->adc_info[mixer_ch].selector_name) { in build_adc_controls()
781 knew.index = mixer_ch + ak->idx_offset * 2; in build_adc_controls()
783 knew.name = ak->adc_info[mixer_ch].selector_name; in build_adc_controls()
794 err = snd_ctl_add(ak->card, snd_ctl_new1(&knew, ak)); in build_adc_controls()
805 static int build_deemphasis(struct snd_akm4xxx *ak, int num_emphs) in build_deemphasis() argument
813 knew.index = idx + ak->idx_offset; in build_deemphasis()
819 switch (ak->type) { in build_deemphasis()
842 err = snd_ctl_add(ak->card, snd_ctl_new1(&knew, ak)); in build_deemphasis()
852 struct snd_akm4xxx *ak = entry->private_data; in proc_regs_read() local
854 for (chip = 0; chip < ak->num_chips; chip++) { in proc_regs_read()
855 for (reg = 0; reg < ak->total_regs; reg++) { in proc_regs_read()
856 val = snd_akm4xxx_get(ak, chip, reg); in proc_regs_read()
863 static int proc_init(struct snd_akm4xxx *ak) in proc_init() argument
865 return snd_card_ro_proc_new(ak->card, ak->name, ak, proc_regs_read); in proc_init()
868 int snd_akm4xxx_build_controls(struct snd_akm4xxx *ak) in snd_akm4xxx_build_controls() argument
872 err = build_dac_controls(ak); in snd_akm4xxx_build_controls()
876 err = build_adc_controls(ak); in snd_akm4xxx_build_controls()
879 if (ak->type == SND_AK4355 || ak->type == SND_AK4358) in snd_akm4xxx_build_controls()
881 else if (ak->type == SND_AK4620) in snd_akm4xxx_build_controls()
884 num_emphs = ak->num_dacs / 2; in snd_akm4xxx_build_controls()
885 err = build_deemphasis(ak, num_emphs); in snd_akm4xxx_build_controls()
888 err = proc_init(ak); in snd_akm4xxx_build_controls()