From: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> We shouldn't use snd_soc_rtdcom_lookup() as much as possible. It works today, but, will not work in the future if we support multi CPU/Codec/Platform, because 1 rtd might have multiple same driver named component. intel baytrail driver is using it, but we can avoid it easily by having component pointer at sst_byt_pcm_data. This patch removes snd_soc_rtdcom_lookup() from this driver. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> --- sound/soc/intel/baytrail/sst-baytrail-pcm.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/sound/soc/intel/baytrail/sst-baytrail-pcm.c b/sound/soc/intel/baytrail/sst-baytrail-pcm.c index 53383055c8dc..dbd830375bc4 100644 --- a/sound/soc/intel/baytrail/sst-baytrail-pcm.c +++ b/sound/soc/intel/baytrail/sst-baytrail-pcm.c @@ -36,6 +36,7 @@ static const struct snd_pcm_hardware sst_byt_pcm_hardware = { /* private data for each PCM DSP stream */ struct sst_byt_pcm_data { struct sst_byt_stream *stream; + struct snd_soc_component *component; struct snd_pcm_substream *substream; struct mutex mutex; @@ -119,12 +120,11 @@ static int sst_byt_pcm_hw_params(struct snd_soc_component *component, return 0; } -static int sst_byt_pcm_restore_stream_context(struct snd_pcm_substream *substream) +static int sst_byt_pcm_restore_stream_context(struct sst_byt_pcm_data *pcm_data) { - struct snd_soc_pcm_runtime *rtd = substream->private_data; - struct snd_soc_component *component = snd_soc_rtdcom_lookup(rtd, DRV_NAME); + struct snd_soc_pcm_runtime *rtd = pcm_data->substream->private_data; + struct snd_soc_component *component = pcm_data->component; struct sst_byt_priv_data *pdata = snd_soc_component_get_drvdata(component); - struct sst_byt_pcm_data *pcm_data = &pdata->pcm[substream->stream]; struct sst_byt *byt = pdata->byt; int ret; @@ -149,7 +149,7 @@ static void sst_byt_pcm_work(struct work_struct *work) container_of(work, struct sst_byt_pcm_data, work); if (snd_pcm_running(pcm_data->substream)) - sst_byt_pcm_restore_stream_context(pcm_data->substream); + sst_byt_pcm_restore_stream_context(pcm_data); } static int sst_byt_pcm_trigger(struct snd_soc_component *component, @@ -198,7 +198,7 @@ static u32 byt_notify_pointer(struct sst_byt_stream *stream, void *data) struct snd_pcm_substream *substream = pcm_data->substream; struct snd_pcm_runtime *runtime = substream->runtime; struct snd_soc_pcm_runtime *rtd = substream->private_data; - struct snd_soc_component *component = snd_soc_rtdcom_lookup(rtd, DRV_NAME); + struct snd_soc_component *component = pcm_data->component; struct sst_byt_priv_data *pdata = snd_soc_component_get_drvdata(component); struct sst_byt *byt = pdata->byt; u32 pos, hw_pos; @@ -242,6 +242,7 @@ static int sst_byt_pcm_open(struct snd_soc_component *component, mutex_lock(&pcm_data->mutex); pcm_data->substream = substream; + pcm_data->component = component; snd_soc_set_runtime_hwparams(substream, &sst_byt_pcm_hardware); -- 2.17.1