Lines Matching refs:solo_dev
48 struct solo_dev *solo_dev; member
53 static void solo_g723_config(struct solo_dev *solo_dev) in solo_g723_config() argument
57 clk_div = (solo_dev->clock_mhz * 1000000) in solo_g723_config()
60 solo_reg_write(solo_dev, SOLO_AUDIO_SAMPLE, in solo_g723_config()
64 solo_reg_write(solo_dev, SOLO_AUDIO_FDMA_INTR, in solo_g723_config()
67 | SOLO_AUDIO_FDMA_BASE(SOLO_G723_EXT_ADDR(solo_dev) >> 16)); in solo_g723_config()
69 solo_reg_write(solo_dev, SOLO_AUDIO_CONTROL, in solo_g723_config()
76 void solo_g723_isr(struct solo_dev *solo_dev) in solo_g723_isr() argument
79 &solo_dev->snd_pcm->streams[SNDRV_PCM_STREAM_CAPTURE]; in solo_g723_isr()
88 if (snd_pcm_substream_chip(ss) == solo_dev) in solo_g723_isr()
120 struct solo_dev *solo_dev = snd_pcm_substream_chip(ss); in snd_solo_pcm_open() local
127 solo_pcm->g723_buf = dma_alloc_coherent(&solo_dev->pdev->dev, in snd_solo_pcm_open()
135 solo_pcm->solo_dev = solo_dev; in snd_solo_pcm_open()
151 snd_pcm_substream_chip(ss) = solo_pcm->solo_dev; in snd_solo_pcm_close()
152 dma_free_coherent(&solo_pcm->solo_dev->pdev->dev, G723_PERIOD_BYTES, in snd_solo_pcm_close()
162 struct solo_dev *solo_dev = solo_pcm->solo_dev; in snd_solo_pcm_trigger() local
171 if (atomic_inc_return(&solo_dev->snd_users) == 1) in snd_solo_pcm_trigger()
172 solo_irq_on(solo_dev, SOLO_IRQ_G723); in snd_solo_pcm_trigger()
179 if (atomic_dec_return(&solo_dev->snd_users) == 0) in snd_solo_pcm_trigger()
180 solo_irq_off(solo_dev, SOLO_IRQ_G723); in snd_solo_pcm_trigger()
201 struct solo_dev *solo_dev = solo_pcm->solo_dev; in snd_solo_pcm_pointer() local
202 snd_pcm_uframes_t idx = solo_reg_read(solo_dev, SOLO_AUDIO_STA) & 0x1f; in snd_solo_pcm_pointer()
212 struct solo_dev *solo_dev = solo_pcm->solo_dev; in snd_solo_pcm_copy_user() local
218 err = solo_p2m_dma_t(solo_dev, 0, solo_pcm->g723_dma, in snd_solo_pcm_copy_user()
219 SOLO_G723_EXT_ADDR(solo_dev) + in snd_solo_pcm_copy_user()
239 struct solo_dev *solo_dev = solo_pcm->solo_dev; in snd_solo_pcm_copy_kernel() local
245 err = solo_p2m_dma_t(solo_dev, 0, solo_pcm->g723_dma, in snd_solo_pcm_copy_kernel()
246 SOLO_G723_EXT_ADDR(solo_dev) + in snd_solo_pcm_copy_kernel()
285 struct solo_dev *solo_dev = snd_kcontrol_chip(kcontrol); in snd_solo_capture_volume_get() local
288 value->value.integer.value[0] = tw28_get_audio_gain(solo_dev, ch); in snd_solo_capture_volume_get()
296 struct solo_dev *solo_dev = snd_kcontrol_chip(kcontrol); in snd_solo_capture_volume_put() local
300 old_val = tw28_get_audio_gain(solo_dev, ch); in snd_solo_capture_volume_put()
304 tw28_set_audio_gain(solo_dev, ch, value->value.integer.value[0]); in snd_solo_capture_volume_put()
317 static int solo_snd_pcm_init(struct solo_dev *solo_dev) in solo_snd_pcm_init() argument
319 struct snd_card *card = solo_dev->snd_card; in solo_snd_pcm_init()
325 ret = snd_pcm_new(card, card->driver, 0, 0, solo_dev->nr_chans, in solo_snd_pcm_init()
333 snd_pcm_chip(pcm) = solo_dev; in solo_snd_pcm_init()
347 solo_dev->snd_pcm = pcm; in solo_snd_pcm_init()
352 int solo_g723_init(struct solo_dev *solo_dev) in solo_g723_init() argument
360 atomic_set(&solo_dev->snd_users, 0); in solo_g723_init()
363 sprintf(name, "Softlogic%d", solo_dev->vfd->num); in solo_g723_init()
365 ret = snd_card_new(&solo_dev->pdev->dev, in solo_g723_init()
367 &solo_dev->snd_card); in solo_g723_init()
371 card = solo_dev->snd_card; in solo_g723_init()
376 pci_name(solo_dev->pdev), solo_dev->pdev->irq); in solo_g723_init()
378 ret = snd_device_new(card, SNDRV_DEV_LOWLEVEL, solo_dev, &ops); in solo_g723_init()
385 kctl.count = solo_dev->nr_chans; in solo_g723_init()
387 ret = snd_ctl_add(card, snd_ctl_new1(&kctl, solo_dev)); in solo_g723_init()
391 ret = solo_snd_pcm_init(solo_dev); in solo_g723_init()
399 solo_g723_config(solo_dev); in solo_g723_init()
401 dev_info(&solo_dev->pdev->dev, "Alsa sound card as %s\n", name); in solo_g723_init()
410 void solo_g723_exit(struct solo_dev *solo_dev) in solo_g723_exit() argument
412 if (!solo_dev->snd_card) in solo_g723_exit()
415 solo_reg_write(solo_dev, SOLO_AUDIO_CONTROL, 0); in solo_g723_exit()
416 solo_irq_off(solo_dev, SOLO_IRQ_G723); in solo_g723_exit()
418 snd_card_free(solo_dev->snd_card); in solo_g723_exit()
419 solo_dev->snd_card = NULL; in solo_g723_exit()