]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: simple-card-utils: Split simple_fixup_sample_fmt func
authorMohan Kumar <mkumard@nvidia.com>
Mon, 27 May 2024 12:56:06 +0000 (12:56 +0000)
committerMark Brown <broonie@kernel.org>
Mon, 27 May 2024 12:59:49 +0000 (13:59 +0100)
Split the simple_fixup_sample_fmt() into two functions by adding
one more function named simple_util_get_sample_fmt() to return
the sample format value.

This is useful for drivers that wish to simply get the sample format
without setting the mask.

Signed-off-by: Mohan Kumar <mkumard@nvidia.com>
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Link: https://msgid.link/r/20240527125608.2461300-2-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/simple_card_utils.h
sound/soc/generic/simple-card-utils.c

index ad67957b7b48ccee86e89b80be4fa68e622182ea..2c2279d082ec4b1ebf97d61e4c2ecb3319133fd0 100644 (file)
@@ -174,6 +174,8 @@ void simple_util_parse_convert(struct device_node *np, char *prefix,
                               struct simple_util_data *data);
 bool simple_util_is_convert_required(const struct simple_util_data *data);
 
+int simple_util_get_sample_fmt(struct simple_util_data *data);
+
 int simple_util_parse_routing(struct snd_soc_card *card,
                                      char *prefix);
 int simple_util_parse_widgets(struct snd_soc_card *card,
index b4876b4f259ddda34d31459992d83a930b960168..852989611362d525e986c25de93762c72de11dcc 100644 (file)
 #include <sound/pcm_params.h>
 #include <sound/simple_card_utils.h>
 
-static void simple_fixup_sample_fmt(struct simple_util_data *data,
-                                        struct snd_pcm_hw_params *params)
+int simple_util_get_sample_fmt(struct simple_util_data *data)
 {
        int i;
-       struct snd_mask *mask = hw_param_mask(params,
-                                             SNDRV_PCM_HW_PARAM_FORMAT);
+       int val = -EINVAL;
+
        struct {
                char *fmt;
                u32 val;
@@ -33,11 +32,26 @@ static void simple_fixup_sample_fmt(struct simple_util_data *data,
        for (i = 0; i < ARRAY_SIZE(of_sample_fmt_table); i++) {
                if (!strcmp(data->convert_sample_format,
                            of_sample_fmt_table[i].fmt)) {
-                       snd_mask_none(mask);
-                       snd_mask_set(mask, of_sample_fmt_table[i].val);
+                       val = of_sample_fmt_table[i].val;
                        break;
                }
        }
+       return val;
+}
+EXPORT_SYMBOL_GPL(simple_util_get_sample_fmt);
+
+static void simple_fixup_sample_fmt(struct simple_util_data *data,
+                                   struct snd_pcm_hw_params *params)
+{
+       int val;
+       struct snd_mask *mask = hw_param_mask(params,
+                                             SNDRV_PCM_HW_PARAM_FORMAT);
+
+       val = simple_util_get_sample_fmt(data);
+       if (val >= 0) {
+               snd_mask_none(mask);
+               snd_mask_set(mask, val);
+       }
 }
 
 void simple_util_parse_convert(struct device_node *np,