Lines Matching refs:ak4114
14 #include <sound/ak4114.h>
25 static void ak4114_init_regs(struct ak4114 *chip);
27 static void reg_write(struct ak4114 *ak4114, unsigned char reg, unsigned char val)
29 ak4114->write(ak4114->private_data, reg, val);
31 ak4114->regmap[reg] = val;
33 ak4114->txcsb[reg-AK4114_REG_TXCSB0] = val;
36 static inline unsigned char reg_read(struct ak4114 *ak4114, unsigned char reg)
38 return ak4114->read(ak4114->private_data, reg);
42 static void reg_dump(struct ak4114 *ak4114)
48 printk(KERN_DEBUG "reg[%02x] = %02x (%02x)\n", i, reg_read(ak4114, i), i < ARRAY_SIZE(ak4114->regmap) ? ak4114->regmap[i] : 0);
52 static void snd_ak4114_free(struct ak4114 *chip)
61 struct ak4114 *chip = device->device_data;
69 void *private_data, struct ak4114 **r_ak4114)
71 struct ak4114 *chip;
113 void snd_ak4114_reg_write(struct ak4114 *chip, unsigned char reg, unsigned char mask, unsigned char val)
123 static void ak4114_init_regs(struct ak4114 *chip)
141 void snd_ak4114_reinit(struct ak4114 *chip)
181 struct ak4114 *chip = snd_kcontrol_chip(kcontrol);
196 struct ak4114 *chip = snd_kcontrol_chip(kcontrol);
218 struct ak4114 *chip = snd_kcontrol_chip(kcontrol);
234 struct ak4114 *chip = snd_kcontrol_chip(kcontrol);
245 struct ak4114 *chip = snd_kcontrol_chip(kcontrol);
256 struct ak4114 *chip = snd_kcontrol_chip(kcontrol);
290 struct ak4114 *chip = snd_kcontrol_chip(kcontrol);
312 struct ak4114 *chip = snd_kcontrol_chip(kcontrol);
442 struct ak4114 *ak4114 = entry->private_data;
444 /* all ak4114 registers 0x00 - 0x1f */
446 val = reg_read(ak4114, reg);
451 static void snd_ak4114_proc_init(struct ak4114 *ak4114)
453 snd_card_ro_proc_new(ak4114->card, "ak4114", ak4114,
457 int snd_ak4114_build(struct ak4114 *ak4114,
467 ak4114->playback_substream = ply_substream;
468 ak4114->capture_substream = cap_substream;
470 kctl = snd_ctl_new1(&snd_ak4114_iec958_controls[idx], ak4114);
476 ak4114->kctls[idx] = NULL;
485 err = snd_ctl_add(ak4114->card, kctl);
488 ak4114->kctls[idx] = kctl;
490 snd_ak4114_proc_init(ak4114);
492 schedule_delayed_work(&ak4114->work, HZ / 10);
498 static void ak4114_notify(struct ak4114 *ak4114,
502 if (!ak4114->kctls[0])
506 snd_ctl_notify(ak4114->card, SNDRV_CTL_EVENT_MASK_VALUE,
507 &ak4114->kctls[0]->id);
509 snd_ctl_notify(ak4114->card, SNDRV_CTL_EVENT_MASK_VALUE,
510 &ak4114->kctls[1]->id);
512 snd_ctl_notify(ak4114->card, SNDRV_CTL_EVENT_MASK_VALUE,
513 &ak4114->kctls[2]->id);
515 snd_ctl_notify(ak4114->card, SNDRV_CTL_EVENT_MASK_VALUE,
516 &ak4114->kctls[3]->id);
520 snd_ctl_notify(ak4114->card, SNDRV_CTL_EVENT_MASK_VALUE,
521 &ak4114->kctls[4]->id);
524 snd_ctl_notify(ak4114->card, SNDRV_CTL_EVENT_MASK_VALUE,
525 &ak4114->kctls[9]->id);
527 snd_ctl_notify(ak4114->card, SNDRV_CTL_EVENT_MASK_VALUE,
528 &ak4114->kctls[10]->id);
531 snd_ctl_notify(ak4114->card, SNDRV_CTL_EVENT_MASK_VALUE,
532 &ak4114->kctls[11]->id);
534 snd_ctl_notify(ak4114->card, SNDRV_CTL_EVENT_MASK_VALUE,
535 &ak4114->kctls[12]->id);
537 snd_ctl_notify(ak4114->card, SNDRV_CTL_EVENT_MASK_VALUE,
538 &ak4114->kctls[13]->id);
540 snd_ctl_notify(ak4114->card, SNDRV_CTL_EVENT_MASK_VALUE,
541 &ak4114->kctls[14]->id);
544 int snd_ak4114_external_rate(struct ak4114 *ak4114)
548 rcs1 = reg_read(ak4114, AK4114_REG_RCS1);
553 int snd_ak4114_check_rate_and_errors(struct ak4114 *ak4114, unsigned int flags)
555 struct snd_pcm_runtime *runtime = ak4114->capture_substream ? ak4114->capture_substream->runtime : NULL;
561 rcs1 = reg_read(ak4114, AK4114_REG_RCS1);
564 rcs0 = reg_read(ak4114, AK4114_REG_RCS0);
565 spin_lock_irqsave(&ak4114->lock, _flags);
567 ak4114->errors[AK4114_PARITY_ERRORS]++;
569 ak4114->errors[AK4114_V_BIT_ERRORS]++;
571 ak4114->errors[AK4114_CCRC_ERRORS]++;
573 ak4114->errors[AK4114_QCRC_ERRORS]++;
574 c0 = (ak4114->rcs0 & (AK4114_QINT | AK4114_CINT | AK4114_PEM | AK4114_AUDION | AK4114_AUTO | AK4114_UNLCK)) ^
576 c1 = (ak4114->rcs1 & 0xf0) ^ (rcs1 & 0xf0);
577 ak4114->rcs0 = rcs0 & ~(AK4114_QINT | AK4114_CINT);
578 ak4114->rcs1 = rcs1;
579 spin_unlock_irqrestore(&ak4114->lock, _flags);
581 ak4114_notify(ak4114, rcs0, rcs1, c0, c1);
582 if (ak4114->change_callback && (c0 | c1) != 0)
583 ak4114->change_callback(ak4114, c0, c1);
589 snd_pcm_stream_lock_irqsave(ak4114->capture_substream, _flags);
590 if (snd_pcm_running(ak4114->capture_substream)) {
592 snd_pcm_stop(ak4114->capture_substream, SNDRV_PCM_STATE_DRAINING);
595 snd_pcm_stream_unlock_irqrestore(ak4114->capture_substream, _flags);
603 struct ak4114 *chip = container_of(work, struct ak4114, work.work);
612 void snd_ak4114_suspend(struct ak4114 *chip)
619 void snd_ak4114_resume(struct ak4114 *chip)