[PATCH 1/2] ASoC: wcd9335: fix order of Slimbus unprepare/disable

Pierre-Louis Bossart pierre-louis.bossart at linux.intel.com
Wed Sep 21 17:25:16 CEST 2022



On 9/21/22 17:19, Krzysztof Kozlowski wrote:
> On 21/09/2022 17:11, Pierre-Louis Bossart wrote:
>>>>> /**
>>>>>  * slim_stream_unprepare() - Un-prepare a SLIMbus Stream
>>>>>  *
>>>>>  * @stream: instance of slim stream runtime to unprepare
>>>>>  *
>>>>>  * This API will un allocate all the ports and channels associated with
>>>>>  * SLIMbus stream
>>>>
>>>> You mean this piece of doc? Indeed looks inaccurate. I'll update it.
>>>
>>> Wait, no, this is correct. Please point to what is wrong in kernel doc.
>>> I don't see it. :(
>>
>> the TRIGGER_STOP and TRIGGER_PAUSE_PUSH do the same thing. There is no
>> specific mapping of disable() to TRIGGER_STOP and unprepare() to
>> TRIGGER_PAUSE_PUSH as the documentation hints at.
> 
> Which TRIGGER_STOP and TRIGGER_PAUSE_PUSH? In one specific codec driver?
> If yes, I don't think Slimbus documentation should care how actual users
> implement it (e.g. coalesce states).

In both of the patches you just modified :-)

diff --git a/sound/soc/codecs/wcd9335.c b/sound/soc/codecs/wcd9335.c
index 06c6adbe5920..d2548fdf9ae5 100644
--- a/sound/soc/codecs/wcd9335.c
+++ b/sound/soc/codecs/wcd9335.c
@@ -1972,8 +1972,8 @@ static int wcd9335_trigger(struct
snd_pcm_substream *substream, int cmd,
 	case SNDRV_PCM_TRIGGER_STOP:
 	case SNDRV_PCM_TRIGGER_SUSPEND:
 	case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-		slim_stream_unprepare(dai_data->sruntime);
 		slim_stream_disable(dai_data->sruntime);
+		slim_stream_unprepare(dai_data->sruntime);
 		break;
 	default:

diff --git a/sound/soc/codecs/wcd934x.c b/sound/soc/codecs/wcd934x.c
index f56907d0942d..28175c746b9a 100644
--- a/sound/soc/codecs/wcd934x.c
+++ b/sound/soc/codecs/wcd934x.c
@@ -1913,8 +1913,8 @@ static int wcd934x_trigger(struct
snd_pcm_substream *substream, int cmd,
 	case SNDRV_PCM_TRIGGER_STOP:
 	case SNDRV_PCM_TRIGGER_SUSPEND:
 	case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-		slim_stream_unprepare(dai_data->sruntime);
 		slim_stream_disable(dai_data->sruntime);
+		slim_stream_unprepare(dai_data->sruntime);
 		break;
 	default:
 		break;

the bus provides helpers to be used in well-defined transitions. A codec
driver doing whatever it wants whenever it wants would create chaos for
the bus.


More information about the Alsa-devel mailing list