]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: SOF: ipc4-topology: Print for format type in dbg_audio_format
authorPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Wed, 20 May 2026 15:02:04 +0000 (18:02 +0300)
committerMark Brown <broonie@kernel.org>
Thu, 21 May 2026 23:17:59 +0000 (00:17 +0100)
8 and 32 bit formats can have different types, print them in debug
information to have complete view of the supported formats.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://patch.msgid.link/20260520150204.18303-1-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/ipc4-topology.c

index e32cf4dee091d25cd9b7d2b14ef0ecdffe33bf55..d2a2617887941eb2a86005e5dad4a504f0822a97 100644 (file)
@@ -238,6 +238,23 @@ struct snd_sof_widget *sof_ipc4_find_swidget_by_ids(struct snd_sof_dev *sdev,
        return NULL;
 }
 
+static u32 sof_ipc4_fmt_cfg_to_type(u32 fmt_cfg)
+{
+       /* Fetch the sample type from the fmt for 8 and 32 bit formats */
+       u32 __bits = SOF_IPC4_AUDIO_FORMAT_CFG_V_BIT_DEPTH(fmt_cfg);
+
+       if (__bits == 8 || __bits == 32)
+               return SOF_IPC4_AUDIO_FORMAT_CFG_SAMPLE_TYPE(fmt_cfg);
+
+       /*
+        * Return LSB integer type for 16, 20 and 24 formats as the firmware is
+        * handling the LSB/MSB alignment internally, for the kernel this
+        * should not be taken into account, we treat them as LSB to match with
+        * the format we support on the PCM side.
+        */
+       return SOF_IPC4_TYPE_LSB_INTEGER;
+}
+
 static void sof_ipc4_dbg_audio_format(struct device *dev, struct sof_ipc4_pin_format *pin_fmt,
                                      int num_formats)
 {
@@ -246,8 +263,9 @@ static void sof_ipc4_dbg_audio_format(struct device *dev, struct sof_ipc4_pin_fo
        for (i = 0; i < num_formats; i++) {
                struct sof_ipc4_audio_format *fmt = &pin_fmt[i].audio_fmt;
                dev_dbg(dev,
-                       "Pin #%d: %uHz, %ubit, %luch (ch_map %#x ch_cfg %u interleaving_style %u fmt_cfg %#x) buffer size %d\n",
+                       "Pin #%d: %uHz, %ubit (type: %u), %luch (ch_map %#x ch_cfg %u interleaving_style %u fmt_cfg %#x) buffer size %d\n",
                        pin_fmt[i].pin_index, fmt->sampling_frequency, fmt->bit_depth,
+                       sof_ipc4_fmt_cfg_to_type(fmt->fmt_cfg),
                        SOF_IPC4_AUDIO_FORMAT_CFG_CHANNELS_COUNT(fmt->fmt_cfg),
                        fmt->ch_map, fmt->ch_cfg, fmt->interleaving_style, fmt->fmt_cfg,
                        pin_fmt[i].buffer_size);
@@ -1364,23 +1382,6 @@ static int sof_ipc4_widget_assign_instance_id(struct snd_sof_dev *sdev,
        return 0;
 }
 
-static u32 sof_ipc4_fmt_cfg_to_type(u32 fmt_cfg)
-{
-       /* Fetch  the sample type from the fmt for 8 and 32 bit formats */
-       u32 __bits = SOF_IPC4_AUDIO_FORMAT_CFG_V_BIT_DEPTH(fmt_cfg);
-
-       if (__bits == 8 || __bits == 32)
-               return SOF_IPC4_AUDIO_FORMAT_CFG_SAMPLE_TYPE(fmt_cfg);
-
-       /*
-        * Return LSB integer type for 20 and 24 formats as the firmware is
-        * handling the LSB/MSB alignment internally, for the kernel this
-        * should not be taken into account, we treat them as LSB to match with
-        * the format we support on the PCM side.
-        */
-       return SOF_IPC4_TYPE_LSB_INTEGER;
-}
-
 /* update hw_params based on the audio stream format */
 static int sof_ipc4_update_hw_params(struct snd_sof_dev *sdev, struct snd_pcm_hw_params *params,
                                     struct sof_ipc4_audio_format *fmt, u32 param_to_update)