On Mon May 27, 2024 at 2:56 PM CEST, Sameer Pujar wrote:
From: Mohan Kumar mkumard@nvidia.com
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
include/sound/simple_card_utils.h | 2 ++ sound/soc/generic/simple-card-utils.c | 26 ++++++++++++++++++++------ 2 files changed, 22 insertions(+), 6 deletions(-)
diff --git a/include/sound/simple_card_utils.h b/include/sound/simple_card_utils.h index ad67957b7b48..2c2279d082ec 100644 --- a/include/sound/simple_card_utils.h +++ b/include/sound/simple_card_utils.h @@ -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, diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c index 81077d16d22f..f1f5a1c025fc 100644 --- a/sound/soc/generic/simple-card-utils.c +++ b/sound/soc/generic/simple-card-utils.c @@ -13,12 +13,11 @@ #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) {
Maybe nothing that we need to worry about, but this could be potentially a problem if the snd_pcm_format_t ever outgrows the non-negative number space. snd_pcm_format_t is defined to be an int as well, so any very large number would wrap into a negative value and then would be considered an error in this check.
Then again, if that ever were to happen, we'd likely get a compiler error for the snd_pcm_format_t overflowing, so we'd probably notice and rewrite at that point.
So I suppose:
Reviewed-by: Thierry Reding treding@nvidia.com