int sst_fill_stream_params(void *substream, const struct sst_data *ctx, struct snd_sst_params *str_params, bool is_compress) { int map_size; int index; struct sst_dev_stream_map *map; struct snd_pcm_substream *pstream = NULL; struct snd_compr_stream *cstream = NULL; map = ctx->pdata->pdev_strm_map; map_size = ctx->pdata->strm_map_size; if (is_compress == true) cstream = (struct snd_compr_stream *)substream; else pstream = (struct snd_pcm_substream *)substream; str_params->stream_type = SST_STREAM_TYPE_MUSIC; /* For pcm streams */ if (pstream) { index = sst_get_stream_mapping(pstream->pcm->device, pstream->number, pstream->stream, map, map_size, ctx->pipe_id, &ctx->ll_db); if (index <= 0) return -EINVAL; str_params->stream_id = index; str_params->device_type = map[index].device_id; str_params->task = map[index].task_id; if (str_params->device_type == SST_PROBE_IN) str_params->stream_type = SST_STREAM_TYPE_PROBE; pr_debug("str_id = %d, device_type = 0x%x, task = %d", str_params->stream_id, str_params->device_type, str_params->task); str_params->ops = (u8)pstream->stream; } if (cstream) { /* FIXME: Add support for subdevice number in * snd_compr_stream */ index = sst_get_stream_mapping(cstream->device->device, 0, cstream->direction, map, map_size, ctx->pipe_id, &ctx->ll_db); if (index <= 0) return -EINVAL; str_params->stream_id = index; str_params->device_type = map[index].device_id; str_params->task = map[index].task_id; pr_debug("compress str_id = %d, device_type = 0x%x, task = %d", str_params->stream_id, str_params->device_type, str_params->task); str_params->ops = (u8)cstream->direction; } return 0; }
int sst_fill_stream_params(void *substream, const struct sst_data *ctx, struct snd_sst_params *str_params, bool is_compress) { int map_size; int index; struct sst_dev_stream_map *map; struct snd_pcm_substream *pstream = NULL; struct snd_compr_stream *cstream = NULL; map = ctx->pdata->pdev_strm_map; map_size = ctx->pdata->strm_map_size; if (is_compress == true) cstream = (struct snd_compr_stream *)substream; else pstream = (struct snd_pcm_substream *)substream; str_params->stream_type = SST_STREAM_TYPE_MUSIC; /* For pcm streams */ if (pstream) { index = sst_get_stream_mapping(pstream->pcm->device, pstream->number, pstream->stream, map, map_size); if (index <= 0) return -EINVAL; str_params->stream_id = index; str_params->device_type = map[index].device_id; str_params->task = map[index].task_id; str_params->ops = (u8)pstream->stream; } if (cstream) { index = sst_get_stream_mapping(cstream->device->device, 0, cstream->direction, map, map_size); if (index <= 0) return -EINVAL; str_params->stream_id = index; str_params->device_type = map[index].device_id; str_params->task = map[index].task_id; str_params->ops = (u8)cstream->direction; } return 0; }