static void sst_period_elapsed(void *mad_substream) { struct snd_pcm_substream *substream = mad_substream; struct sst_runtime_stream *stream; int status; if (!substream || !substream->runtime) return; stream = substream->runtime->private_data; if (!stream) return; status = sst_get_stream_status(stream); if (status != SST_PLATFORM_RUNNING) return; snd_pcm_period_elapsed(substream); }
static snd_pcm_uframes_t sst_platform_pcm_pointer (struct snd_pcm_substream *substream) { struct sst_runtime_stream *stream; int ret_val, status; struct pcm_stream_info *str_info; stream = substream->runtime->private_data; status = sst_get_stream_status(stream); if (status == SST_PLATFORM_INIT) return 0; str_info = &stream->stream_info; ret_val = stream->ops->device_control( SST_SND_BUFFER_POINTER, str_info); if (ret_val) { pr_err("sst: error code = %d\n", ret_val); return ret_val; } return stream->stream_info.buffer_ptr; }
static snd_pcm_uframes_t sst_platform_pcm_pointer (struct snd_pcm_substream *substream) { struct sst_runtime_stream *stream; int ret_val, status; struct pcm_stream_info *str_info; struct snd_soc_pcm_runtime *rtd = substream->private_data; stream = substream->runtime->private_data; status = sst_get_stream_status(stream); if (status == SST_PLATFORM_INIT) return 0; str_info = &stream->stream_info; ret_val = stream->ops->stream_read_tstamp(sst->dev, str_info); if (ret_val) { dev_err(rtd->dev, "sst: error code = %d\n", ret_val); return ret_val; } substream->runtime->delay = str_info->pcm_delay; return str_info->buffer_ptr; }
static void sst_period_elapsed(void *mad_substream) { struct snd_pcm_substream *substream = mad_substream; struct sst_runtime_stream *stream; int status; if (!substream || !substream->runtime) { pr_debug("In %s : Null Substream pointer\n", __func__); return; } stream = substream->runtime->private_data; if (!stream) { pr_debug("In %s : Null Stream pointer\n", __func__); return; } status = sst_get_stream_status(stream); if (status != SST_PLATFORM_RUNNING) { pr_debug("In %s : Stream Status=%d\n", __func__, status); return; } snd_pcm_period_elapsed(substream); }