• Home
  • Raw
  • Download

Lines Matching refs:card

107 static int snd_ps3_verify_dma_stop(struct snd_ps3_card_info *card,  in snd_ps3_verify_dma_stop()  argument
149 static void snd_ps3_wait_for_dma_stop(struct snd_ps3_card_info *card) in snd_ps3_wait_for_dma_stop() argument
161 stop_forced = snd_ps3_verify_dma_stop(card, 700, 1); in snd_ps3_wait_for_dma_stop()
178 static void snd_ps3_kick_dma(struct snd_ps3_card_info *card) in snd_ps3_kick_dma() argument
189 static dma_addr_t v_to_bus(struct snd_ps3_card_info *card, void *paddr, int ch) in v_to_bus() argument
191 return card->dma_start_bus_addr[ch] + in v_to_bus()
192 (paddr - card->dma_start_vaddr[ch]); in v_to_bus()
200 static void snd_ps3_bump_buffer(struct snd_ps3_card_info *card, in snd_ps3_bump_buffer() argument
205 card->dma_last_transfer_vaddr[ch] = in snd_ps3_bump_buffer()
206 card->dma_next_transfer_vaddr[ch]; in snd_ps3_bump_buffer()
207 card->dma_next_transfer_vaddr[ch] += byte_count; in snd_ps3_bump_buffer()
208 if ((card->dma_start_vaddr[ch] + (card->dma_buffer_size / 2)) <= in snd_ps3_bump_buffer()
209 card->dma_next_transfer_vaddr[ch]) { in snd_ps3_bump_buffer()
210 card->dma_next_transfer_vaddr[ch] = card->dma_start_vaddr[ch]; in snd_ps3_bump_buffer()
216 static int snd_ps3_program_dma(struct snd_ps3_card_info *card, in snd_ps3_program_dma() argument
243 snd_ps3_verify_dma_stop(card, 700, 0); in snd_ps3_program_dma()
245 spin_lock_irqsave(&card->dma_lock, irqsave); in snd_ps3_program_dma()
250 dma_addr = card->null_buffer_start_dma_addr; in snd_ps3_program_dma()
253 v_to_bus(card, in snd_ps3_program_dma()
254 card->dma_next_transfer_vaddr[ch], in snd_ps3_program_dma()
275 snd_ps3_bump_buffer(card, ch, in snd_ps3_program_dma()
292 spin_unlock_irqrestore(&card->dma_lock, irqsave); in snd_ps3_program_dma()
305 struct snd_ps3_card_info *card = dev_id; in snd_ps3_interrupt() local
307 if (!card->running) { in snd_ps3_interrupt()
324 if (card->silent) { in snd_ps3_interrupt()
326 snd_ps3_program_dma(card, in snd_ps3_interrupt()
330 snd_ps3_kick_dma(card); in snd_ps3_interrupt()
331 card->silent--; in snd_ps3_interrupt()
333 snd_ps3_program_dma(card, in snd_ps3_interrupt()
337 snd_ps3_kick_dma(card); in snd_ps3_interrupt()
338 snd_pcm_period_elapsed(card->substream); in snd_ps3_interrupt()
351 snd_ps3_program_dma(card, in snd_ps3_interrupt()
353 snd_ps3_kick_dma(card); in snd_ps3_interrupt()
354 snd_ps3_program_dma(card, in snd_ps3_interrupt()
356 snd_ps3_kick_dma(card); in snd_ps3_interrupt()
376 static int snd_ps3_change_avsetting(struct snd_ps3_card_info *card) in snd_ps3_change_avsetting() argument
381 ret = ps3av_set_audio_mode(card->avs.avs_audio_ch, in snd_ps3_change_avsetting()
382 card->avs.avs_audio_rate, in snd_ps3_change_avsetting()
383 card->avs.avs_audio_width, in snd_ps3_change_avsetting()
384 card->avs.avs_audio_format, in snd_ps3_change_avsetting()
385 card->avs.avs_audio_source); in snd_ps3_change_avsetting()
440 struct snd_ps3_card_info *card = snd_pcm_substream_chip(substream); in snd_ps3_set_avsetting() local
444 avs = card->avs; in snd_ps3_set_avsetting()
451 card->avs.avs_audio_rate, card->avs.avs_audio_width); in snd_ps3_set_avsetting()
489 if (memcmp(&card->avs, &avs, sizeof(avs))) { in snd_ps3_set_avsetting()
491 card->avs.avs_audio_rate, card->avs.avs_audio_width); in snd_ps3_set_avsetting()
493 card->avs = avs; in snd_ps3_set_avsetting()
494 snd_ps3_change_avsetting(card); in snd_ps3_set_avsetting()
514 struct snd_ps3_card_info *card = snd_pcm_substream_chip(substream); in snd_ps3_pcm_open() local
517 card->substream = substream; in snd_ps3_pcm_open()
521 card->start_delay = snd_ps3_start_delay; in snd_ps3_pcm_open()
563 struct snd_ps3_card_info *card = snd_pcm_substream_chip(substream); in snd_ps3_pcm_prepare() local
575 card->silent = snd_ps3_delay_to_bytes(substream, in snd_ps3_pcm_prepare()
576 card->start_delay) / in snd_ps3_pcm_prepare()
581 spin_lock_irqsave(&card->dma_lock, irqsave); in snd_ps3_pcm_prepare()
583 card->dma_buffer_size = runtime->dma_bytes; in snd_ps3_pcm_prepare()
585 card->dma_last_transfer_vaddr[SND_PS3_CH_L] = in snd_ps3_pcm_prepare()
586 card->dma_next_transfer_vaddr[SND_PS3_CH_L] = in snd_ps3_pcm_prepare()
587 card->dma_start_vaddr[SND_PS3_CH_L] = in snd_ps3_pcm_prepare()
589 card->dma_start_bus_addr[SND_PS3_CH_L] = runtime->dma_addr; in snd_ps3_pcm_prepare()
591 card->dma_last_transfer_vaddr[SND_PS3_CH_R] = in snd_ps3_pcm_prepare()
592 card->dma_next_transfer_vaddr[SND_PS3_CH_R] = in snd_ps3_pcm_prepare()
593 card->dma_start_vaddr[SND_PS3_CH_R] = in snd_ps3_pcm_prepare()
595 card->dma_start_bus_addr[SND_PS3_CH_R] = in snd_ps3_pcm_prepare()
599 card->dma_start_vaddr[SND_PS3_CH_L], in snd_ps3_pcm_prepare()
600 card->dma_start_bus_addr[SND_PS3_CH_L]); in snd_ps3_pcm_prepare()
603 spin_unlock_irqrestore(&card->dma_lock, irqsave); in snd_ps3_pcm_prepare()
614 struct snd_ps3_card_info *card = snd_pcm_substream_chip(substream); in snd_ps3_pcm_trigger() local
621 spin_lock(&card->dma_lock); in snd_ps3_pcm_trigger()
623 card->running = 1; in snd_ps3_pcm_trigger()
625 spin_unlock(&card->dma_lock); in snd_ps3_pcm_trigger()
627 snd_ps3_program_dma(card, in snd_ps3_pcm_trigger()
629 snd_ps3_kick_dma(card); in snd_ps3_pcm_trigger()
634 snd_ps3_program_dma(card, SND_PS3_DMA_FILLTYPE_SILENT_RUNNING); in snd_ps3_pcm_trigger()
635 snd_ps3_kick_dma(card); in snd_ps3_pcm_trigger()
639 spin_lock(&card->dma_lock); in snd_ps3_pcm_trigger()
641 card->running = 0; in snd_ps3_pcm_trigger()
643 spin_unlock(&card->dma_lock); in snd_ps3_pcm_trigger()
644 snd_ps3_wait_for_dma_stop(card); in snd_ps3_pcm_trigger()
660 struct snd_ps3_card_info *card = snd_pcm_substream_chip(substream); in snd_ps3_pcm_pointer() local
664 spin_lock(&card->dma_lock); in snd_ps3_pcm_pointer()
666 bytes = (size_t)(card->dma_last_transfer_vaddr[SND_PS3_CH_L] - in snd_ps3_pcm_pointer()
667 card->dma_start_vaddr[SND_PS3_CH_L]); in snd_ps3_pcm_pointer()
669 spin_unlock(&card->dma_lock); in snd_ps3_pcm_pointer()
847 static void snd_ps3_audio_fixup(struct snd_ps3_card_info *card) in snd_ps3_audio_fixup() argument
871 static int snd_ps3_init_avsetting(struct snd_ps3_card_info *card) in snd_ps3_init_avsetting() argument
875 card->avs.avs_audio_ch = PS3AV_CMD_AUDIO_NUM_OF_CH_2; in snd_ps3_init_avsetting()
876 card->avs.avs_audio_rate = PS3AV_CMD_AUDIO_FS_48K; in snd_ps3_init_avsetting()
877 card->avs.avs_audio_width = PS3AV_CMD_AUDIO_WORD_BITS_16; in snd_ps3_init_avsetting()
878 card->avs.avs_audio_format = PS3AV_CMD_AUDIO_FORMAT_PCM; in snd_ps3_init_avsetting()
879 card->avs.avs_audio_source = PS3AV_CMD_AUDIO_SOURCE_SERIAL; in snd_ps3_init_avsetting()
880 memcpy(card->avs.avs_cs_info, ps3av_mode_cs_info, 8); in snd_ps3_init_avsetting()
882 ret = snd_ps3_change_avsetting(card); in snd_ps3_init_avsetting()
884 snd_ps3_audio_fixup(card); in snd_ps3_init_avsetting()
887 snd_ps3_program_dma(card, SND_PS3_DMA_FILLTYPE_SILENT_FIRSTFILL); in snd_ps3_init_avsetting()
888 snd_ps3_kick_dma(card); in snd_ps3_init_avsetting()
950 0, &the_card.card); in snd_ps3_driver_probe()
954 strcpy(the_card.card->driver, "PS3"); in snd_ps3_driver_probe()
955 strcpy(the_card.card->shortname, "PS3"); in snd_ps3_driver_probe()
956 strcpy(the_card.card->longname, "PS3 sound"); in snd_ps3_driver_probe()
960 ret = snd_ctl_add(the_card.card, in snd_ps3_driver_probe()
968 ret = snd_pcm_new(the_card.card, in snd_ps3_driver_probe()
1014 ret = snd_card_register(the_card.card); in snd_ps3_driver_probe()
1019 the_card.card->longname, the_card.start_delay); in snd_ps3_driver_probe()
1028 snd_card_free(the_card.card); in snd_ps3_driver_probe()
1056 ret = snd_card_free(the_card.card); in snd_ps3_driver_remove()