Message ID | 87shw3xui4.wl%kuninori.morimoto.gx@renesas.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Geert Uytterhoeven |
Headers | show |
On 06/24/2016 03:16 AM, Kuninori Morimoto wrote: > +int asoc_simple_card_parse_dailink_name(struct device *dev, > + struct snd_soc_dai_link *dai_link) > +{ > + char *name = NULL; > + int ret = -ENOMEM; > + > + if (dai_link->dynamic && dai_link->cpu_dai_name) { > + name = devm_kzalloc(dev, > + strlen(dai_link->cpu_dai_name) + 4, > + GFP_KERNEL); > + if (name) > + sprintf(name, "fe.%s", dai_link->cpu_dai_name); > + > + } else if (dai_link->no_pcm && dai_link->codec_dai_name) { > + name = devm_kzalloc(dev, > + strlen(dai_link->codec_dai_name) + 4, > + GFP_KERNEL); > + if (name) > + sprintf(name, "be.%s", dai_link->codec_dai_name); > + } else if (dai_link->cpu_dai_name && dai_link->codec_dai_name) { > + name = devm_kzalloc(dev, > + strlen(dai_link->cpu_dai_name) + > + strlen(dai_link->codec_dai_name) + 2, > + GFP_KERNEL); > + if (name) { > + sprintf(name, "%s-%s", > + dai_link->cpu_dai_name, > + dai_link->codec_dai_name); > + } > + } This could be simplified by using devm_kasprintf().
Hi Sylwester > > +int asoc_simple_card_parse_dailink_name(struct device *dev, > > + struct snd_soc_dai_link *dai_link) > > +{ > > + char *name = NULL; > > + int ret = -ENOMEM; > > + > > + if (dai_link->dynamic && dai_link->cpu_dai_name) { > > + name = devm_kzalloc(dev, > > + strlen(dai_link->cpu_dai_name) + 4, > > + GFP_KERNEL); > > + if (name) > > + sprintf(name, "fe.%s", dai_link->cpu_dai_name); > > + > > + } else if (dai_link->no_pcm && dai_link->codec_dai_name) { > > + name = devm_kzalloc(dev, > > + strlen(dai_link->codec_dai_name) + 4, > > + GFP_KERNEL); > > + if (name) > > + sprintf(name, "be.%s", dai_link->codec_dai_name); > > + } else if (dai_link->cpu_dai_name && dai_link->codec_dai_name) { > > + name = devm_kzalloc(dev, > > + strlen(dai_link->cpu_dai_name) + > > + strlen(dai_link->codec_dai_name) + 2, > > + GFP_KERNEL); > > + if (name) { > > + sprintf(name, "%s-%s", > > + dai_link->cpu_dai_name, > > + dai_link->codec_dai_name); > > + } > > + } > > This could be simplified by using devm_kasprintf(). Thanks. I didn't know this function. I will replace above, but it will be incremental patch (?) (Based on Mark's patch control)
diff --git a/include/sound/simple_card_utils.h b/include/sound/simple_card_utils.h index 6bb2c5f..41e567b 100644 --- a/include/sound/simple_card_utils.h +++ b/include/sound/simple_card_utils.h @@ -29,5 +29,7 @@ int asoc_simple_card_parse_daifmt(struct device *dev, unsigned int *retfmt); int asoc_simple_card_parse_tdm(struct device_node *port_np, struct asoc_simple_dai *simple_dai); +int asoc_simple_card_parse_dailink_name(struct device *dev, + struct snd_soc_dai_link *dai_link); #endif /* __SIMPLE_CARD_CORE_H */ diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c index 86fb2cf..9b49b5a 100644 --- a/sound/soc/generic/simple-card-utils.c +++ b/sound/soc/generic/simple-card-utils.c @@ -63,3 +63,45 @@ int asoc_simple_card_parse_tdm(struct device_node *port_np, &simple_dai->slot_width); } EXPORT_SYMBOL_GPL(asoc_simple_card_parse_tdm); + +int asoc_simple_card_parse_dailink_name(struct device *dev, + struct snd_soc_dai_link *dai_link) +{ + char *name = NULL; + int ret = -ENOMEM; + + if (dai_link->dynamic && dai_link->cpu_dai_name) { + name = devm_kzalloc(dev, + strlen(dai_link->cpu_dai_name) + 4, + GFP_KERNEL); + if (name) + sprintf(name, "fe.%s", dai_link->cpu_dai_name); + + } else if (dai_link->no_pcm && dai_link->codec_dai_name) { + name = devm_kzalloc(dev, + strlen(dai_link->codec_dai_name) + 4, + GFP_KERNEL); + if (name) + sprintf(name, "be.%s", dai_link->codec_dai_name); + } else if (dai_link->cpu_dai_name && dai_link->codec_dai_name) { + name = devm_kzalloc(dev, + strlen(dai_link->cpu_dai_name) + + strlen(dai_link->codec_dai_name) + 2, + GFP_KERNEL); + if (name) { + sprintf(name, "%s-%s", + dai_link->cpu_dai_name, + dai_link->codec_dai_name); + } + } + + if (name) { + ret = 0; + + dai_link->name = + dai_link->stream_name = name; + } + + return ret; +} +EXPORT_SYMBOL_GPL(asoc_simple_card_parse_dailink_name);