Lines Matching refs:ak4531
38 static void snd_ak4531_proc_init(struct snd_card *card, struct snd_ak4531 *ak4531);
46 static void snd_ak4531_dump(struct snd_ak4531 *ak4531)
52 idx, ak4531->regs[idx]);
88 struct snd_ak4531 *ak4531 = snd_kcontrol_chip(kcontrol); in snd_ak4531_get_single() local
95 mutex_lock(&ak4531->reg_mutex); in snd_ak4531_get_single()
96 val = (ak4531->regs[reg] >> shift) & mask; in snd_ak4531_get_single()
97 mutex_unlock(&ak4531->reg_mutex); in snd_ak4531_get_single()
107 struct snd_ak4531 *ak4531 = snd_kcontrol_chip(kcontrol); in snd_ak4531_put_single() local
120 mutex_lock(&ak4531->reg_mutex); in snd_ak4531_put_single()
121 val = (ak4531->regs[reg] & ~(mask << shift)) | val; in snd_ak4531_put_single()
122 change = val != ak4531->regs[reg]; in snd_ak4531_put_single()
123 ak4531->write(ak4531, reg, ak4531->regs[reg] = val); in snd_ak4531_put_single()
124 mutex_unlock(&ak4531->reg_mutex); in snd_ak4531_put_single()
155 struct snd_ak4531 *ak4531 = snd_kcontrol_chip(kcontrol); in snd_ak4531_get_double() local
164 mutex_lock(&ak4531->reg_mutex); in snd_ak4531_get_double()
165 left = (ak4531->regs[left_reg] >> left_shift) & mask; in snd_ak4531_get_double()
166 right = (ak4531->regs[right_reg] >> right_shift) & mask; in snd_ak4531_get_double()
167 mutex_unlock(&ak4531->reg_mutex); in snd_ak4531_get_double()
179 struct snd_ak4531 *ak4531 = snd_kcontrol_chip(kcontrol); in snd_ak4531_put_double() local
197 mutex_lock(&ak4531->reg_mutex); in snd_ak4531_put_double()
199 left = (ak4531->regs[left_reg] & ~((mask << left_shift) | (mask << right_shift))) | left | right; in snd_ak4531_put_double()
200 change = left != ak4531->regs[left_reg]; in snd_ak4531_put_double()
201 ak4531->write(ak4531, left_reg, ak4531->regs[left_reg] = left); in snd_ak4531_put_double()
203 left = (ak4531->regs[left_reg] & ~(mask << left_shift)) | left; in snd_ak4531_put_double()
204 right = (ak4531->regs[right_reg] & ~(mask << right_shift)) | right; in snd_ak4531_put_double()
205 change = left != ak4531->regs[left_reg] || right != ak4531->regs[right_reg]; in snd_ak4531_put_double()
206 ak4531->write(ak4531, left_reg, ak4531->regs[left_reg] = left); in snd_ak4531_put_double()
207 ak4531->write(ak4531, right_reg, ak4531->regs[right_reg] = right); in snd_ak4531_put_double()
209 mutex_unlock(&ak4531->reg_mutex); in snd_ak4531_put_double()
230 struct snd_ak4531 *ak4531 = snd_kcontrol_chip(kcontrol); in snd_ak4531_get_input_sw() local
236 mutex_lock(&ak4531->reg_mutex); in snd_ak4531_get_input_sw()
237 ucontrol->value.integer.value[0] = (ak4531->regs[reg1] >> left_shift) & 1; in snd_ak4531_get_input_sw()
238 ucontrol->value.integer.value[1] = (ak4531->regs[reg2] >> left_shift) & 1; in snd_ak4531_get_input_sw()
239 ucontrol->value.integer.value[2] = (ak4531->regs[reg1] >> right_shift) & 1; in snd_ak4531_get_input_sw()
240 ucontrol->value.integer.value[3] = (ak4531->regs[reg2] >> right_shift) & 1; in snd_ak4531_get_input_sw()
241 mutex_unlock(&ak4531->reg_mutex); in snd_ak4531_get_input_sw()
247 struct snd_ak4531 *ak4531 = snd_kcontrol_chip(kcontrol); in snd_ak4531_put_input_sw() local
255 mutex_lock(&ak4531->reg_mutex); in snd_ak4531_put_input_sw()
256 val1 = ak4531->regs[reg1] & ~((1 << left_shift) | (1 << right_shift)); in snd_ak4531_put_input_sw()
257 val2 = ak4531->regs[reg2] & ~((1 << left_shift) | (1 << right_shift)); in snd_ak4531_put_input_sw()
262 change = val1 != ak4531->regs[reg1] || val2 != ak4531->regs[reg2]; in snd_ak4531_put_input_sw()
263 ak4531->write(ak4531, reg1, ak4531->regs[reg1] = val1); in snd_ak4531_put_input_sw()
264 ak4531->write(ak4531, reg2, ak4531->regs[reg2] = val2); in snd_ak4531_put_input_sw()
265 mutex_unlock(&ak4531->reg_mutex); in snd_ak4531_put_input_sw()
337 static int snd_ak4531_free(struct snd_ak4531 *ak4531) in snd_ak4531_free() argument
339 if (ak4531) { in snd_ak4531_free()
340 if (ak4531->private_free) in snd_ak4531_free()
341 ak4531->private_free(ak4531); in snd_ak4531_free()
342 kfree(ak4531); in snd_ak4531_free()
349 struct snd_ak4531 *ak4531 = device->device_data; in snd_ak4531_dev_free() local
350 return snd_ak4531_free(ak4531); in snd_ak4531_dev_free()
388 struct snd_ak4531 *ak4531; in snd_ak4531_mixer() local
397 ak4531 = kzalloc(sizeof(*ak4531), GFP_KERNEL); in snd_ak4531_mixer()
398 if (ak4531 == NULL) in snd_ak4531_mixer()
400 *ak4531 = *_ak4531; in snd_ak4531_mixer()
401 mutex_init(&ak4531->reg_mutex); in snd_ak4531_mixer()
403 snd_ak4531_free(ak4531); in snd_ak4531_mixer()
407 ak4531->write(ak4531, AK4531_RESET, 0x03); /* no RST, PD */ in snd_ak4531_mixer()
409 …ak4531->write(ak4531, AK4531_CLOCK, 0x00); /* CODEC ADC and CODEC DAC use {LR,B}CLK2 and run off L… in snd_ak4531_mixer()
413 …ak4531->write(ak4531, idx, ak4531->regs[idx] = snd_ak4531_initial_map[idx]); /* recording source i… in snd_ak4531_mixer()
416 if ((err = snd_ctl_add(card, snd_ctl_new1(&snd_ak4531_controls[idx], ak4531))) < 0) { in snd_ak4531_mixer()
417 snd_ak4531_free(ak4531); in snd_ak4531_mixer()
421 snd_ak4531_proc_init(card, ak4531); in snd_ak4531_mixer()
422 if ((err = snd_device_new(card, SNDRV_DEV_CODEC, ak4531, &ops)) < 0) { in snd_ak4531_mixer()
423 snd_ak4531_free(ak4531); in snd_ak4531_mixer()
428 snd_ak4531_dump(ak4531); in snd_ak4531_mixer()
431 *rak4531 = ak4531; in snd_ak4531_mixer()
439 void snd_ak4531_suspend(struct snd_ak4531 *ak4531) in snd_ak4531_suspend() argument
442 ak4531->write(ak4531, AK4531_LMASTER, 0x9f); in snd_ak4531_suspend()
443 ak4531->write(ak4531, AK4531_RMASTER, 0x9f); in snd_ak4531_suspend()
445 ak4531->write(ak4531, AK4531_RESET, 0x01); in snd_ak4531_suspend()
448 void snd_ak4531_resume(struct snd_ak4531 *ak4531) in snd_ak4531_resume() argument
453 ak4531->write(ak4531, AK4531_RESET, 0x03); in snd_ak4531_resume()
455 ak4531->write(ak4531, AK4531_CLOCK, 0x00); in snd_ak4531_resume()
460 ak4531->write(ak4531, idx, ak4531->regs[idx]); in snd_ak4531_resume()
472 struct snd_ak4531 *ak4531 = entry->private_data; in snd_ak4531_proc_read() local
477 ak4531->regs[AK4531_AD_IN] & 1 ? "external" : "mixer", in snd_ak4531_proc_read()
478 ak4531->regs[AK4531_MIC_GAIN] & 1 ? "+30dB" : "+0dB"); in snd_ak4531_proc_read()
482 snd_ak4531_proc_init(struct snd_card *card, struct snd_ak4531 *ak4531) in snd_ak4531_proc_init() argument
487 snd_info_set_text_ops(entry, ak4531, snd_ak4531_proc_read); in snd_ak4531_proc_init()