/* * PCM operators */ static int snd_ps3_pcm_open(struct snd_pcm_substream *substream) { struct snd_pcm_runtime *runtime = substream->runtime; struct snd_ps3_card_info *card = snd_pcm_substream_chip(substream); int pcm_index; pcm_index = substream->pcm->device; /* to retrieve substream/runtime in interrupt handler */ card->substream = substream; runtime->hw = snd_ps3_pcm_hw; card->start_delay = snd_ps3_start_delay; /* mute off */ snd_ps3_mute(0); /* this function sleep */ snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_BUFFER_BYTES, PS3_AUDIO_FIFO_STAGE_SIZE * 4 * 2); return 0; };
static int snd_ps3_pcm_open(struct snd_pcm_substream *substream) { struct snd_pcm_runtime *runtime = substream->runtime; struct snd_ps3_card_info *card = snd_pcm_substream_chip(substream); int pcm_index; pcm_index = substream->pcm->device; card->substream = substream; runtime->hw = snd_ps3_pcm_hw; card->start_delay = snd_ps3_start_delay; snd_ps3_mute(0); snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_BUFFER_BYTES, PS3_AUDIO_FIFO_STAGE_SIZE * 4 * 2); return 0; };
static int snd_ps3_pcm_close(struct snd_pcm_substream *substream) { /* mute on */ snd_ps3_mute(1); return 0; };