static int sst_platform_alloc_stream(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { struct sst_runtime_stream *stream = substream->runtime->private_data; struct snd_sst_stream_params param = {{{0,},},}; struct snd_sst_params str_params = {0}; struct snd_sst_alloc_params_ext alloc_params = {0}; int ret_val = 0; struct sst_data *ctx = snd_soc_dai_get_drvdata(dai); /* set codec params and inform SST driver the same */ sst_fill_pcm_params(substream, ¶m); sst_fill_alloc_params(substream, &alloc_params); substream->runtime->dma_area = substream->dma_buffer.area; str_params.sparams = param; str_params.aparams = alloc_params; str_params.codec = SST_CODEC_TYPE_PCM; /* fill the device type and stream id to pass to SST driver */ ret_val = sst_fill_stream_params(substream, ctx, &str_params, false); if (ret_val < 0) return ret_val; stream->stream_info.str_id = str_params.stream_id; ret_val = stream->ops->open(sst->dev, &str_params); if (ret_val <= 0) return ret_val; return ret_val; }
static int sst_platform_alloc_stream(struct snd_pcm_substream *substream, struct snd_soc_platform *platform) { struct sst_runtime_stream *stream = substream->runtime->private_data; struct snd_sst_stream_params param = {{{0,},},}; struct snd_sst_params str_params = {0}; struct snd_sst_alloc_params_ext alloc_params = {0}; int ret_val = 0; struct sst_data *ctx = snd_soc_platform_get_drvdata(platform); /* set codec params and inform SST driver the same */ sst_fill_pcm_params(substream, ¶m); sst_fill_alloc_params(substream, &alloc_params); substream->runtime->dma_area = substream->dma_buffer.area; str_params.sparams = param; str_params.aparams = alloc_params; str_params.codec = SST_CODEC_TYPE_PCM; ctx->ll_db.period_time = CALC_PERIODTIME(substream->runtime->period_size, substream->runtime->rate); /* fill the device type and stream id to pass to SST driver */ ret_val = sst_fill_stream_params(substream, ctx, &str_params, false); pr_debug("platform prepare: fill stream params ret_val = 0x%x\n", ret_val); if (ret_val < 0) return ret_val; stream->stream_info.str_id = str_params.stream_id; ret_val = stream->ops->open(&str_params); pr_debug("platform prepare: stream open ret_val = 0x%x\n", ret_val); if (ret_val <= 0) return ret_val; pr_debug("platform allocated strid: %d\n", stream->stream_info.str_id); return ret_val; }