[PATCH v2] ASoC: SOF: sof-audio: pcm_id is __le32

Ben Dooks posted 1 patch 4 weeks, 1 day ago
There is a newer version of this series
sound/soc/sof/pcm.c       |  4 ++--
sound/soc/sof/sof-audio.h | 11 +++++++----
2 files changed, 9 insertions(+), 6 deletions(-)
[PATCH v2] ASoC: SOF: sof-audio: pcm_id is __le32
Posted by Ben Dooks 4 weeks, 1 day ago
The pcm_id value is __le32 so convert it before passing to the dev_dbg
function to be printed. Picked up by sparse prototype for variadic and printf
function checking.

Fixes a large number of sparse warnings, such as:

sound/soc/sof/pcm.c:84:25: warning: incorrect type in argument 4 (different base types)
sound/soc/sof/pcm.c:84:25:    expected unsigned int
sound/soc/sof/pcm.c:84:25:    got restricted __le32 [usertype] pcm_id

Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
---
v2: fix missing __le32 conversions
---
 sound/soc/sof/pcm.c       |  4 ++--
 sound/soc/sof/sof-audio.h | 11 +++++++----
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/sound/soc/sof/pcm.c b/sound/soc/sof/pcm.c
index 5b598d0940eb..16c194b4851b 100644
--- a/sound/soc/sof/pcm.c
+++ b/sound/soc/sof/pcm.c
@@ -361,7 +361,7 @@ static int sof_pcm_prepare(struct snd_soc_component *component,
 	ret = sof_widget_list_setup(sdev, spcm, params, platform_params, dir);
 	if (ret < 0) {
 		dev_err(sdev->dev, "failed widget list set up for pcm %d dir %d\n",
-			spcm->pcm.pcm_id, dir);
+			le32_to_cpu(spcm->pcm.pcm_id), dir);
 		spcm->stream[dir].list = NULL;
 		snd_soc_dapm_dai_free_widgets(&list);
 		return ret;
@@ -652,7 +652,7 @@ static int sof_pcm_new(struct snd_soc_component *component,
 	}
 
 	dev_dbg(spcm->scomp->dev, "pcm%u (%s): Entry: pcm_construct\n",
-		spcm->pcm.pcm_id, spcm->pcm.pcm_name);
+		le32_to_cpu(spcm->pcm.pcm_id), spcm->pcm.pcm_name);
 
 	/* do we need to pre-allocate playback audio buffer pages */
 	if (!spcm->pcm.playback)
