soundwire: intel: remove stream handling from .prepare and .hw_free
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Thu, 3 Sep 2020 20:47:39 +0000 (04:47 +0800)
committerVinod Koul <vkoul@kernel.org>
Fri, 4 Sep 2020 09:21:12 +0000 (14:51 +0530)
Now that the stream is handled at the dai-link level (in the machine
driver), we can remove the stream handling at the dai level. We still
need these callbacks to perform dai-level resource handling
(i.e. addition/removal of a master).

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20200903204739.31206-5-yung-chuan.liao@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/soundwire/intel.c

index 05de8c44449f5836ec5bdba50faecb2075630a09..e047910d73f5e03d3f06c83a32b5368e678e954d 100644 (file)
@@ -951,7 +951,7 @@ static int intel_prepare(struct snd_pcm_substream *substream,
        struct sdw_intel *sdw = cdns_to_intel(cdns);
        struct sdw_cdns_dma_data *dma;
        int ch, dir;
-       int ret;
+       int ret = 0;
 
        dma = snd_soc_dai_get_dma_data(dai, substream);
        if (!dma) {
@@ -987,13 +987,8 @@ static int intel_prepare(struct snd_pcm_substream *substream,
                                          dma->hw_params,
                                          sdw->instance,
                                          dma->pdi->intel_alh_id);
-               if (ret)
-                       goto err;
        }
 
-       ret = sdw_prepare_stream(dma->stream);
-
-err:
        return ret;
 }
 
@@ -1009,12 +1004,12 @@ intel_hw_free(struct snd_pcm_substream *substream, struct snd_soc_dai *dai)
        if (!dma)
                return -EIO;
 
-       ret = sdw_deprepare_stream(dma->stream);
-       if (ret) {
-               dev_err(dai->dev, "sdw_deprepare_stream: failed %d", ret);
-               return ret;
-       }
-
+       /*
+        * The sdw stream state will transition to RELEASED when stream->
+        * master_list is empty. So the stream state will transition to
+        * DEPREPARED for the first cpu-dai and to RELEASED for the last
+        * cpu-dai.
+        */
        ret = sdw_stream_remove_master(&cdns->bus, dma->stream);
        if (ret < 0) {
                dev_err(dai->dev, "remove master from stream %s failed: %d\n",