static int s3c_i2s_trigger(struct snd_pcm_substream *substream, int cmd, struct snd_soc_dai *dai) { int ret = 0; switch (cmd) { case SNDRV_PCM_TRIGGER_SUSPEND: case SNDRV_PCM_TRIGGER_RESUME: break; case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: if (lpam_i2s.slave) { ret = s3c_snd_lrsync(); if (ret) goto exit_err; } s3c_snd_txctrl(1); break; case SNDRV_PCM_TRIGGER_STOP: case SNDRV_PCM_TRIGGER_PAUSE_PUSH: s3c_snd_txctrl(0); break; default: ret = -EINVAL; break; } exit_err: return ret; }
static int s3c_i2s_trigger(struct snd_pcm_substream *substream, int cmd, struct snd_soc_dai *dai) { int ret = 0; debug_msg("%s, stream:%d \n", __FUNCTION__, substream->stream); switch (cmd) { case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_RESUME: case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: if (s3c_i2s.slave) { ret = s3c_snd_lrsync(); if (ret) goto exit_err; } debug_msg("Start\n"); if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) s3c_snd_rxctrl(1); else s3c_snd_txctrl(1); break; case SNDRV_PCM_TRIGGER_STOP: case SNDRV_PCM_TRIGGER_SUSPEND: case SNDRV_PCM_TRIGGER_PAUSE_PUSH: debug_msg("Stop\n"); if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) s3c_snd_rxctrl(0); else s3c_snd_txctrl(0); break; default: ret = -EINVAL; break; } exit_err: return ret; }