• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/sound/aoa/soundbus/i2sbus/

Lines Matching defs:i2sdev

18 static inline void get_pcm_info(struct i2sbus_dev *i2sdev, int in,
23 *pi = &i2sdev->in;
25 *other = &i2sdev->out;
28 *pi = &i2sdev->out;
30 *other = &i2sdev->in;
72 static int i2sbus_pcm_open(struct i2sbus_dev *i2sdev, int in)
86 mutex_lock(&i2sdev->lock);
88 get_pcm_info(i2sdev, in, &pi, &other);
91 sdev = &i2sdev->sound;
173 hw->formats &= (1ULL << i2sdev->format);
175 hw->rate_min = i2sdev->rate;
176 hw->rate_max = i2sdev->rate;
215 mutex_unlock(&i2sdev->lock);
221 static int i2sbus_pcm_close(struct i2sbus_dev *i2sdev, int in)
227 mutex_lock(&i2sdev->lock);
229 get_pcm_info(i2sdev, in, &pi, NULL);
231 list_for_each_entry(cii, &i2sdev->sound.codec_list, list) {
241 mutex_unlock(&i2sdev->lock);
245 static void i2sbus_wait_for_stop(struct i2sbus_dev *i2sdev,
252 spin_lock_irqsave(&i2sdev->low_lock, flags);
256 spin_unlock_irqrestore(&i2sdev->low_lock, flags);
258 spin_lock_irqsave(&i2sdev->low_lock, flags);
274 spin_unlock_irqrestore(&i2sdev->low_lock, flags);
278 void i2sbus_wait_for_stop_both(struct i2sbus_dev *i2sdev)
282 get_pcm_info(i2sdev, 0, &pi, NULL);
283 i2sbus_wait_for_stop(i2sdev, pi);
284 get_pcm_info(i2sdev, 1, &pi, NULL);
285 i2sbus_wait_for_stop(i2sdev, pi);
297 struct i2sbus_dev *i2sdev = snd_pcm_substream_chip(substream);
300 get_pcm_info(i2sdev, in, &pi, NULL);
302 i2sbus_wait_for_stop(i2sdev, pi);
317 static int i2sbus_pcm_prepare(struct i2sbus_dev *i2sdev, int in)
336 mutex_lock(&i2sdev->lock);
338 get_pcm_info(i2sdev, in, &pi, &other);
345 i2sbus_wait_for_stop(i2sdev, pi);
355 ((i2sdev->format != runtime->format)
356 || (i2sdev->rate != runtime->rate))) {
361 i2sdev->format = runtime->format;
362 i2sdev->rate = runtime->rate;
409 list_for_each_entry(cii, &i2sdev->sound.codec_list, list) {
431 list_for_each_entry(cii, &i2sdev->sound.codec_list, list) {
453 list_for_each_entry(cii, &i2sdev->sound.codec_list, list) {
474 if (in_le32(&i2sdev->intfregs->serial_format) == sfr
475 && in_le32(&i2sdev->intfregs->data_word_sizes) == dws)
480 list_for_each_entry(cii, &i2sdev->sound.codec_list, list)
484 i2sbus_control_enable(i2sdev->control, i2sdev);
485 i2sbus_control_cell(i2sdev->control, i2sdev, 1);
487 out_le32(&i2sdev->intfregs->intr_ctl, I2S_PENDING_CLOCKS_STOPPED);
489 i2sbus_control_clock(i2sdev->control, i2sdev, 0);
496 !(in_le32(&i2sdev->intfregs->intr_ctl) & I2S_PENDING_CLOCKS_STOPPED)) {
499 out_le32(&i2sdev->intfregs->intr_ctl, I2S_PENDING_CLOCKS_STOPPED);
502 out_le32(&i2sdev->intfregs->serial_format, sfr);
503 out_le32(&i2sdev->intfregs->data_word_sizes, dws);
505 i2sbus_control_enable(i2sdev->control, i2sdev);
506 i2sbus_control_cell(i2sdev->control, i2sdev, 1);
507 i2sbus_control_clock(i2sdev->control, i2sdev, 1);
510 list_for_each_entry(cii, &i2sdev->sound.codec_list, list)
515 mutex_unlock(&i2sdev->lock);
520 void i2sbus_pcm_prepare_both(struct i2sbus_dev *i2sdev)
522 i2sbus_pcm_prepare(i2sdev, 0);
523 i2sbus_pcm_prepare(i2sdev, 1);
527 static int i2sbus_pcm_trigger(struct i2sbus_dev *i2sdev, int in, int cmd)
534 spin_lock_irqsave(&i2sdev->low_lock, flags);
536 get_pcm_info(i2sdev, in, &pi, NULL);
545 list_for_each_entry(cii, &i2sdev->sound.codec_list, list)
574 pi->frame_count = in_le32(&i2sdev->intfregs->frame_count);
594 list_for_each_entry(cii, &i2sdev->sound.codec_list, list)
604 spin_unlock_irqrestore(&i2sdev->low_lock, flags);
608 static snd_pcm_uframes_t i2sbus_pcm_pointer(struct i2sbus_dev *i2sdev, int in)
613 get_pcm_info(i2sdev, in, &pi, NULL);
615 fc = in_le32(&i2sdev->intfregs->frame_count);
623 static inline void handle_interrupt(struct i2sbus_dev *i2sdev, int in)
632 spin_lock(&i2sdev->low_lock);
633 get_pcm_info(i2sdev, in, &pi, NULL);
659 fc = in_le32(&i2sdev->intfregs->frame_count);
689 spin_unlock(&i2sdev->low_lock);
695 spin_unlock(&i2sdev->low_lock);
712 struct i2sbus_dev *i2sdev = snd_pcm_substream_chip(substream);
714 if (!i2sdev)
716 i2sdev->out.substream = substream;
717 return i2sbus_pcm_open(i2sdev, 0);
722 struct i2sbus_dev *i2sdev = snd_pcm_substream_chip(substream);
725 if (!i2sdev)
727 if (i2sdev->out.substream != substream)
729 err = i2sbus_pcm_close(i2sdev, 0);
731 i2sdev->out.substream = NULL;
737 struct i2sbus_dev *i2sdev = snd_pcm_substream_chip(substream);
739 if (!i2sdev)
741 if (i2sdev->out.substream != substream)
743 return i2sbus_pcm_prepare(i2sdev, 0);
748 struct i2sbus_dev *i2sdev = snd_pcm_substream_chip(substream);
750 if (!i2sdev)
752 if (i2sdev->out.substream != substream)
754 return i2sbus_pcm_trigger(i2sdev, 0, cmd);
760 struct i2sbus_dev *i2sdev = snd_pcm_substream_chip(substream);
762 if (!i2sdev)
764 if (i2sdev->out.substream != substream)
766 return i2sbus_pcm_pointer(i2sdev, 0);
782 struct i2sbus_dev *i2sdev = snd_pcm_substream_chip(substream);
784 if (!i2sdev)
786 i2sdev->in.substream = substream;
787 return i2sbus_pcm_open(i2sdev, 1);
792 struct i2sbus_dev *i2sdev = snd_pcm_substream_chip(substream);
795 if (!i2sdev)
797 if (i2sdev->in.substream != substream)
799 err = i2sbus_pcm_close(i2sdev, 1);
801 i2sdev->in.substream = NULL;
807 struct i2sbus_dev *i2sdev = snd_pcm_substream_chip(substream);
809 if (!i2sdev)
811 if (i2sdev->in.substream != substream)
813 return i2sbus_pcm_prepare(i2sdev, 1);
818 struct i2sbus_dev *i2sdev = snd_pcm_substream_chip(substream);
820 if (!i2sdev)
822 if (i2sdev->in.substream != substream)
824 return i2sbus_pcm_trigger(i2sdev, 1, cmd);
830 struct i2sbus_dev *i2sdev = snd_pcm_substream_chip(substream);
832 if (!i2sdev)
834 if (i2sdev->in.substream != substream)
836 return i2sbus_pcm_pointer(i2sdev, 1);
852 struct i2sbus_dev *i2sdev = snd_pcm_chip(pcm);
855 i2sdev->sound.pcm = NULL;
856 i2sdev->out.created = 0;
857 i2sdev->in.created = 0;
858 list_for_each_entry_safe(p, tmp, &i2sdev->sound.codec_list, list) {
864 soundbus_dev_put(&i2sdev->sound);
874 struct i2sbus_dev *i2sdev = soundbus_dev_to_i2sbus_dev(dev);
966 if (!i2sdev->out.created && out) {
979 i2sdev->out.created = 1;
982 if (!i2sdev->in.created && in) {
994 i2sdev->in.created = 1;
1011 dev->pcm->private_data = i2sdev;
1017 snd_dma_pci_data(macio_get_pci_dev(i2sdev->macio)),