diff --git a/sound/soc/sof/sof-audio.h b/sound/soc/sof/sof-audio.h
index 36082e764bf9..cf6499464a64 100644
--- a/sound/soc/sof/sof-audio.h
+++ b/sound/soc/sof/sof-audio.h
@@ -641,17 +641,20 @@ void snd_sof_pcm_init_elapsed_work(struct work_struct *work);
  */
 #define spcm_dbg(__spcm, __dir, __fmt, ...)					\
 	dev_dbg((__spcm)->scomp->dev, "pcm%u (%s), dir %d: " __fmt,		\
-		(__spcm)->pcm.pcm_id, (__spcm)->pcm.pcm_name, __dir,		\
+		le32_to_cpu((__spcm)->pcm.pcm_id),				\
+		(__spcm)->pcm.pcm_name, __dir,					\
 		##__VA_ARGS__)
 
 #define spcm_dbg_ratelimited(__spcm, __dir, __fmt, ...)				\
 	dev_dbg_ratelimited((__spcm)->scomp->dev, "pcm%u (%s), dir %d: " __fmt,	\
-		(__spcm)->pcm.pcm_id, (__spcm)->pcm.pcm_name, __dir,		\
-		##__VA_ARGS__)
+			    le32_to_cpu((__spcm)->pcm.pcm_id),			\
+			    (__spcm)->pcm.pcm_name, __dir,			\
+			    ##__VA_ARGS__)
 
 #define spcm_err(__spcm, __dir, __fmt, ...)					\
 	dev_err((__spcm)->scomp->dev, "%s: pcm%u (%s), dir %d: " __fmt,		\
-		__func__, (__spcm)->pcm.pcm_id, (__spcm)->pcm.pcm_name, __dir,	\
+		__func__, le32_to_cpu((__spcm)->pcm.pcm_id)			\
+		, (__spcm)->pcm.pcm_name, __dir,			\
 		##__VA_ARGS__)
 
 #if IS_ENABLED(CONFIG_SND_SOC_SOF_COMPRESS)
-- 
2.37.2.352.g3c44437643
Re: [PATCH v2] ASoC: SOF: sof-audio: pcm_id is __le32
Posted by Péter Ujfalusi 4 weeks, 1 day ago

On 10/03/2026 13:40, Ben Dooks wrote:
> The pcm_id value is __le32 so convert it before passing to the dev_dbg
> function to be printed. Picked up by sparse prototype for variadic and printf
> function checking.
> 
> Fixes a large number of sparse warnings, such as:
> 
> sound/soc/sof/pcm.c:84:25: warning: incorrect type in argument 4 (different base types)
> sound/soc/sof/pcm.c:84:25:    expected unsigned int
> sound/soc/sof/pcm.c:84:25:    got restricted __le32 [usertype] pcm_id

I do wonder how this could worked over the years :o
Can you update the patch to fix the other instances as well?
sound/soc/sof/compress.c
sound/soc/sof/ipc4-topology.c

Thank you, with that please add my
Acked-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>

> 
> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
> ---
> v2: fix missing __le32 conversions
> ---
>  sound/soc/sof/pcm.c       |  4 ++--
>  sound/soc/sof/sof-audio.h | 11 +++++++----
>  2 files changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/sound/soc/sof/pcm.c b/sound/soc/sof/pcm.c
> index 5b598d0940eb..16c194b4851b 100644
> --- a/sound/soc/sof/pcm.c
> +++ b/sound/soc/sof/pcm.c
> @@ -361,7 +361,7 @@ static int sof_pcm_prepare(struct snd_soc_component *component,
>  	ret = sof_widget_list_setup(sdev, spcm, params, platform_params, dir);
>  	if (ret < 0) {
>  		dev_err(sdev->dev, "failed widget list set up for pcm %d dir %d\n",
> -			spcm->pcm.pcm_id, dir);
> +			le32_to_cpu(spcm->pcm.pcm_id), dir);
>  		spcm->stream[dir].list = NULL;
>  		snd_soc_dapm_dai_free_widgets(&list);
>  		return ret;
> @@ -652,7 +652,7 @@ static int sof_pcm_new(struct snd_soc_component *component,
>  	}
>  
>  	dev_dbg(spcm->scomp->dev, "pcm%u (%s): Entry: pcm_construct\n",
> -		spcm->pcm.pcm_id, spcm->pcm.pcm_name);
> +		le32_to_cpu(spcm->pcm.pcm_id), spcm->pcm.pcm_name);
>  
>  	/* do we need to pre-allocate playback audio buffer pages */
>  	if (!spcm->pcm.playback)
> diff --git a/sound/soc/sof/sof-audio.h b/sound/soc/sof/sof-audio.h
> index 36082e764bf9..cf6499464a64 100644
> --- a/sound/soc/sof/sof-audio.h
> +++ b/sound/soc/sof/sof-audio.h
> @@ -641,17 +641,20 @@ void snd_sof_pcm_init_elapsed_work(struct work_struct *work);
>   */
>  #define spcm_dbg(__spcm, __dir, __fmt, ...)					\
>  	dev_dbg((__spcm)->scomp->dev, "pcm%u (%s), dir %d: " __fmt,		\
> -		(__spcm)->pcm.pcm_id, (__spcm)->pcm.pcm_name, __dir,		\
> +		le32_to_cpu((__spcm)->pcm.pcm_id),				\
> +		(__spcm)->pcm.pcm_name, __dir,					\
>  		##__VA_ARGS__)
>  
>  #define spcm_dbg_ratelimited(__spcm, __dir, __fmt, ...)				\
>  	dev_dbg_ratelimited((__spcm)->scomp->dev, "pcm%u (%s), dir %d: " __fmt,	\
> -		(__spcm)->pcm.pcm_id, (__spcm)->pcm.pcm_name, __dir,		\
> -		##__VA_ARGS__)
> +			    le32_to_cpu((__spcm)->pcm.pcm_id),			\
> +			    (__spcm)->pcm.pcm_name, __dir,			\
> +			    ##__VA_ARGS__)
>  
>  #define spcm_err(__spcm, __dir, __fmt, ...)					\
>  	dev_err((__spcm)->scomp->dev, "%s: pcm%u (%s), dir %d: " __fmt,		\
> -		__func__, (__spcm)->pcm.pcm_id, (__spcm)->pcm.pcm_name, __dir,	\
> +		__func__, le32_to_cpu((__spcm)->pcm.pcm_id)			\
> +		, (__spcm)->pcm.pcm_name, __dir,			\
>  		##__VA_ARGS__)
>  
>  #if IS_ENABLED(CONFIG_SND_SOC_SOF_COMPRESS)

-- 
Péter